国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
15 分鐘學會 Eclipse GMF

15 分鐘學會 Eclipse GMF

Eclipse 的模型驅(qū)動開發(fā)方法入門

Chris Aniszczyk, 軟件工程師, IBM 

簡介: 本文介紹了 Graphical Modeling Framework(GMF)項目,說明了如何開發(fā)一個簡單的 Eclipse Modeling Framework(EMF)模型,并使用 GMF 的工具將其轉(zhuǎn)換成典型的圖形化編輯器。

發(fā)布日期: 2006 年 11 月 27 日
級別: 中級
訪問情況 : 11645 次瀏覽
評論:  (查看 | 添加評論 - 登錄)

平均分 (10個評分)
為本文評分

背景

坦白說:過去在 Eclipse 里使用 Graphical Editor Framework(GEF)創(chuàng)建圖形化編輯器 既慢又痛苦。這個過程包括理解復雜的框架和大量的冗余代碼。但也說明 GEF 是創(chuàng)建圖形化編輯器的最佳框架,因為它與模型無關(guān)。另一方面,與模型無關(guān)本身也有一些問題。

GMF 雜談

GMF 的運行時組件是 IBM? 為使用 Eclipse Foundation 開發(fā)的,它以前還受 IBM Rational? 建模產(chǎn)品的支持。

GEF 是 Model-View-Controller(MVC)機制的精髓,它允許將您自己的模型引入表中。在使用 GEF 的早期,大多數(shù)人還使用自定義模型(考慮傳統(tǒng) Java 對象 [Plain Old Java? Object, POJO])。您會發(fā)現(xiàn)自定義模型帶來的問題是需要自己編寫通用代碼來支持模型,如序列化及偵聽模型更改的功能。

在 GEF 中使用模型的下一個邏輯步驟是要使用 Eclipse Modeling Framework(EMF),EMF 提供了以各種形式將模型序列化的工具和偵聽對模型默認值的更改的功能。

想要了解 EMF 的更多信息?

如果您覺得缺乏 Eclipse Modeling Framework(EMF)方面的基礎(chǔ)知識,或想要強化關(guān)于 EMF 的一般知識,建議您看書或者 developerWorks 中的一系列介紹性文章,這些都是非常好的參考資料。有關(guān)這些參考資料和其他 EMF 參考資料,請參閱 參考資料。

但是,將 EMF 模型與 GEF 框架整合在一起有一定的技術(shù)難度(如不同的命令堆棧),導致 EMF 模型并沒有很快被基于 GEF 的編輯器接受。最終,GMF 項目在這種逆境中應(yīng)運而生,并希望能夠引入一種快速生成圖形化編輯器的方法。通過類似的方法,EMF 生成適用于 EMF 模型的基本編輯器。

創(chuàng)建 EMF 模型

創(chuàng)建模型的第一步就是定義 EMF 模型的協(xié)作對象。我寫這篇文章的目的只是說明定義模型的過程,而不是深入講解 EMF 提供的模型處理工具的用法。本例中將要使用的模型是一個簡單的圖形化模型。我將通過一張圖來幫助我說明模型的外觀。


圖 1. 可視的圖形化模型


如您所見,使用模型是幫助我們理解各部分之間關(guān)系的一種簡單方法。這個模型由圖形、連接和圖形化圖表組成。

EMF 支持通過多種方法定義模型。為簡單起見,我決定使用加注的 Java 技術(shù)。下面的代碼清單說明了如何使用 EMF 定義模型。第一個模型對象是一個有名稱屬性、源連接和目標連接(Connection 類型)的圖形。請注意,這是一個抽象的 EMF 類。


清單 1. Shape.java
                /** * @model abstract="true" */public interface Shape {/** * @model */String getName();/** * @model type="com.ibm.model.shapes.model.Connection" containment="true" */List getSourceConnections();/** * @model type="com.ibm.model.shapes.model.Connection" */List getTargetConnections();} 

接下來定義囊括所有圖形的列表的圖形化圖表。


清單 2. ShapesDiagram.java
                /** * @model */public interface ShapesDiagram {/** * @model type="com.ibm.model.shapes.model.Shape" containment="true" */List getShapes();}

接下來定義一些特殊的圖形使模型更加生動。


