맨위로가기

그래피컬 에디팅 프레임워크

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

그래피컬 에디팅 프레임워크(GEF)는 이클립스 리치 클라이언트 플랫폼(RCP) 애플리케이션 내에서 그래픽 편집기와 뷰를 구현하기 위한 프레임워크이다. 2002년 IBM의 etools에서 이클립스로 기증되었으며, Draw2d, GEF(MVC), Zest의 세 가지 주요 구성 요소로 이루어져 있다. GEF 3.x는 이클립스 RCP 애플리케이션을 위한 프레임워크 기술을 제공하며, GEF4는 모듈화, JavaFX 사용, RCP 애플리케이션 독립성을 특징으로 한다. GEF는 모델-뷰-컨트롤러(MVC) 패턴을 광범위하게 사용하며, 팩토리, 옵저버, 커맨드, 전략, 책임 연쇄 등의 디자인 패턴을 활용하여 그래픽 편집기를 구축한다.

더 읽어볼만한 페이지

  • Eclipse (소프트웨어) - 표준 위젯 툴킷
    표준 위젯 툴킷(SWT)은 자바 GUI 툴킷으로, 네이티브 룩앤필과 고성능을 위해 윈도 시스템의 그래픽 요소를 직접 사용하며, 이클립스 IDE의 기반 기술로 IBM에 의해 개발되었다.
  • Eclipse (소프트웨어) - AspectJ
    AspectJ는 자바 언어의 관점 지향 프로그래밍 확장이자, 확장 메서드, 포인트컷, 어드바이스 등의 기능을 통해 기존 코드 변경 없이 새로운 기능을 추가할 수 있도록 설계되었다.
  • 그래픽 소프트웨어 - 김프
    김프(GIMP)는 GNU 프로젝트에서 개발된 크로스 플랫폼 기반의 무료 오픈소스 래스터 그래픽 편집기로, 다양한 운영체제를 지원하며 풍부한 기능을 제공하지만 사용자 인터페이스에 대한 비판과 일부 기능의 부족함에 대한 평가도 존재한다.
  • 그래픽 소프트웨어 - 퀵타임
    퀵타임은 1991년 애플에서 처음 출시된 멀티미디어 프레임워크로, 다양한 기능 업데이트를 거치며 발전했으나 애플의 소극적인 지원으로 쇠퇴하였고, 비디오 및 오디오 트랜스코딩, 코덱 지원 등의 특징을 가지며 퀵타임 플레이어를 통해 다양한 파일 형식을 재생할 수 있도록 지원했으나, 2016년 4월 윈도우 버전 지원이 중단되었다.
그래피컬 에디팅 프레임워크

2. 역사

GEF는 IBM의 etools의 일부로 처음 개발되었으며, 2002년 이클립스에 기증되었다.

2. 1. 초기 개발 및 이클립스 기증 (2002년)

GEF는 처음에는 IBM의 etools(com.ibm.etools.gef)의 일부로 개발되었다가 2002년 버전 2.0.0 기준으로 이클립스에 기부되었으며, 당시 2개의 구성 요소로 구성되었다: Draw2d(표준 위젯 툴킷(SWT) 기반 2차원 시각화 구성 요소), GEF(MVC, 이클립스 리치 클라이언트 플랫폼(RCP) 애플리케이션의 일부로서 그래피컬 편집기에 사용 가능한 관련 MVC(모델-뷰-컨트롤러) 프레임워크) 이클립스에서의 첫 릴리스는 2003년 3월 GEF 2.1.0이었다.

2. 2. GEF 2.x 및 3.x 버전 출시 (2003년 ~ 2007년)

