GMF 教程 Mindmap 3

Link Constraints app

目前爲止,工程運行一個Topic結點給本身連線,顯然是沒有意義的。接下來經過使用約束,避免這種現象。 工具

一、打開mindmap.gmfmap,找到目前惟一的Link Mapping結點,右擊,選擇New Child > Link Constraints,而後右擊這個Link Constraints,選擇New Child > Source End Constraint,Language屬性默認爲ocl,設置Body屬性爲self <> oppositeEnd,以下圖所示: spa

二、從新設成mindmap.gmfgen和diagram代碼,運行一下,能夠發現不能夠給Topic結點本身連線了。 .net

Another Connection code

領域模型中的Relationship元素用來指明Topic元素之間若干可能的關係。接下來將要實現支持畫出這個連線。這個例子將會更徹底地說明GMF中的Link Mapping可用的屬性。 orm

Graphical Definition ip

三、打開mindmap.gmfgraph,右擊Figure Gallery,選擇New Child > Figure Descriptor,命名爲DashedLineOpenArrow。而後右擊新建的Figure Descriptor,選擇New Child > Polyline Connection,將其命名爲DashedLineOpenArrow,將Line Kind改爲LINE_DASH。以後右擊Figure Gallery,添加Polyline Decoration,命名爲OpenArrow。默認的Decoration是一個打開的箭頭,而Polygon Decoration是一個填充的三角形。最後將DashedLineOpenArrow的Target Decoration設置爲OpenArrow: get

四、如今定義好了圖形,爲Canvas建立一個Connection,命名爲RelationshipLink,設置Figure屬性爲DashedLineOpenArrow: 源碼

五、咱們但願subtopics結點的連線沒有箭頭,因此刪除Figure Gallery中的TopicsSubtopicsTargetDecoration元素。 it

Tooling Definition

六、打開mindmap.gmftool文件,在Palette下建立一個Tool Group,命名爲Links,並在這個Tool Group中添加一個Creation Tool,命名爲Relationship,將TopicSubtopics工具拖到Links分組中,名重命名爲Subtopic。最後將mindmap工具組的名稱改成Nodes。將兩個Tool Group的Collapsible屬性都設置爲true。

Mapping Definition

因爲以前修改了Tool模型,須要在mapping definition中更新已存在的工具選擇。能夠右擊mindmap.gmfmap,選擇Validate,以檢查出錯的地方。

七、打開mindmap.gmfmap文件,建立一個Link Mapping,屬性設置以下:

在上面的屬性列表中,Domain meta information中的Element屬性表示這個Link所表明的的領域中的元素。而在上一個Link中,這個屬性是空的,這種情形下,Link的目標元素是由添加到源元素一列參照中的元素表示的。而在上面的屬性設置中,Link在領域中是由它本身的類表示的,所以在Link映射中須要更多的信息。領域模型的Relationship類,是包含在Map元素的一列參照中。

八、此時,從新生成mindmap.gmfgen文件和diagram代碼(能夠藉助GMF Dashboard),運行,效果以下圖:

咱們如今須要作的事,當建立Link的時候,爲其初始化適當的類型。咱們將會對每個使用分別的工具,也能夠選擇使用清楚的可視化。如今,咱們將簡單的給Link添加標籤,用來標示類型。

Feature Initializers

在咱們graphical definition中,咱們將爲每個類型建立一個圖像和相應的連線,一樣在tooling definition中也會爲每一個類型建立工具。

另外一個初始化時設置Relationship的標籤屬性,這樣便於區分類型。

Graphical Definition

九、打開mindmap.gmfgraphy,在Figure Gallery添加一個Figure Descriptor和一個Label,將它們都命名爲DashedLineLabelFigure,而後右擊Canvas,添加一個新的Diagram Label,命名爲RelationshipLabel,並將Figure屬性選擇爲DashedLineLabelFigure,並將Element Icon屬性設置爲false:

十、打開mindmap.gmftool文件,將Relationship工具重命名爲Dependency(順便把Description屬性改了),而後使用複製粘貼添加兩個工具Includes和Extends:

Mapping Definition

十一、打開mindmap.gmfmap,將Relationship Link映射的工具改爲Extends。

十二、爲這個Link Mapping添加Feature Seq Initializer和Constraint,添加相關內容,設置以下:

實際上,對一個領域模型建立多個映射的時候,都要添加Constraint。

1三、最後爲這個Link Mapping添加Feature Label Mapping:

1四、而後複製粘貼這個Link Mapping兩次,將相關屬性改爲dependency和includes。注意修改相應Link Mapping的Tool屬性。

1五、此時,若從新生成mindmap.gmfgen和diagram代碼,運行效果以下圖:

源碼: http://www.oschina.net/code/snippet_164134_19253

雙子座@開源中國:http://my.oschina.net/plumsoft

相關文章
相關標籤/搜索