GEF 6

Graphical Editing Framework으로 Eclipse 기반 애플리케이션 구현하기

출처 :http://www.ibm.com/developerworks/kr/library/os-gef/index.html Graphical Editing Framework으로 Eclipse 기반 애플리케이션 구현하기GEF 시작하기난이도 : 초급Randy Hudson, Software developer, IBM 2003 년 7 월 29 일Graphical Editing Framework (GEF)을 사용하여 Eclipse 기반 애플리케이션을 구현하는 초기 단계를 설명한다. GEF는 스테이트 다이어그램, 액티비티 다이어그램, 클래스 다이어그램, AWT용 GUI 빌더, Swing과 SWT, 프로세스 플로우 에디터 등 Eclipse용 다양한 애플리케이션을 구현하는데 사용되었다. Eclipse와 GEF 모두 오픈 ..

Eclipse 2007.04.01

GEF - 원그리기

생성한 에디터에 원을 그려보도록 하자. GEF는 MVC패턴으로 구현을 해야한다. 즉 원이라는 모델이 있고, 이를 그리기 위한 Draw2d의 Figure가 있다. 마지막으로 이를 연결하는 Editpart 가 있어야 한다. GEF의 Help에 있는 GEF 구조에 관한 이미지이다. 사용자로부터 특정 Request 즉 새로 그리거나, 움직이거나등의 Action을 하게 되면 Controller와 Model, View가 유기적으로 돌아가게 된다. 이때 주된 역할은 Controller가 하게 된다. 간단하게 원을 그려보도록 하자. 1.Shape 원에 해당하는 모델을 생성한다. 아직 좌표나 색과 같은 정보는 필요하지 않기 때문에 빈클래스를 생성하였다. Shape는 앞으로 진행하면서 많은 변경사항이 생기게 됨으로 주의깊..

Eclipse 2007.03.31

GEF - Diagram 생성

원을 줄이기 위해서는 에디터의 그려지는 영역을 담당한 Diagram이 필요하다. Diagram은 도화지의 역할을 한다고 생각하면 된다.그리고 원은 그 위에 특정 크기만큼 그리면 되는 것이다. Diagram위에 그려지는 원은 Diagram에서 알고 있어야 한다. 그래야 새로고침이 되거나, 자식이 이동을 했을때, 다시 그려질 수 있다. 이 목록은 Diagram에서 List로 관리를 한다. 1.ShapesDiagram Diagram의 가장 큰 역할은 그려지는 개체를 관리하는 것이다. List의 순서는 그려질때 중요하게 사용된다. 즉 원과 원이 겹칠때 어느 원이 아래로 오게 할지는 List의 순서에 따라 정해진다. public class ShapesDiagram { private List shapes = new..

Eclipse 2007.03.31

GEF - Editor with Palette

팔레트를 가지고 있는 에디터를 생성해보도록 하자. 에디터는 두 가지 설정을 해야 하는데, 첫 번째는 Palette의 정보를 컴퓨터에 저장을 해야한다. 저장을 하는 이유는 에디터의 설정을 변경후 다음에 다시 에디터가 열릴게 되면 저장했던 상태를 다시 보여주기 때문이다. 저장되어야 하는 내용은 palette의 위치와 너비, 상태값 등 몇 가지가 된다. 그리고 두번째로는 EditDomain을 설정해야 한다. EditDomain의 역할은 Command 와 Palette등을 관리하는 역할을 한다. Command을 관리한다는 의미는 사용자의 이벤트에 따라 실행해야 하는 Command을 스택으로 관리를 하고, 여기서 Undo / Redo등을 활성화 혹은 비활성화 등을 하게 된다. GEF에서 제공하는 에디터는 다음 2..

Eclipse 2007.03.31

GEF - XYLayout

XYLayout을 잠시 살펴보도록 하자. 시작위치와 width, height 이렇게 해서 4개의 좌표가 필요하다. 이를 모델에서 저장하기 위해서는 시작위치를 가진 point 개체와 width, height를 저장하기 위한 Dimension 개체를 두개를 사용해도 되지만, 좀더 편한 방법은 4개의 좌표를 저장하기 좋은 개체인 Rectangle을 사용하면 된다. Rectangle은 필요한 4가지 값을 가질수 있다. 좌표를 가지는 개체는 부모가 아닌 자식모델이 되어야 한다. 따라서 shape에 Rectangle을 관리하도록 변경을 한다. Draw2D에서 Figure는 서브 Figure를 가지고 있는 형태로 그려지게 된다. 즉 위의 그림처럼 A는 B, C를 가지고 있고, B는 D, E를 가지고 있을 수 있다. ..

Eclipse 2007.03.31