GEF는 초기에 IBM의 etools(com.ibm.etools.gef)의 일부로 개발되었다가 2002년에 이클립스에 기부되었으며, 당시 Draw2d(표준 위젯 툴킷(SWT) 기반 2차원 시각화 구성 요소)와 GEF(MVC, 이클립스 리치 클라이언트 플랫폼(RCP) 애플리케이션의 일부로서 그래피컬 편집기에 사용 가능한 관련 모델-뷰-컨트롤러 프레임워크)의 2개 구성 요소로 구성되었다. 이클립스에서의 첫 릴리스는 2003년 3월 GEF 2.1.0이었다. 2004년 6월에는 격자, 가이드 지원과 같은 수많은 신규 기능들이 제공되는 다음 주요 버전 GEF 3.0.0이 출시되었다. 2007년에는 GEF 3.4.0 릴리스의 일부로서 제3의 프로젝트 구성 요소인 제스트(Zest)가 버전 1.0.0으로 추가되었다. GEF 3.0.0이 출시된 2004년 이후로 프레임워크의 API에는 오직 호환 가능한 변경사항만 적용되었다.

2. 3. GEF4 (GEF 3.x 이후) 개발 (2010년 ~ 현재)

2010년부터 프로젝트 팀은 GEF 3.x 구성 요소의 유지보수와 병행하여 프레임워크의 새로운 주요 개정을 개발해 왔다. 이는 훨씬 더 모듈화되고, 기본 렌더링 프레임워크로 SWT 대신 JavaFX를 사용하며, 이클립스 RCP 애플리케이션과 독립적으로 사용할 수 있도록 완전히 재설계된 것이다.

일반적으로 GEF4로 불리는 해당 구성 요소는 2015년 6월 GEF 3.10.0 (Mars) 릴리스의 일부로 버전 0.1.0 (API는 아직 임시)으로 처음 출시되었다. GEF4 구성 요소는 2016년 6월 GEF 4.0.0 (Neon) 릴리스의 일부로 버전 1.0.0으로 출시될 예정이다.

3. GEF 3.x

GEF 3.x는 이클립스 리치 클라이언트 플랫폼(RCP) 애플리케이션에서 그래픽 편집기와 뷰를 구현하기 위한 프레임워크 기술을 제공한다. GEF는 다음 세 가지 구성 요소로 이루어져 있다.


  • Draw2d
  • GEF(MVC)
  • Zest (제스트)


GEF 3.x 구성 요소는 그래픽 모델링 프레임워크(GMF)에서도 사용된다. GMF는 이클립스 모델링 프레임워크(EMF)와 결합하여 데이터 모델과 그래픽 편집기 코드를 생성한다.

3. 1. 구성 요소

GEF 3.x는 이클립스 리치 클라이언트 플랫폼(RCP) 애플리케이션에서 그래픽컬 편집기와 뷰를 구현하기 위한 프레임워크 기술을 제공한다. GEF는 다음 세 가지 구성 요소로 이루어져 있다.

  • Draw2d
  • GEF(MVC)
  • Zest (제스트)


GEF 3.x 구성 요소는 그래픽 모델링 프레임워크(GMF)에서도 사용된다. GMF는 이클립스 모델링 프레임워크(EMF)와 결합하여 데이터 모델과 그래픽 편집기 코드를 생성한다.

3. 1. 1. Draw2d

Draw2d는 표준 위젯 툴킷(SWT) 기반의 2차원 시각화 구성 요소이다.

3. 1. 2. GEF(MVC)

GEF(MVC)는 이클립스 리치 클라이언트 플랫폼(RCP) 애플리케이션에서 그래픽 편집기를 구현하기 위해 사용할 수 있는 모델-뷰-컨트롤러(MVC) 구성 요소이다. GMF에서도 사용된다.

3. 1. 3. Zest

Zest는 이클립스 리치 클라이언트 플랫폼(RCP) 애플리케이션의 일부로서 그래프와 같은 데이터 구조의 시각화를 위한 뷰를 구현하는 데 사용할 수 있는 그래프 기반 시각화 툴킷이다.

3. 2. 아키텍처

