본문 바로가기

JAVA/JAVA(MEC)

gef 개요

GEF(Graphical Editing Framework) 개요

정의

- 시각 기반의 고품질 에디터와 뷰를 쉽게 만들기 위한 Eclipse framework를 말함

목적

- 모델의 시각적 표현

- 마우스와 키보드를 통한 모든 이벤트 핸들링 가능

- 이클립스 워크벤치 UI(Toolbar, Outline, Properties view)와 통합성 제공

사례

- Gui builder, class diagram editor 등

-http://download.eclipse.org/tools/gef/updates/milestones/

 

 

GEF의 3요소

- Draw2d(org.eclipse.draw2d)

- swt canvs 위에 시각적인 요소를 표현하기 위한 경량 레이아웃 및 rendering toolkit

- GEF(MVC)(org.eclipse.gef)

- 상호작용하는 MVC(Model-view-controller) framework, swt 기반의 tree와 draw2d 기반의 시각 기반 editor 구현을 장려

- Zest(org.eclipse.zest)

- Draw2d 기반의 시각화 toolkit, 주로 graph를 표현하는 view를 만들 때 사용

 

 

Draw2d의 기능

- 효율적인 Rendering 지원

- 각종 figure 및 layout 지원

- cursor 및 tooltip 지원

- anchor, routing, 징식

- 복합, 투명 레이어 지원

- 유연한 좌표 시스템 지원

- 썸네일 및 스크롤 지원

- 인쇄 기능 지원

 

Draw2d Figure 계층 구조

- Draw2d의 최소 구성 재료

- Draw2d gui는 figure를 트리형태로 구축

- figure.add(IFugure) 호출하여 자식 추가

- Figure.remove(IFigure) 호출하여 자식 제거

 

Figure그리는 법

- paintFigure(Graphics)를 호출하여 자기 자신을 그린다

- 자식들을 재귀적으로 반복하며 paint(Graphics)를 호출하여 모든 자식들을 순서대로 그림

- 보더를 그린다.

- Figure의 트리 구조는 paint(Graphics)로 전체 구조가 렌더링 된다.

- 자식은 부모 위에 렌더링 된다.

 

Figure 바운즈

- 각각의 figure들은 바운즈를 가지고 있음.

- 바운즈는 draw2d의 클리핑 시스템이 그 외부에 그려지는 것을 막아주는 역할을 함.

- 그릴 수 있는 공간의 제약을 줌

*layout manager: figure의 자식들의 바운즈를 지정할 수 있음.

GEF의 기능

- 선택, 생성, 연결 등의 도구 제공

- Pallete 제공

- 각종 편집을 위한 Handle 제공

- tree 또는 시각 기반의 viewer 제공

- business mode 및 view 여녈 controller model 제공

- view와 model의 상호작용이 가능하도록하는 polish 구조

- feedback 및 선택을 표시하는 다양한 구현 가능

- Controller로 보내지는 다양한 종류의 요청 및 action 가능

- command stack을 통한 undo/redo 지원

 

Zest 기능

- graph viewer

- layout algorithm 지원

 

View 구축 방법

- View 생성에 참여하는 요소

- EditPartFactory

- EditParts

- GraphicalViewer

- Draw2d Figures

 

 

EditPartViewr, RootEditPart

- EditPartViewer

- SWT Control 위에 model에 대한 view를 설치

- viewer가 draw2D Figure로 구성된 경우 GraphicalViewer를 상속

-viewer에 Control, EditPartFactory, RootEditPart들을 설정, 

-RootEditPart

- tree구조로 조직되는 EditPart들의 구조 root

 

 

'JAVA > JAVA(MEC)' 카테고리의 다른 글

openshift template 제거(administer로 로그인)  (0) 2020.08.14
openshift origin  (0) 2020.08.14
gef의 구조 및 설계방법  (0) 2020.08.14
mvc 개요  (0) 2020.08.14
gef tutorial file  (0) 2020.08.14