기은P
시간이 멈추는 장소
기은P
  • Programming (272)
    • 개발노트 (1)
    • FrontEnd (56)
      • ES&JS 문법 (14)
      • HTML&CSS (4)
      • React 기본 (18)
      • React 심화 (12)
      • React 이슈 (2)
      • Project 연습 (1)
      • Next.js (5)
    • Backend&Devops (33)
      • AWS (2)
      • Docker (9)
      • Jenkins (6)
      • Nginx (6)
      • Node.js (1)
      • ElasticSearch (5)
      • 프레임워크&아키텍처 (2)
      • 암호화 (0)
      • 기타 (2)
    • 알고리즘 (3)
    • C# (8)
      • WPF (8)
    • Java (51)
      • 순수 Java (18)
      • RDF&Jena (12)
      • RCP&GEF (9)
      • JMX (5)
      • JMapper (3)
      • 오류해결 (4)
    • Database (21)
      • RDBMS (9)
      • NoSQL (2)
      • TSDB (1)
      • GraphQL (1)
      • Hibernate (3)
      • 데이터베이스 이론 (4)
      • Redis (1)
    • 프로토콜 (11)
      • Netty (4)
      • gRPC (5)
      • 프로토콜 개념 (2)
    • Server (4)
      • Linux (4)
    • 2020 정보처리기사 필기 (43)
      • 목차 (1)
      • 기출문제 (1)
      • 1과목 - 소프트웨어 설계 (6)
      • 2과목 - 소프트웨어 개발 (7)
      • 3과목 - 데이터베이스 구축 (8)
      • 4과목 - 프로그래밍 언어 활용 (7)
      • 5과목 - 정보시스템 구축 관리 (10)
    • 2020 정보처리기사 실기 (31)
      • 목차 (4)
      • 기출예상문제 (19)
      • 실기요약 (8)
    • 빅데이터분석기사 필기 (4)
      • 목차 (0)
      • 필기 요약 (3)
    • 전기 공학 (1)
      • CIM (1)
    • 산업자동화시스템 (3)
      • SCADA (1)
      • OPC UA (2)
    • 디자인패턴 (1)
    • 휴지통 (0)

공지사항

  • 공지사항/포스팅 예정 항목

최근 댓글

최근 글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
기은P

시간이 멈추는 장소

Eclipse GEF - Editor를 화면에 띄우는 방법
Java/RCP&GEF

Eclipse GEF - Editor를 화면에 띄우는 방법

2020. 4. 2. 09:19
반응형

Eclipse GEF - Editor를 화면에 띄우는 방법

 

1)     GraphicalEditor를 상속받는 Editor 클래스를 하나 생성한다. 여기서는 MyGraphicalEditor라는 이름으로 생성했다.

 

package com.realpersist.gef.editor;

import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.gef.DefaultEditDomain;
import org.eclipse.gef.ui.parts.GraphicalEditor;

public class MyGraphicalEditor extends GraphicalEditor {

	public static final String ID = "tutogef.mygraphicaleditor";

	public MyGraphicalEditor() {
		setEditDomain(new DefaultEditDomain(this));
	}

	@Override
	protected void initializeGraphicalViewer() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void doSave(IProgressMonitor monitor) {
		// TODO Auto-generated method stub
		
	}
}

 

상속을 하게 되면 필수적으로 구현해야 하는 메소드들 목록이 있는데 적당히 구현하자.

 

 

 

2)     두번째로 MyGraphicalEditor를 화면에 보여주기 위한 EditorInput 클래스를 생성한다.

 

package com.realpersist.gef.editor;


import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IPersistableElement;

public class MyEditorInput implements IEditorInput {
	public String name = null;

	public MyEditorInput(String name) {
		this.name = name;
	}

	@Override
	public boolean exists() {
		return (this.name != null);
	}

	public boolean equals(Object o) {
		if (!(o instanceof GEFEditorInput))
			return false;
		return ((GEFEditorInput) o).getName().equals(getName());
	}