GEF 3.x는 이클립스 리치 클라이언트 플랫폼(RCP) 애플리케이션에서 그래픽컬 편집기와 뷰를 구현하는 데 사용되는 프레임워크 기술이다. GEF는 다음과 같이 세 가지 요소로 구성된다.

  • Draw2d: 표준 위젯 툴킷(SWT) 기반의 2차원 시각화 구성 요소이다.
  • GEF(MVC): 이클립스 RCP 애플리케이션에서 그래픽컬 편집기를 구현하는 데 사용되는 MVC(모델-뷰-컨트롤러) 구성 요소이다.
  • 제스트(Zest): 이클립스 RCP 애플리케이션에서 그래프와 같은 데이터 구조를 시각화하는 뷰를 구현하는 데 사용되는 그래프 기반 시각화 툴킷이다.


GEF(MVC)로 생성된 에디터는 툴 팔레트를 포함하는 다이어그램 에디터, 피겨(Figure), 편집 파트(EditPart), 요청 객체, 편집 정책(EditPolicy) 객체, 명령 객체 등으로 구성된다.

3. 2. 1. 디자인 패턴

GEF는 디자인 패턴을 광범위하게 사용한다. 개발자는 이를 이해해야 한다.

  • 모델-뷰-컨트롤러(MVC)는 애플리케이션을 특정 방식으로 서로 통신하는 별도의 부분으로 나누는 아키텍처 디자인 패턴이다. 데이터 모델(모델), 그래픽 사용자 인터페이스(뷰), 비즈니스 로직(컨트롤러)을 분리하는 것이 목표이다. GEF는 MVC 패턴을 광범위하게 사용한다.
  • 모델: 데이터 모델은 EMF를 사용하여 생성되거나 사용자가 직접 구현하거나 레거시 소프트웨어의 경우 이미 존재할 수 있다.
  • 컨트롤러: EditPart는 컨트롤러 역할을 한다. 일반적으로 각 모델 요소에는 해당 EditPart가 있다. EditPart는 다른 EditPart를 포함하여 다른 모델 요소를 포함하는 모델 요소와 일치할 수 있다. EditPart는 또한 모델 요소를 그래픽으로 나타내는 figure에 대한 참조를 가진다. 마지막으로 EditPart는 요청을 평가하고 기본 모델을 편집하기 위한 적절한 명령을 생성한다.
  • 뷰: 연결을 포함한 모델 내 각 요소에 대해 Draw2d 프레임워크를 사용하여 figure를 구현해야 한다. 종종 figure는 어떤 기하학적 그림이다.
  • 팩토리: 팔레트에서 모델 생성, EditPart 생성 및 Figures 생성
  • 옵저버: 일반적으로 모델 및 뷰를 리스닝하는 컨트롤러(EditPart)
  • 커맨드: 실행 취소 및 다시 실행 기능 구현
  • 전략: EditPart는 EditPolicy를 동적으로 설치하고 제거할 수 있다.
  • 책임 연쇄: 어떤 EditPolicy가 Request를 처리해야 하는지 결정하기 위해

3. 2. 2. 요청 및 응답 메커니즘

편집기를 이용한 모든 사용자 작업은 요청을 생성할 수 있다. 요청의 성격은 호출의 컨텍스트에 의해 이해된다. 컨텍스트는 사용자가 상호 작용하는 EditPart와 활성 도구에 의해 결정된다. 도구는 도구 팔레트에서 선택된 모든 항목이 될 수 있다. 요청은 선택된 EditPart로 전달되며, EditPart는 다시 명령을 반환한다.

이것은 EditPolicy를 통한 책임 연쇄 메커니즘을 사용하여 구현된다. EditPolicy는 요청을 처리할 수 있는지 여부를 결정하고, 그렇지 않은 경우 다음 EditPolicy로 전달한다. EditPolicy의 선언 순서는 요청이 전달되는 순서를 결정한다. 처리 가능한 EditPolicy는 명령을 생성한다. 이 명령은 "요청"을 시작한 도구로 다시 전달된다. 명령 실행은 모델을 수정한다 (응답).

4. 한국 개발자 커뮤니티와 GEF

한국의 이클립스 사용자 그룹 및 개발자 커뮤니티에서는 그래피컬 에디팅 프레임워크(GEF)에 대한 정보 공유가 활발하게 이루어지고 있다. 특히, 이클립스 RCP 기반 애플리케이션 개발 사례에서 GEF를 활용하는 경우가 많다.



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com