이 튜토리얼에서 만들 모델은 BodyElement 와 SimpleElement 를 만들어볼 예정입니다. BodyElement 는 최상위 모델이고 SimpleElement 들을 자식요소로 갖게됩니다.
일단 가장 기본이 되는 모델을 생성합니다.
model 패키지를 추가하여 ElementBase 클래스를 생성합니다. 좌표와 위치를 저장하는 layout 과 자식요소, 부모요소를 저장하는 변수를 갖게됩니다.
이번에는 BodyElement 클래스를 생성합니다. 아직까지는 구현할게 없네요~
자식요소로 사용할 SimpleElement 클래스를 생성합니다.
Figure 의 생성
model 이 데이터를 저장하는 부문이라면 figure 는 화면에 그려지는 역할을 한다고 보면 될 것 같습니다.
마찬가지로 model 별로 figure 클래스를 생성합니다.
BodyElement 를 처리할 BodyElementFigure 를 생성합니다. 모델도 데이터가 별로 없으므로 간단하게 선 굵기를 2로 하고 선 색을 회색으로 설정했습니다.
이번에는 SimpleElement 를 처리할 SimpleElementFigure 를 생성합니다. 폰트를 설정해보려고 했는데 폰트 크기외에는 설정이 잘 안되었습니다 (-_ㅜ) setOpaque() 메소드는 투명하게 하는 것으로 생각됩니다만.. 정확하게는... SWT 개발하듯이 draw2d 를 이용하게 화면을 구성하면 그대로 표시가 되네요~~~
EditPart 의 생성
figure 를 생성하고 model 의 편집을 지원하는 EditPart 를 추가할 차례입니다.
model 과 마찬가지로 editpart 들이 같은 기능들을 처리하므로 base 클래스를 만듭니다.
ElementPartBase class : 처리하는 일은 자식요소들을 반환하는 정도?? (20080719 추가) ㅎㅎ;; createEditPolicies() 메소드를 빼먹었었네요;;;
BodyElementPart class : BodyElement 를 관리하는 EditPart 입니다. BodyElementFigure 를 생성하는 기능 외에는...
SimpleElementPart class : SimpleElementFigure 를 생성하고 SimpleElement 를 통해서 그려주는 로직을 처리합니다.
이러한 EditPart 를 생성해주는 Factory 클래스를 생성합니다. (Factory 클래스를 등록하면 자동으로 연결이 되는 구조입니다.) ElementEditPartFactory class : EditPartFactory 를 생성합니다. createEditPart() 메소드 에서 모델에 따른 EditPart 를 생성합니다.
GraphicalEditor 의 수정
EditPartFactory 를 등록하고 기본적으로 화면에 그려질 EditPart 를 설정합니다.
이래해서 다시 테스트로 띄워보면~
참고
테스트로 띄우는 application 의 크기가 너무 작아 고민이라면 ApplicationWorkbenchWindowAdvisor 클래스를 수정하면 됩니다~