반응형
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 |