GEF學習筆記2

一、創建“插件項目(Plug-in Project)”
軟件需求:eclipse-modeling-ganymede-SR1-incubation-win32.zip
JDK6
clip_p_w_picpath002[4]
新創建插件項目,在第二步是,做如下選擇,把我們的插件項目作成可以獨立運行的RCP程序:
clip_p_w_picpath002
二、創建“編輯器(editor)”
編輯器與視圖一樣是工作臺內的可視組件,其擴展點是org.eclipse.ui.editors.擴展方式如下圖:
clip_p_w_picpath004
點擊上圖的“Add…”按鈕,會出現下面的頁面,在“Extension Point filter:”旁邊的文本框中輸入“org.eclipse.ui.editors”在項目列表中會出現對應的列表項,選中後點擊“Finish”按鈕。
clip_p_w_picpath006
在下該下圖中右邊部分之前,需要先創建2個文件:
1. 該擴展點對應的class文件(PafircGraphicalEditor.java
2. 打開該編輯器所需要的輸入內容文件(MyEditorInput.java)
詳細解釋參考下面的內容:
clip_p_w_picpath008
在plug-in.xml中“編輯器”對應的XML代碼
clip_p_w_picpath010
ü 編輯器的擴展類型爲org.eclipse.ui.editors
ü 與視圖一樣,一個編輯器也對應一個class,該class必須是實現了org.eclipse.ui.IEditorPart的類。而在GEF開發中一般至少是繼承自GraphicalEditor,如果想帶有調色板,則至少需要繼承GraphicalEditorWithPalette;如果還想調色板可收縮,則可繼承GraphicalEditorWithFlyoutPalette。
ü id是編輯器對象的唯一標識,name是在編輯器上顯示的名稱。
ü ContributorClass是可以在編輯器裏添加工具條類。
其他的:除非是開發專業的編輯器程序,下面幾個屬性一般用不到
n Extensions:是打開該編輯器所對應的文件擴展名如:.java,.txt.
n Filenames:編輯器打開文件時可選的文件名
n SymbolicFontName:編輯器字體名稱。
Java代碼:
注意下面的代碼中:setEditDomain(new DefaultEditDomain(this));
對於初學者,請先按這樣寫,不然會出現getCommandStack方法的NullPointerException。
ID字段與上圖中的id屬性相同。
clip_p_w_picpath012
三、修改ApplicationWorkbenchAdvisor類,用來打開“編輯器”
與視圖不同,編輯器不能直接顯示到透視圖的某一個區域,而是由一項操作打開的,通常是採用IWorkbenchPage的openEditor方法。
Ø OpenEditor(IEidtorInput input,String editorId):input對象是打開文件是指定輸入到編輯器的內容,是實現了IEditoInput接口的類。
Ø OpenEditor(IEidtorInput input,String editorId,boolean active):active是表示打開後是否激活該編輯器。
clip_p_w_picpath014
四、創建Model(模型),任意的POJO
模型是GEF框架中非常簡單的一個部分,與Struts等MVC框架中Model的意思是一樣的。
clip_p_w_picpath016
五、創建View(Figure),extends Figure
視圖(Figure)是模型的圖形化方式的表現,以圖形的方式展現模型,同Struts中的View,如FromBean具有類似的作用。請注意setBorder()方法,setBounds()方法,要寫正確,否則圖形可能不能顯示出來。setText()方法在這裏其實沒什麼用途,如果在Model中不賦值的話,或不刷新視圖的話,這個“Init Figure Name”內容會默認顯示出來,正常情況下應該不顯示這個內容的,應該顯示模型中賦值的內容。
clip_p_w_picpath018
六、創建Control(EditPart),extends AbstractGraphicalEditPart
Control是模型與視圖之間的橋樑,也是GEF的核心所在,它不僅要監聽模型的變化,當用戶編輯視圖時,還要把編輯的結果反映到對應的模型上,這個類似Struts中的Action。
createFigure()方法用來創建視圖。
refreshVisuals()方法用來刷新視圖,如果不調用這個方法,就會出現“步驟 五”中所說的出現默認Label 文本內容的情況。
clip_p_w_picpath020
七、創建 EditPartFactory,implements EditPartFactory
在GEF中,控制器是由一組EditPart對象共同組成,每個模型對象都對應一個EditPart對象。應用程序中需要有一個EditPartFactory對象負責根據給定的模型對象創建對應的EditPart對象,這個工廠類在創建模型時被調用。
clip_p_w_picpath022
完成這些後,應該出現的效果如下圖所示。
clip_p_w_picpath024
 
參考資料:
1.《Eclipse SWT/JFace核心應用》 清華大學出版社 那靜
3.《GEF tutorial》法國人寫的那個
4.《自己動手寫開發工具》 清華大學出版社 楊中科
5.《Eclipse插件開發方法與實戰》 電子工業出版社 甘樹滿 王秀明
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章