19
8장 이클립스 editor Eclipser Eclipse eplugin 실전개발은 multipage를 예제로 설명하고 있으며 이장에서는 보겔라의 예제를 이용하였음(단일페이지)

8장 editor

Embed Size (px)

DESCRIPTION

eclipse plugin - chapter8 editor

Citation preview

Page 1: 8장 editor

8장 이클립스 editor

Eclipser

Eclipse eplugin 실전개발은 multipage를 예제로 설명하고 있으며이장에서는 보겔라의 예제를 이용하였음(단일페이지)

Page 2: 8장 editor

1. Editor 개요

Eclipse의 Data를 관리하는 방법2가지?•Editor - 사용자에 의한 저장•View - 즉시저장(자동)

Editor를 만들기위해 아래와 같은 절차를 기억하고 있으면됩니다.•당신의 Perspective에서 Editor을 Visible함•IEditorInput생성•org.eclipse.ui.editors 확장•editor Class 구현(단, 반드시 IEditorPart를 implements 해야한다.)

*1)모든 Editor은 같은 영역에서 open이 됩니다.2)Perspective를 통해서 Editor영역이 보일지 안보일지 설정가능합니다.

Page 3: 8장 editor

Editor

Part

Input

Site

Workbench

Model

0. editor ?

Page 4: 8장 editor

2. IEditorInput

•IEditorInput은 Editor의 Model•Eclipse는 IEditorInput를 buffer로 사용•Eclipse는 File를 인식하기위해 IEditorInput Object를 사용•open되어야 하는지,Editor이 이미 열렸는지 확인가능

Page 5: 8장 editor

3. IEditorPart

org.eclipse.ui.editors를 확장하면 Editor을 만들수가있습니다. editor를 구현시에는 반드시 IEditorPart를 구현해야 하며 EditorPart를 상속받아야 합니다.(?)

Page 6: 8장 editor

3. IEditorPart

1.5. Setting the Editor Title und Tooltip

기본적으로 Editor은 EditorInput의 Tooltip와 Title를 사용합니다. 전형적으로 EditorInput는 단지 실제 객체의 경량화 표현입니다. 그래서 당신은당신의 Title나 Tooltip를 변경하고싶을지도 모릅니다. Title를 set하기위해서 setPartName()를 사용하세요. Tooltip를 set하기위해서getTitleToolTip()를 재정의 하세요.

1.6. Saving the Editor Content

Editor의 isDirty() 함수는 editor가 변경되었는지 안되었는지를 workbench에 알리기위해 사용됩니다. workbench에 editor의 property가 변경되었다는것을 알리기위해 당신은 event를 발생시킵니다.“workbench와 도 연결이 되어있네요 /? 당연하죠 workbench 위에 view던editor이던 올라갈테니까요 그럼 그연결고리는 아까 봤던 part가 해줄까요? createpartControl에서 해줄까요? 어디엔 가 있겠지만 지금은 숙제로 남겨둬보죠”fire PropertyChange(IEditorPart.PROP.DIRTY);

Page 7: 8장 editor

3. IEditorPart

1.7. API for working with Editors

당신은 현재의 active page를 통해서 Editor을 열수있어요. 그렇게 하려면EditorInput객체와 “org.eclipse.ui.editors”확장점을 정의한 editor에 대한 ID가필요합니다. page.openEditor(new YourEditorInput(), ID_OF_THE_EDITOR);

//만약에 view안에 있는경우라면getViewSite().getPage();

//If you are in an commandHandlerUtil.getActiveWorkbenchWindow(event).getActivePage();

“ 그이벤트가 일어난 즉 마우스가 클릭이 된곳의 page를 가져온다는 말이죠”“page”?

Page 8: 8장 editor

4. IEditorSite

출처 :http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fui%2FIEditorSite.html

The primary interface between an editor part and the workbench.

The workbench exposes its implemention of editor part sites via this interface, which is not intended to be implemented or extended by clients.

Page 9: 8장 editor

출처 : http://nephilim.tistory.com/99

5. IEditorPart의 정의 (이해하기위한 View와 Editor의 관련 화면)

Page 10: 8장 editor

5. 실습

2. Prerequisites for this tutorial

1. 출처 : http://www.vogella.com/tutorials/EclipseEditors/article.html

2. Download : Eclipse for RCP and RAP Developers(http://www.eclipse.org/downloads/)

3. Git clone(https://github.com/vogellacompany/vogella)1) copy to clip board2) import projectde.vogella.rcp.editor.example (here)de.vogella.rcp.intro.editor

기본적으로 당신이 좀 알고있다 생각하고 설명합니다.

Page 11: 8장 editor

3. Tutorial: Creation of an editor

5. 실습

이번장은 Editor을 생성하는것을 설명합니다. 또한 어떻게 Editor이 view와interact하는지를 보여줍니다. 여러명의 사람들을 보여주는 view를 만들것입니다.

3.1. Create project and data model

data model과 projecct만들기“de.vogella.rcp.editor.example”라는 새로운 RCP project를 만듭니다. “RCP application with a view” template을 이용합니다. “de.vogella.rcp.editor.example.model”이라는 패키지를 만들고 아래의 classes를 만듭니다.

public class Person {

public class MyModel {

3.2. Editor area

public class Perspective implements IPerspectiveFactory {

3.3. Editor Input

public class MyPersonEditorInput implements IEditorInput {

3.4. Adding the editor

Page 12: 8장 editor

5. 실습

3.5. Command for opening the editor

public class CallEditor extends AbstractHandler {

3.6. View changes

우리는 JFace Viewers를 사용하기 위해 View Class를 변경할것입니다. 그리고command를 호출해줄 더블클릭 리스너를 추가할것입니다. 그 View는 Selection Provider로서 사용가능한 그만의 viewer를 만들거예요.

getSite().SetSelectionProvider(viewer); 를 경유해서 말이죠. 이러한 작업이 editor을open해줄 command가 view의 selection을 얻을수있는걸 가능하게 해주죠. 모든workbench parts들은 getSite() method를 통해 접근가능한 a site 를 가지고있어요.A site 는 다른 workbench의 parts의 접근을 허락해주는 측면이예요 . (e.g. example 가령, 예컨데) shell, workbench window 등등 말이죠workbench objects를 접근하기위한 site는 언제나 사용가능하죠.

public class View extends ViewPart {

Page 13: 8장 editor

8장 Editor 끝

Eclipser

Page 14: 8장 editor
Page 15: 8장 editor
Page 16: 8장 editor
Page 17: 8장 editor

2) View를 추가함

Page 18: 8장 editor

3) Command 추가함

Page 19: 8장 editor