Flex에서 List에 editable="true"으로 주면 label을 편집할 수 있다. 그리고 itemEditEnd의 이벤트 핸들러를 지정하면 item이 변경되고 나서 event를 받을 수 있다.
그런데 이 이벤트에서 변경된 아이템의 label을 얻기위해 list.selectedItem으로 title을 얻어봤으나 얻어지지 않았다. 그래서 저장한 XML 일부가 반영되지 않았다.
급해서 저장시점에 list를 돌며 저장하는 방법으로 바꿨음.
Flex에서 List에 editable="true"으로 주면 label을 편집할 수 있다. 그리고 itemEditEnd의 이벤트 핸들러를 지정하면 item이 변경되고 나서 event를 받을 수 있다.
그런데 이 이벤트에서 변경된 아이템의 label을 얻기위해 list.selectedItem으로 title을 얻어봤으나 얻어지지 않았다. 그래서 저장한 XML 일부가 반영되지 않았다.
급해서 저장시점에 list를 돌며 저장하는 방법으로 바꿨음.
Flex로 Design tool 만들때 컴포넌트들을 리사이징하고 위치를 조정하기 위한 핸들러의 구현이 필요할 수 있다. MFC에서는 CRectTracker라는 것을 지원 했는데 Flex에서는 그런 것을 직접 지원하지는 않는다.
아래 주소의 라이브러리를 사용하면 이를 쉽게 구현할 수 있다.
http://code.google.com/p/flex-object-handles/wiki/ObjectHandlesUsage
dataProvider를 갖고있는 컴포넌트들
ButtonBar
ColorPicker
ComboBox
DataGrid
DateField
HorizontalList
LinkBar
List
Menu
MenuBar
PopUpMenuButton
Repeater
TabBar
TileList
ToggleButtonBar
Tree
출처 : http://livedocs.adobe.com/flex/3/html/help.html?content=about_dataproviders_2.html
weborb\Weborb\WEB-INF\flex 위치에 remoting-config.xml, services-config.xml를 잘 변경해줘야 쓸 수 있다. services-config.xml에 my-air-amf 라는 게 있어서 봤더니 주소가 틀려서 접속이 안되더라.
remoting-config.xml 에 보면 아래와 같은 xml이 있다.
<destination id="GenericAIRDestination">
<channels>
<channel ref="my-air-amf"/>
</channels>
<properties>
<source>*</source>
</properties>
</destination>
이 remoting-config.xml과 services-config.xml이 뭐 어떻게 꿍짝꿍짝 하나본데 급하게 하느라 WebORB에서 문서를 몇 번 찾아보다가 안보여서 그냥 "되는데 뭐~" 하면서 관뒀다.
destination의 id값은 RemoteObject의 destination 프로퍼티 값 혹은 RemoteObject 생성할 때 생성자의 첫 번째 인자로 지정해주는 값이다. source가 만약 com.example.app.FileSystemBrowser로 지정되어 있으면 weborb\Services\com\example\app에 있는 FileSystemBrowser.php 클래스를 사용하게 된다. 기타 다른 클래스가 또 있다면 아래와 같이 지정해주면 된다.
flash.net.registerClassAlias("com.example.app.FolderItem", FolderNode);
flash.net.registerClassAlias("com.example.app.FileItem", FileNode);
flash.net.registerClassAlias("com.example.app.FileSystemItem", FileSystemNode);
이렇게 해두면 flex에서 원격(WebORB for PHP로 구성된 웹서버)에 있는 SomeMethod(fileNode); 메소드를 호출하면 FileNode 타입을 서버에서 받아 그대로 사용할 수 있다. 어쨌든 비동기라 짜기 귀찮긴 하지만 XML 파싱하고 전송하고 받고 그런거 안하는 게 어디야.
<mx:DropShadowFilter id="filter" distance="2" angle="45" alpha="1" color="#000000" />
<mx:Label text="Hello Blogger!" filters="{[filter]}" color="#FFFFFF" />
label 텍스트에 그림자를 주고 싶으면 위처럼 한다.
ProgressBar의 label을 label="{sStatus} %1 of %2 bytes, %3%%" 이런식으로 지정하는 코드를 WebORB FileUpload 예제에서 봤다.
컴포넌트에 프로퍼티를 만들고 프로퍼티를 mxml로 접근 해보고 싶었다. 런타임 에러가 났는데 이상하게 에러가 나면 리부팅 하기 전까진 해당 프로젝트는 빌드 후 실행이 안되는 거다. 결국 setter는 있는데 getter가 없던 것, 접근 지정자가 protected로 설정되어 있던 것, 데이터 타입이 String인데 Object로 받던 것을 고쳤더니 해결됐다. 프로퍼티를 protected로 하고 mxml에서 접근하려할 때 컴파일 에러가 났으면 좋았을텐데. 아무튼 나의 내공부족.
테스트
1. mxml에서 접근 할 프로퍼티를 public에서 protected로 고쳤더니 문제가 생긴다.
2. getter가 없어서 생긴 문제는 아니다.