프로젝트 수행 도중 디자인 설계 에디터 우측에 접었다 폈다하는 텍스트 에디터를 추가해야 하는 필요성이 생겨 중첩된 에디터 구현 해보았다.
기본적인 아이디어는 MultiPageEditor의 "addPage" 함수를 참조 하였다.
public void addPage(int index, IEditorPart editor, IEditorInput input) |
기본 컨셉은 에디터가 생성되기 위해서는 "IEditorSite" 인스턴스가 필요한데 이는 부모 에디터인MultiPageEditor의 MultiPageEditorSite 클래스를 생성하여 구하고 이를 중첩하여 생성 시킬 에디터의 init(IEditorSite, IEditorInput)에 전달하여 기능을 구현하는 것이다.
▼중첩 에디터 예시
▼중첩 에디터 구현 예시 코드
private void buildSubHtmlEditor(Composite parent) { // 1. html 에디터의 부모 컴포지트 생성 Composite editorComposite = new Composite(parent, SWT.BORDER); editorComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); editorComposite.setLayout(new FillLayout()); // 2. 중첩하여 생성되는 html에디터 생성 htmlEditor = new HtmlEditor(true); // 3. html 에디터의 부모 에디터를 활용하여 생성한 IEditorSite객체 생성 // 이 예에서는 html에디터가 MultiPageEditor위에 생성됨으로 MultiPageEditorSite 클래스를 생성하여 IEditorSite를 얻는다. IEditorSite editorSite = new MultiPageEditorSite(parentEditor, htmlEditor); try { // 4. init()로 html 에디터 초기화 // IEditorSite 와 IEditorInput 객체를 전달하여 초기화 htmlEditor.init(editorSite, parentEditor.getEditorInput()); } catch (PartInitException e) { // TODO Auto-generated catch block e.printStackTrace(); return; } // 5. html 에디터의 부모 컴포지트를 설정한다. htmlEditor.createPartControl(editorComposite); }
'JAVA > Eclipse plugin' 카테고리의 다른 글
네비게이터 뷰로부터 현재 선택된 프로젝트 알아내기 (0) | 2015.11.12 |
---|---|
이클립스 JUNO 버전 CTabFolder.setTextDirection() 함수 사용 불가 (0) | 2015.06.18 |
JFace Dialog Close 이벤트 헨들러 (0) | 2015.05.26 |
JFaceDialog 타이틀 설정 (0) | 2015.05.26 |