GEF學習筆記(一) eclipse的GEF相關項目說明
首先、感謝八進制的辛勤勞動和奉獻。這幾天開始對GEF發生興趣,八進制的GEF系列對我學這些的幫助很大入門很快。自己也就順手把周末學習的東西記錄下來。幫助后來學人。我會把這幾天所學陸續寫出希望大家支持。目前、正在為八進制例子發愁,我對NodePart增加了ResizeEditPolicy,但是不知為何鼠標拖動時有個灰色的區域在隨著變化,但鼠標釋放時,NodeFigure的尺寸不發生變化,是否是因為在refreshVisuals中固化了Size,代碼學習中….
eclipse的GEF相關項目說明。
各項目的簡介:

Draw2D:建立了2維的圖形庫(樹狀圖形部件Figure),負責顯示2維的圖形展示。
GEF: (Graphical Editing Framework)建立標準的MVC構架,代碼利用Draw2D作為自己的View部分,主要代碼實現復雜的樹狀(于Model分別對應) 的控制器。實現的框架具有很高的可復用等特性,例如:將圖形部件功能分解為多個EditPolicy,這樣使用者可以通過installEditPolicy接口來定制,以及擴充自己的某一功能特征。
EMF: (Eclipse Modeling Framework)首先在一個輕量級項目以及項目初期開發,Model常常采用擁有Property的Java對象來簡單明了表示【即 Plain Old Java Objects (POJOs)】。EMF定義了一套Ecore元模型,使得Model具有易于維護、易于擴充、易于數據交換等特性的Model Framwork。因此、在實際中大型的項目中往往會采用Draw2D+GEF+EMF的方式來實現整體的MVC模式。例如:ROSE的最新版本 IBM.Rational.Software.Architect就是采用了這種構架。
GMF: (Graphical Modeling Framework )使用了GEF和EMF,建立了兩個之間的橋梁框架,同時實現了一些領域上的典范應用,如UML圖,甘特圖,腦圖等。(項目正在進行中這些功能還未完備。可以用來參考以實現自己的一個標準的GEF+EMF的應用)。
各項目依賴關系:

如上圖:使用者可以有以下幾種用法:
EMF: Model管理層
Draw2D: 二維圖形展現
Draw2D + GEF: 二維圖形的簡單編輯模塊
Draw2D + GEF + EMF: 二維圖形的編輯模塊
Draw2D + GEF + EMF + GMF:基于GMF提供的圖形編輯功能之上擴展