清單 3. RectangularShape.java
                /** * @model */public interface RectangularShape extends Shape {}


清單 4. EllipticalShape.java
                /** * @model */public interface EllipticalShape extends Shape {}

最后,再添上連接就可以了,這樣就能將各種圖形真正連接在一起。


清單 5. Connection.java
                /**  * @model  */public interface Connection {/** @model */Shape getSource();/** @model */Shape getTarget();}

使用 Java 編程語言定義了模型后,請單擊 File > New > Eclipse Modeling Framework > EMF Model(參見圖 2)定義一個新的 EMF genmodel。注意:如果還沒有 EMF 項目,就先創(chuàng)建一個。


圖 2. EMF 加注的 Java importer


生成 EMF 模型

如果在生成 EMF 模型遇到問題,請參閱名為 "Generating an EMF Model" 的教程,它可以幫助您入門。請參閱 參考資料。

創(chuàng)建了 EMF genmodel 后,請在文件上單擊鼠標右鍵,并確保生成 ModelEdit 組件(您只需選擇 Generate All 就可以輕松地完成)。

創(chuàng)建 GMF 模型

GMF 需要您先創(chuàng)建一組模型,然后生成圖形化編輯器。圖 3 顯示了創(chuàng)建這些模型所涉及的過程。我們需要使用的第一個模型是圖形化定義,它定義了編輯器生成后的視覺效果。接下來是工具定義,它包括與編輯器面板、菜單等相關(guān)的事務(wù)。最后,還需要一個模型就是映射定義,相信您猜得到,它用于定義業(yè)務(wù)邏輯(EMF 圖形化模型)與可視化模型(圖形化和工具定義)之間的映射。


圖 3. GMF 概覽(來自 GMF 維基)


GMF 有個叫 GMF 指示板(Window > Show View > Other > GMF Dashboard)的實用程序非常好。它可以幫助您用一種簡單的方法完成圖形化編輯器生成過程。在這個階段,您必須選定域模型和域 genmodel。


圖 4. GMF 指示板


GMF 圖形化定義模型

GMF 備忘單

GMF 有一個優(yōu)秀的備忘單,它可以幫助您完成用 GMF 生成編輯器的創(chuàng)建過程。建議將此備忘單與 GMF 指示板結(jié)合使用。請通過菜單項 Help > Cheat Sheets... 訪問備忘單。

需要創(chuàng)建的第一個模型是圖形化定義模型(在指示板的 Graphical Def Model 下單擊創(chuàng)建超級鏈接)。確保選擇 Canvas 為模型對象。這個模型很容易創(chuàng)建:

  1. 創(chuàng)建圖表中顯示的圖。方法是在編輯器中創(chuàng)建一個新的 Figure Gallery 條目,然后創(chuàng)建各種圖。
  2. 創(chuàng)建圖表中顯示的節(jié)點(矩形和橢圓形)。
  3. 在圖表中創(chuàng)建連接。
  4. 確保每個節(jié)點都與圖庫中創(chuàng)建的圖相匹配。

注意:如果您在執(zhí)行此任務(wù)時遇到問題,您可以下載一個樣例插件,此插件為您準備好了所有模型。


圖 5. GMF 圖解模型


GMF 工具定義模型

這個步驟需要定義工具定義模型,使用此模型可以定義圖形化編輯器的信息類面板和菜單。要定義工具定義模型,請打開 GMF 指示板,然后單擊 Create。我們的簡單模型只需定義一個面板和一些創(chuàng)建工具來輔助創(chuàng)建模型(參見圖 6)。


圖 6. GMF 工具模型


GMF 映射定義模型

所有工作都從映射定義模型 開始。在此模型中,我們將可視化(圖形)模型映射到業(yè)務(wù)邏輯(域模型)中。GMF 有一組有序向?qū)Э梢詭椭鷦?chuàng)建映射定義。請通過 File > New > Graphical Modeling Framework > Guide GMFMap Creation 調(diào)用這組向?qū)?。第一步要選擇所有 GMF 模型(參見圖 7)。


圖 7. GMFMap 向?qū)?1


接下來,向?qū)⒅悄艿靥崾疚覀冞x擇要使用哪個模型元素作為圖表根元素。在我們舉的例子中,此模型元素為 ShapesDiagram。


