8장 이클립스 editor 
Eclipse eplugin 실전개발은 multipage를 예제로 설명하고 있으며 
이장에서는 보겔라의 예제를 이용하였음(단일페이지) 
Eclipser
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영역이 보일지 안보일지 설정가능합니다.
Part 
Editor 
Input 
Site 
Workbench 
Model 
0. editor ?
2. IEditorInput 
•IEditorInput은 Editor의 Model 
•Eclipse는 IEditorInput를 buffer로 사용 
•Eclipse는 File를 인식하기위해 IEditorInput Object를 사용 
•open되어야 하는지,Editor이 이미 열렸는지 확인가능
3. IEditorPart 
org.eclipse.ui.editors를 확장하면 Editor을 만들수가있습니다. editor를 구현 
시에는 반드시 IEditorPart를 구현해야 하며 EditorPart를 상속받아야 합니 
다.(?)
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);
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 command 
HandlerUtil.getActiveWorkbenchWindow(event).getActivePage(); 
“ 그이벤트가 일어난 즉 마우스가 클릭이 된곳의 page를 가져온다는 말이죠” 
“page”?
4. IEditorSite 
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. 
출처 : 
http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.platform.d 
oc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fui%2FIEditorSite.html
5. IEditorPart의 정의 (이해하기위한 View와 Editor의 관련 화면) 
출처 : http://nephilim.tistory.com/99
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 board 
2) import project 
de.vogella.rcp.editor.example (here) 
de.vogella.rcp.intro.editor
5. 실습 
3. Tutorial: Creation of an editor 
이번장은 Editor을 생성하는것을 설명합니다. 또한 어떻게 Editor이 view와 
interact하는지를 보여줍니다. 여러명의 사람들을 보여주는 view를 만들것입 
니다. 
3.1. Create project and data model 
data model과 projecct만들기 
“de.vogella.rcp.editor.example”라는 새로운 RCP project를 만듭니다. “RCP ap 
plication with a view” template을 이용합니다. “de.vogella.rcp.editor.exampl 
e.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
5. 실습 
3.5. Command for opening the editor 
public class CallEditor extends AbstractHandler { 
3.6. View changes 
public class View extends ViewPart { 
우리는 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는 언제나 사용가능하죠.
8장 Editor 끝 
Eclipser
2) View를 추가함
3) Command 추가함
8장 editor

8장 editor

  • 1.
    8장 이클립스 editor Eclipse eplugin 실전개발은 multipage를 예제로 설명하고 있으며 이장에서는 보겔라의 예제를 이용하였음(단일페이지) Eclipser
  • 2.
    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영역이 보일지 안보일지 설정가능합니다.
  • 3.
    Part Editor Input Site Workbench Model 0. editor ?
  • 4.
    2. IEditorInput •IEditorInput은Editor의 Model •Eclipse는 IEditorInput를 buffer로 사용 •Eclipse는 File를 인식하기위해 IEditorInput Object를 사용 •open되어야 하는지,Editor이 이미 열렸는지 확인가능
  • 5.
    3. IEditorPart org.eclipse.ui.editors를확장하면 Editor을 만들수가있습니다. editor를 구현 시에는 반드시 IEditorPart를 구현해야 하며 EditorPart를 상속받아야 합니 다.(?)
  • 6.
    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);
  • 7.
    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 command HandlerUtil.getActiveWorkbenchWindow(event).getActivePage(); “ 그이벤트가 일어난 즉 마우스가 클릭이 된곳의 page를 가져온다는 말이죠” “page”?
  • 8.
    4. IEditorSite Theprimary 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. 출처 : http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.platform.d oc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fui%2FIEditorSite.html
  • 9.
    5. IEditorPart의 정의(이해하기위한 View와 Editor의 관련 화면) 출처 : http://nephilim.tistory.com/99
  • 10.
    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 board 2) import project de.vogella.rcp.editor.example (here) de.vogella.rcp.intro.editor
  • 11.
    5. 실습 3.Tutorial: Creation of an editor 이번장은 Editor을 생성하는것을 설명합니다. 또한 어떻게 Editor이 view와 interact하는지를 보여줍니다. 여러명의 사람들을 보여주는 view를 만들것입 니다. 3.1. Create project and data model data model과 projecct만들기 “de.vogella.rcp.editor.example”라는 새로운 RCP project를 만듭니다. “RCP ap plication with a view” template을 이용합니다. “de.vogella.rcp.editor.exampl e.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
  • 12.
    5. 실습 3.5.Command for opening the editor public class CallEditor extends AbstractHandler { 3.6. View changes public class View extends ViewPart { 우리는 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는 언제나 사용가능하죠.
  • 13.
    8장 Editor 끝 Eclipser
  • 17.
  • 18.

Editor's Notes

  • #3 1)Eclipse는 Data를 관리하기 위해 View와 Editor을 사용합니다. view를 설명할때 Editor을 설명할때 view는 즉시 저장이되고 Editor는 사용자의 명시적인 “저장”동작에 의해 저장이 된다고 말합니다, 그말은 1)을 증명해주죠. 오늘은 그중에서 Editor에 관해 알아보겠습니다.
  • #5 이전장에서 IEditorInput를 먼저 만든다고 했죠? IEditorInput은 Editor의 Model이며 Model의 경량화된 표현이라고 합니다. Eclipse는 IEditorInput를 buffer로 사용하기에 상대적으로 Small해야합니다. Eclipse는 File를 인식하기위해 IEditorInput Object를 사용합니다. 완벽한 파일의 핸들링없이 말이죠. IEditorInput의 equal() Method를 기반으로 시스템이 그에 상응하는 Editor이 이미 열렸는지? 혹은 새로운 Editor이 open되어야 하는지를 파악합니다.
  • #6 우리의 Editor은 init() method를 통해서 IEditrorSite와 IEditorInput를 얻습니다. -- 책에 클래스 다이어그램 있음 – setinput()를 이용해서 입력을 셋팅하고 side는 setSite()를 이용해서 셋팅합니다. init() method는 createPartControl()전에 호출이되기에 당신의 UI 가 만들어지는 동안 input을 사용할수있습니다. “우리는 editor을 만들었으며 input이 있다고 했으며 이는 모델이라고 했습니다. 그럼 이모델을 조종해줄사람이 필요합니다. part라고 합시다 너무슨 파트니 무슨 파트니 등등 역활을 지시 하는 놈이죠. 즉 editor의 Control 이라고 합시다. “
  • #8 ppt4~5정도가 될지도 editor을 만들었다면 editor을 담고있는 화면을 가지고 와야겠지요? page라고 말해봅시다. 그리고 활성화된놈을 혹은 사용하고 싶은 놈을 ActivePage라고 해봅시다. View에서 가져올때, Command(Action을 말하죠?)에서 가지고올때, 그외에 다른곳(전역적인곳 어디에서나)에서 가지고 올때. 가존재합니다.
  • #10 Lazy 이기때문에 초기에 부팅시에 모두를 가져다가 reference를 만들게 된다.