이전글에 이어서 UI 측면에서 하나씩 뜯어보자.
1.Event 목록 – EventTree
다음은 이벤트 리스트를 보여주는 트리 목록을 구성하는 방법이다. 선택된 인스턴스에 대하여 다음 작업이 필요하다.
-
선택된 인스턴스가 발생시킬 수 있는 모든 이벤트 리스트( config XML의 이벤트 노드)를 표시한다
-
선택된 인스턴스의 MXML 구문상 발견되는 이벤트 속성에 대하여 리스트를 얻는다.
-
2번에서 얻은 이벤트 리스트 각각에 대하여 ";" 구분자로 파싱하여 API 리스트(API 노드)를 하위 노드에 표시한다.
-
이벤트 노드 클릭시 API 설정화면을 비활성화 시킨다.
-
API 노드 클릭시 설정값이 적용된 API 설정화면을 보여준다.
-
API 노드는 드래그 이동 가능하도록 제작한다.
-
API 노드는 Child 노드를 가질 수 없다.
<컴포넌트 정의 XML 데이터 포맷>
다음은 외부에 정의된 config XML 데이터의 양식이며, 보통 value 노드는 비어있다.
< EventTree 에서 데이터를 사용하기 위해 변형>
EventTree에서는 다음과 같은 형식으로 데이터를 변형하여 사용한다. value 노드를 제외한 child 노드가 모두 attribute으로 설정 한다.
<API 리스트(method)의 작성>
MXML로부터 이벤트 내용을 파싱하여 하위노드에 표시한다. MXML 구문의 attribute을 조사하여 api 리스트를 작성한다. MXML 구문에서 이벤트 Attribute에는 다음과 같은 형태로 세팅된다. 메서드와 메서드는 세미콜론으로 분리된다.
<mx:Sample change="
callAPIValidator(event, 인스턴스, “API method name”, [parameter]…);
callAPIValidator(event, 인스턴스, “API method name”, [parameter]…);
...
" />
위 MXML에서 각각의 callAPIValidator 메서드로부터 인스턴스, API method name을 추출해 전체 API가 정의된 XML로부터 method 노드를 찾는다. (인스턴스 --> component 노드, method --> API method 노드).
method 노드의 내용을 가져와 callAPIValidator(event, 인스턴스, "API method name", [parameter]…); 의 내용을 적용 시킨 후 event 노드의 child로 차례로 add 한다. (삽입 순서는 실행 순서를 나타내므로 주의 한다.)
다음은 완성된 EventEditor 및 EventTree에서 사용할 데이터 구조를 보여준다. <method> 노드는 이미 정의된 API 데이터 (config XML)에서 가져온 노드에 MXML에 정의된 이벤트 내용을 텍스트 노드 값으로 설정한 형태이다.
<반환되는 데이터 형식>
EventEditor에서 새로운 API에 대하여 편집을 하게되면 여기에 새로운 <method> 노드가 위의 형태로 추가/삭제 된다. 편집된 내용에 대한 출력 방식은 처음 입력받은 데이터 형식에서 value 노드의 값을 지정해주는 형태이다. 위의 events 노드는 EventEditor 에서 다음과 같은 형태로 파싱하여 사용될 것이다.
applicationComplete Function callAPIValidator(event, 인스턴스, “API”, [parameter]…); callAPIValidator(event, 인스턴스, “API”, [parameter]…); ...
다시 MXML 구문에서 이벤트 Attribute에는 다음과 같이 적용된다.
callAPIValidator(event, 인스턴스, “API”, [parameter]…);
callAPIValidator(event, 인스턴스, “API”, [parameter]…);
...
" />
2.기능 버튼
-
Up, Down 버튼
이벤트 노드 위치는 항상 알파벳 순으로 정렬하므로 이벤트 노드 선택시에는 비활성화 시킨다. 이 버튼은 API 노드의 상하 위치를 변경하기 위한 버튼이다. API 노드의 위치 변경은 곧 API 의 실행 순서의 변경을 의미한다. -
(+) 버튼
API의 추가 버튼. 이벤트 노드가 선택 상태이든 API 노드가 선택 상태이든 상관 없이 이벤트 노드의 Child에 API 노드를 추가 한다. -
(-) 버튼
API의 삭제 버튼. API 노드가 선택상태인 경우에만 해당 API 노드를 삭제 한다.
3.API Owner 설정
스테이지에 등록된 객체의 리스트를 객체 이름(id) 또는 고유 아이디(uid)를 통해 리스트화 하여 선택할 수 있도록 표시한다.
4.API 리스트
선택된 API Owner 에 대하여 지원 가능한 API 리스트를 Config XML 문서의 API 노드로부터 가져와 표시한다.
API 노드에는 Method 뿐만 아니라 Parameter 정보도 함께 정의되어 있으므로 Parameter를 설정할 수 있는 편집창도 제공해 준다.
5.생성된 코드 보기
편집 내용에 따라 설정된 내용을 적용하여 이벤트 노드의 전체 설정된 코드를 보여준다. 위 코드에서 변경되는 부분은 다음과 같다.
API ß (method:String)
parameter ßAPI 메서드에 전달할 Arguments 배열
확인 버튼을 누르면 편집 상태를 종료하면서 생성된 코드를 적용한다.
'Blog > WYSIWYG Tool 개발' 카테고리의 다른 글
Queue에 의한 함수 실행 관리 (10) | 2010.07.06 |
---|---|
MVC 패턴을 적용한 WYSIWYG 방식의 편집 Tool 개발[5/5] (0) | 2009.12.22 |
코드 생성기(2) - EventEditor 제작 (0) | 2009.12.03 |
코드 생성기(1) - 이벤트 코드 생성 방법 (2) | 2009.12.03 |
MVC 패턴을 적용한 WYSIWYG 방식의 편집 Tool 개발[4/5] (0) | 2009.09.19 |