그래픽 편집 프레임워크

Graphical Editing Framework

GEF(Graphical Editing Framework)는 그래픽 애플리케이션과 관련된 프레임워크 및 최종 사용자 구성 요소를 제공하는 Eclipse 프로젝트입니다.

역사

GEF는 처음에 IBM의 etools(com.ibm.etools.gef)의 일부로 개발되었으며 2002년 버전 2.0.0에서 Eclipse에 제공되었으며, 이 때 두 가지 구성 요소인 Draw2d, SWT(Standard Widget Toolkit) 기반 2D 시각화 구성 요소 및 GEF(MVCeller-컨트롤러 관련 모델)로 구성되어 있습니다.Eclipse RCP(Rich Client Platform) 애플리케이션의 일부입니다.Eclipse의 첫 번째 릴리스는 2003년 3월에 GEF 2.1.0이었습니다.다음 메이저 버전인 GEF 3.0.0은 2004년 6월에 출시되었으며 규칙 및 가이드 지원 등 많은 새로운 기능을 제공합니다.제스트는 2007년 버전 1.0.0에서 GEF 3.4.0 릴리즈의 일부로 세 번째 프로젝트 컴포넌트로 추가되었습니다.GEF 3.0.0이 출시된 2004년 이후 프레임워크의 Application Programming Interface(API; 응용 프로그램프로그래밍 인터페이스)에는 호환되는 변경만 적용되었습니다.

2010년 이후 프로젝트 팀에 의해 GEF 3.x 컴포넌트의 유지 보수와 병행하여 프레임워크의 새로운 주요 개정판이 개발되었습니다.이는 훨씬 더 모듈식이고 SWT 대신 JavaFX를 기본 렌더링 프레임워크로 사용하며 Eclipse RCP 애플리케이션과는 독립적으로 사용할 수 있습니다.일반적으로 GEF4라고 불리는 이 컴포넌트는 GEF 3.10.0(화성) 릴리스의 일부로 2015년 6월에 버전 0.1.0(아직 잠정 API 포함)으로 처음 출시되었습니다.GEF4 컴포넌트는 2016년 6월에 GEF 4.0.0(Neon) 릴리스의 일부로 버전 1.0.0에서 발행될 예정입니다.

GEF 3.x

GEF 3.x는 Eclipse RCP(Rich Client Platform) 애플리케이션의 일부로 그래픽 편집기와 뷰를 실현하는 프레임워크 기술을 제공합니다.내부적으로는 다음의 3개의 컴포넌트로 분해됩니다.

  • Draw2d – Standard Widget Toolkit(SWT) 기반의 2D 시각화 컴포넌트
  • GEF(MVC) - Eclipse RCP(Rich Client Product) 응용 프로그램의 일부로 그래픽 편집기를 실현하는 데 사용할 수 있는 모델 뷰 컨트롤러 구성 요소
  • Zest - Eclipse RCP 응용 프로그램의 일부로 그래프와 같은 데이터 구조를 시각화하기 위한 뷰를 실현하는 데 사용할 수 있는 그래프 기반 시각화 도구 키트

그래픽 애플리케이션은 GEF 3.x 컴포넌트 위에 직접 빌드할 수 있지만, Draw2d 및 GEF(MVC)는 GMF(Graphical Modeling Framework)에서도 사용되며, GMF(Graphical Modeling Framework)와 결합하여 데이터 모델과 그래픽 에디터의 코드를 만듭니다.

아키텍처

GEF(MVC)로 작성된 에디터는 다음 컴포넌트로 구성됩니다.

  • 도구 팔레트를 포함한 다이어그램 편집기
  • 기본 데이터 모델 요소를 그래픽으로 나타내는 그림
  • 그림 및 해당 모델 요소와 일치하는 부품 편집
  • 사용자 입력을 위한 개체 요청
  • 요청을 평가하고 적절한 명령 개체를 만드는 EditPolicy 개체
  • 모델을 편집하고 실행 취소 재설정을 제공하는 명령 개체

설계 패턴 사용

GEF는 디자인 패턴을 많이 활용합니다.이러한 패턴은 GEF에서 필수이며 개발자는 이를 이해해야 합니다.

  • Model-View-Controller는 특정 방식으로 서로 통신하는 별도의 부분으로 애플리케이션을 분할하는 아키텍처 설계 패턴입니다.목표는 데이터 모델(모델), 그래픽 사용자 인터페이스(뷰) 및 비즈니스 로직(컨트롤러)을 분리하는 것입니다.GEF는 MVC 패턴을 광범위하게 사용합니다.
    • 모델: 데이터 모델은 EMF를 사용하여 사용자가 직접 구현하거나 레거시 소프트웨어의 경우 이미 존재할 수 있습니다.
    • 컨트롤러:EditParts는 컨트롤러 역할을 합니다.일반적으로 각 모델 요소에는 일치하는 Edit Part가 있습니다.EditParts는 다른 EditParts를 포함할 수 있으므로 다른 모델 요소를 포함하는 모델 요소와 일치합니다.EditParts에는 모델 요소를 그래픽으로 나타내는 그림에 대한 참조도 있습니다.마지막으로 EditParts는 요청을 평가하고 적절한 명령을 생성하여 기본 모델을 편집합니다.
    • 보기: 연결을 포함하여 모델 내의 각 요소에 대해 그림은 Draw2d 프레임워크를 사용하여 구현해야 합니다.종종 그 그림은 어떤 기하학적 그림이다.
  • 공장: 팔레트에서 모델 만들기, 부품 편집 및 그림 만들기
  • 옵서버:일반적으로 모델 및 뷰에서 대기하는 컨트롤러(EditPart)
  • 명령어:실행 취소 및 다시 실행 기능을 구현하려면
  • 전략:EditParts는 EditPolicies를 동적으로 설치 및 제거할 수 있습니다.
  • 책임체계:요청을 처리할 Edit Policy를 결정하려면

요구 및 응답 메커니즘

Editor를 사용한 사용자 작업은 요청을 생성할 수 있습니다.요청의 성질은 호출 컨텍스트에 의해 이해됩니다.컨텍스트는 사용자가 대화하는 EditPart 및 활성 도구에 의해 결정됩니다.도구는 도구 팔레트에서 선택한 항목이 될 수 있습니다.요청이 선택한 EditPart로 전달되고 EditPart는 명령을 반환합니다.

이는 편집 정책에 대한 책임 체인을 사용하여 이루어집니다.편집 정책에 따라 요청을 처리할 수 있는지 여부가 결정됩니다.그렇지 않으면 다음 편집 정책으로 넘어갑니다.편집 정책 선언 순서에 따라 요청이 전달되는 순서가 결정됩니다.지원 가능한 편집 정책에 따라 명령어가 생성됩니다.이 명령은 "Request"를 시작한 도구에 다시 전달됩니다.명령을 실행하면 모델이 수정됩니다(응답).

레퍼런스

외부 링크