介紹前面也簡單的介紹了一下插件開發的相關知識,下面主要就介紹一下GEF的相關使用。由於最近使用到編輯器這部分的操作,因此就跳過其他的內容,先介紹下GEF的相關知識。
什么是GEF?
GEF的英文全稱是Graphical Editing Framework,也就是圖形化編輯框架。它幫助我們輕松的創建一些模型,並提供富圖形化的特性。有一張圖已經不知道被翻過踩過多少遍了,但是真的就是這張圖表達了GEF標准的MVC架構思想。

可以看到,上面最顯眼的三個部分就是Model,Controller以及View.這三個部分,也夠成了GEF插件開發的核心。
在GEF中,每一個模型都有自己的Editpart,也就是Controller,也有自己的Model,這個Model通常包含了模型的屬性以及相關的信息。而Figure則是自己的一種展現方式。
比如經典的兩種圖形,一種是用於模型的創建,一種用連接模型的連線。
而每一個模型的Editpart都會綁定一些動作,這些動作被放在EditPolicy中,也就是一些動作策略里面。當有屬性事件發生時,就會觸發這個策略對應的操作,從而修改模型的屬性。模型屬性會觸發一些監聽事件,導致圖形Figure的重繪。
另外一張圖,就重繪的響應機制:

這里就不得不提Draw2D了。Draw2D是一種基於SWT的2D繪圖框架,它有效的幫助我們完成了圖形可視化的工作。
這里面的LWS也就是Draw2D的核心,每次圖形的響應時間都會傳輸到這里,通過分發器找到相應的圖形,進行響應。
在GEF可以編輯接近所有的圖形,在你的模型中,你既可以簡單的修改模型的特性,也可以進行一些復雜的操作。所有的修改操作都符合一般性的操作習慣,比如拖拽,刪除,復制,粘貼,或者從菜單或工具欄上觸發。
學習資源
第一種就是GEF本身帶有的一些的學習文檔以及樣例。
GEF SDK在Eclipse的Help里面提供了在線幫助文檔。通過查看Draw2D Developers Guide,和GEF Developer Guide可以查閱一些基本的使用指南。
另外呢,在 http://www.eclipse.org/gef上也有很多GEF的相關資料,比如一些代碼,樣例以及文檔。
適合GEF的應用程序
GEF可以開發很多種應用程序,幾乎對於每一種圖形都沒有限制。最常見的程序就是建模工具了,比如企業流程、應用模型、以及一些UI界面。
也有很多用於設計報表、網站,表單文檔。也可以使用圖形化編輯器來修改一些代碼的樣例,配置,服務器等等。、
有很多優秀的開發產品,比如
MDE for Struts
為Struts開發的基於Eclipse的插件設計器,通過模型可以創建一些JSP,java , xml ,ant腳本等等文件,也可以通過模型生成一些樣例代碼


Eclipse Desginer
這個工具是基於SWT的設計工具,能夠幫助我們可視化的完成一些RCP應用程序UI部分的編輯