	@Override
	public ImageDescriptor getImageDescriptor() {
		return ImageDescriptor.getMissingImageDescriptor();
	}

	@Override
	public String getName() {
		return this.name;
	}

	@Override
	public IPersistableElement getPersistable() { // TODO Auto-generated method stub
		return null;
	}

	@Override
	public String getToolTipText() {
		return this.name;
	}

	@Override
	public Object getAdapter(Class adapter) { // TODO Auto-generated method stub
		return null;
	}
}

 

 

3)     Plugin.xml – Extensions – Add..버튼 누르고 editors 검색. org.eclipse.ui.editors를 추가한다.

 

 

 

RCP 기반의 화면이기 때문에 똑같이 plugin.xml에서 editor를 등록하지 않는 이상 적용이 되지 않는다.

 

 

 

4)     Editors 우측클릭 – editor 추가 – id, name, class 작성

 

 

 

Default 값은 true로 주고 class는 앞서 작성했던 클래스의 경로를 browse로 찾아서 입력해준다.

이렇게 editor를 plugin.xml에 등록해준다.

 

 

5) ApplicationWorkbenchAdvisor 수정

 

 

GEF 프로젝트를 생성하게 되면 Advisor들이 생겨날 텐데 위의 클래스를 선택하고 클래스에 코드를 추가하자.

 

public class ApplicationWorkbenchAdvisor extends WorkbenchAdvisor {

	private static final String PERSPECTIVE_ID = "GEF_EditorProject.perspective";

	@Override
	public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor(
			IWorkbenchWindowConfigurer configurer) {
		return new ApplicationWorkbenchWindowAdvisor(configurer);
	}
	
	@Override
	public String getInitialWindowPerspectiveId() {
		return PERSPECTIVE_ID;
	}

	@Override
	public void postStartup() {
		// TODO Auto-generated method stub
		try {
			IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();			
			page.openEditor(new MyGraphicalEditorInput("GEFEditor"), MyGraphicalEditor.ID, false);			
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}

}

 

위의 postStartup() 메소드를 오버라이드해서 작성한다. 어플리케이션 워크벤치 어드바이저의 생명주기로, 어플리케이션이 시작을 하기 전에 메소드가 실행된다.

 

PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()와 같은 코드가 중요하다.

현재 플랫폼의 워크벤치를 가져오고, 활성화된 워크벤치 윈도우를 가져오고, 거기서 활성화된 페이지를 가져온다는 것.

이 페이지에 openEditor()를 통해서 이전에 작성한 Editor를 등록하는 것이다.

 

 

 

6)     실행결과

 

 

 

 

실행을 하게 되면 마우스 포인터가 변경되고 무언가 그래픽 적으로 편집할 수 있는 에디터가 생성될 것이다.

 

첨부된 사진은 그래픽 에디터를 활용한 결과 모습이다.

반응형
저작자표시 변경금지 (새창열림)

'Java > RCP&GEF' 카테고리의 다른 글

Eclipse RCP SWT Image Path 지정 방법  (0) 2020.07.27
[GEF] Eclipse GEF 3.11 다운로드 방법  (0) 2020.04.02
Eclipse RCP - plugin.xml에서 View의 데이터 다른 View로 옮기기  (0) 2020.04.01
Eclipse RCP - plugin.xml을 사용한 view 생성  (2) 2020.04.01
Eclipse RCP - plugin.xml을 사용한 Command Handler 생성  (0) 2020.04.01
    'Java/RCP&GEF' 카테고리의 다른 글
    • Eclipse RCP SWT Image Path 지정 방법
    • [GEF] Eclipse GEF 3.11 다운로드 방법
    • Eclipse RCP - plugin.xml에서 View의 데이터 다른 View로 옮기기
    • Eclipse RCP - plugin.xml을 사용한 view 생성
    기은P
    기은P
    기은P의 블로그 일상과 개발 관련 포스팅 #React #Typescript #Next #Nest https://github.com/kimdongjang

    티스토리툴바