GMF 教程 Mindmap 2

對Step1作補充操做,主要增長的功能: app

爲Topic結點添加劃分(compartment),實現結點嵌套,使得能夠在結點上半部顯示結點名稱,在下半部能夠添加新的內容(這裏是加入Thread子結點) 工具

Graphical Definition spa

一、打開mindmap.gmfgraph,展開,右擊Figure Gallery Default,選擇New Child——Figure Descriptor,名稱爲RoundedTopicFigure。再右Figure Descriptor RoundedTopicFigure,選擇New Child——Rounded Rectangle,名稱也是RoundedTopicFigure,並將Corner Width和Height屬性都設置成12。 .net

二、設置默認的邊框顏色: code

右擊Rounded Rectangle RoundedTopicFigure,選擇New Child——Foreground Color RGB Color,設置屬性爲R=220,G=220,B=250,以下圖: ip

三、後面會重用TopicFigure矩形,做爲sticky結點的圖形。找到Figure Descriptor TopicFigure結點,將它命名爲StickyNoteFigure,添加背景顏色爲R=250,G=250,B=190,並設置Label名稱爲StickyNoteNameFigure: get

四、右擊Rounded Rectangle RoundedTopicFigure,選擇New Child——Label,設置名稱爲TopicNameFigure。再右擊Rounded Rectangle RoundedTopicFigure,選擇New Slibing——Child Accessor,設置Accessor屬性爲getFigureTopicNameFigure,Figure選擇Label TopicNameFigure: it

五、右擊結點Canvas mindmap,選擇New Child——Nodes Node,屬性Name爲Thread,Figure選擇Figure Descriptor StickyNoteFigure: io

而後將Topic Node的Figure選擇爲Figure Descriptor RoundedTopicFigure: thread

六、再右擊結點Canvas mindmap,選擇New Child——Labels Diagram Label,Name屬性爲ThreadName,Accessor屬性爲Child Access getFigureStickyNoteNameFigure,Figure屬性爲Figure Descriptor StickyNoteFigure,Element Icon屬性爲true:

同時設置TopicName的屬性:

七、因爲咱們想要在Topic結點的一個劃分中嵌套discussion threads結點,右擊Canvas,選擇New Child——Compartment,屬性設置:Name爲ThreadCompartment,Figure爲RoundedTopicFigure,Collapsible爲true,Needs Title爲false:

八、Thread結點自己也是有劃分的,以包含一列thread條目。同7同樣建立一個新的compartment,各屬性設置以下圖:

這樣,Topic結點將會是包含劃分的圓角矩形,劃分中會包含子矩形,這些子矩形也有劃分,不過其中放置的是簡單的一列條目,顯示爲Label。

九、找到Rectangle StickyNoteFigure的Flow Layout,設置屬性以下圖:

十、爲SticyNodeFigure添加一個子Rectangle,名稱爲ThreadItems,併爲它添加一個Stack layout。而後爲StickyNoteFigure Figure Descriptor添加一個Child Access,用來接受子Rectangle,設置其Figure屬性爲Rectangle ThreadItems:

十一、爲Figure Gallery添加一個新的Figure Descriptor,命名ThreadItemLabelFigure,而後爲ThreadItemLabelFigure添加一個Label,名稱也是ThreadItemLabelFigure:

十二、爲Canvas建立一個Diagram Label,名爲ThreadItemLabel,設置Figure屬性爲ThreadItemLabelFigure:

最終的版本參考下圖:

Tooling Definition

1三、添加工具,用於建立Thread結點和ThreadItems。

打開mindmap.gmftool,複製粘貼Topic工具,重命名爲Thread;再複製一個,重命名爲ThreadItem:

Mapping Definition

1四、打開mindmap.gmfmap。首先爲Topic Node Mapping添加一個新的Compartment映射,並設置Compartment屬性爲ThreadCompartment:

1五、爲Node Mapping添加Child Reference,設置Containment Feature屬性以下圖:

1六、爲上一步添加的Child Reference添加Node Mapping,屬性設置以下圖:

1七、爲Thread Node mapping添加一個Feature Label Mapping,屬性以下:

1八、爲Thread Node Mapping添加一個ThreadItemCompartment Mapping,設置Compartment屬性爲ThreadItemCompartment:

1九、爲Thread Node Mapping添加一個Child Reference,設置Compartment屬性以下:

20、爲上面新添加的Child Reference添加一個Node Mapping:

2一、爲上面的ThreadItem Node Mapping添加一個Feature Label Mapping:

最終的mindmap.gmfmap文件結構以下:

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

代碼:http://www.oschina.net/code/snippet_164134_19157

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

相關文章
相關標籤/搜索