圖 8. GMFMap 向?qū)?2


最后,GMF 會像變魔術(shù)一樣算出哪些模型元素必須映射到哪些可視化元素上。


圖 9. GMFMap 向?qū)?3


自定義 GMF 映射

可以使用基本編輯器編輯 GMF 映射定義文件來添加更多高級自定義功能。要勇敢地去嘗試!

必須注意的是:這些向?qū)Э赡軙S著 GMF 的發(fā)展而改變。據(jù)說使用 GMF 自身提供的圖形化編輯器就可以幫助創(chuàng)建映射定義文件(和其他 GMF 模型)。

生成 GMF 編輯器

整個過程的最后一步也是最有趣的一步是生成圖形化編輯器。這需要您先通過映射定義模型創(chuàng)建一個 GMFGen 模型。然后,在映射定義文件上單擊鼠標右鍵并選擇 Create generator model...。這樣,一個包含使用圖形化編輯器所需的全部代碼的新項目就生成了。要使用圖形化編輯器,請啟動一個新的 Eclipse 運行時工作臺,然后轉(zhuǎn)到 File > New > Examples > Model Diagram(參見圖 10)。


圖 10. 模型向?qū)?/b>


模型文件創(chuàng)建后,您就應(yīng)當能夠使用生成的編輯器了(參見圖 11)。很不錯,是吧?


圖 11. 圖形編輯器


自定義 GMFGen 模型

通過映射定義文件獲得的 GMFGen 模型是可以根據(jù)需要加以修改的。例如,GMFGen 模型的屬性就可以使用屬性視圖進行編輯。GMFGen 模型還有可以控制生成代碼的命名規(guī)則、生成的編輯器是否支持打印功能及很多其他自定義操作的屬性。試試這些選項,然后根據(jù)您的需求對其進行自定義。

GMF 特點

必須注意的是:我們構(gòu)造并生成的編輯器僅用到了 GMF 功能的一小部分。您可以做很多改動來利用框架的高級功能。

例如,GMF 支持驗證。這句話的含義是:如果我們要限定圖形化模型,只許與每個模型元素有一個連接會怎樣?只允許相似的元素相互連接,還是對可用于圖形的名稱類型進行控制?GMF 完全能夠支持這些類型的驗證,甚至其他驗證。對于驗證,GMF 利用了 Eclipse Modeling Framework Technology(EMFT)來支持涉及使用 Java 代碼和對象約束語言(Object Constraint Language,OCL)來定義驗證器的情況。GMF 將給未通過驗證的文件安插錯誤標記,這類似于 Eclipse 對未編譯的 Java 文件的處理方法。要查看關(guān)于 GMF 支持內(nèi)容的更多信息,請參閱 參考資料。

回頁首

結(jié)束語

我的目的有兩個:一是展示支持模型驅(qū)動開發(fā)的 Eclipse Callisto 發(fā)行版中令人興奮的新的一面;二是讓您了解它有多棒,只需 15 分鐘就能在 Eclipse 中生成圖形化編輯器。


回頁首

下載

描述名字大小下載方法
Sample plug-inos-ecl-gmf.zip41KBHTTP

關(guān)于下載方法的信息


參考資料

學習

獲得產(chǎn)品和技術(shù)

討論

  • 如果要討論關(guān)于 EMF 方面的問題,那么您應(yīng)當首選 Eclipse Foundation 的 EMF 新聞組。

  • 訪問 Eclipse Foundation 的 GMF 新聞組,可以了解關(guān)于 GMF 的錯綜復雜的信息。

  • Eclipse 新聞組 為有興趣使用和擴展 Eclipse 的人準備了豐富的參考資料。

  • 通過參與 developerWorks blogs 加入 developerWorks 社區(qū)。

關(guān)于作者

Chris Aniszczyk 是 IBM Lotus 的軟件工程師,是 IBM 的 Extreme Blue 實習項目的畢業(yè)生。他是衷心的開放源碼支持者,并在 Gentoo Linux(http://www.gentoo.org)發(fā)行方面工作,是 Eclipse Modeling Framework Technology(EMFT)項目的參與者。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
生活服務(wù)
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服