文档章节

GMF 教程 Mindmap 2

双子座
 双子座
发布于 2013/03/13 03:03
字数 845
阅读 1161
收藏 3

对Step1做补充操作,主要增加的功能:

为Topic结点添加划分(compartment),实现结点嵌套,使得可以在结点上半部显示结点名称,在下半部可以添加新的内容(这里是加入Thread子结点)

Graphical Definition

1、打开mindmap.gmfgraph,展开,右击Figure Gallery Default,选择New Child——Figure Descriptor,名称为RoundedTopicFigure。再右Figure Descriptor RoundedTopicFigure,选择New Child——Rounded Rectangle,名称也是RoundedTopicFigure,并将Corner Width和Height属性都设置成12。

2、设置默认的边框颜色:

右击Rounded Rectangle RoundedTopicFigure,选择New Child——Foreground Color RGB Color,设置属性为R=220,G=220,B=250,如下图:

3、后面会重用TopicFigure矩形,作为sticky结点的图形。找到Figure Descriptor TopicFigure结点,将它命名为StickyNoteFigure,添加背景颜色为R=250,G=250,B=190,并设置Label名称为StickyNoteNameFigure:

4、右击Rounded Rectangle RoundedTopicFigure,选择New Child——Label,设置名称为TopicNameFigure。再右击Rounded Rectangle RoundedTopicFigure,选择New Slibing——Child Accessor,设置Accessor属性为getFigureTopicNameFigure,Figure选择Label TopicNameFigure:

5、右击结点Canvas mindmap,选择New Child——Nodes Node,属性Name为Thread,Figure选择Figure Descriptor StickyNoteFigure:

然后将Topic Node的Figure选择为Figure Descriptor RoundedTopicFigure:

6、再右击结点Canvas mindmap,选择New Child——Labels Diagram Label,Name属性为ThreadName,Accessor属性为Child Access getFigureStickyNoteNameFigure,Figure属性为Figure Descriptor StickyNoteFigure,Element Icon属性为true:

同时设置TopicName的属性:

7、由于我们想要在Topic结点的一个划分中嵌套discussion threads结点,右击Canvas,选择New Child——Compartment,属性设置:Name为ThreadCompartment,Figure为RoundedTopicFigure,Collapsible为true,Needs Title为false:

8、Thread结点本身也是有划分的,以包含一列thread条目。同7一样创建一个新的compartment,各属性设置如下图:

这样,Topic结点将会是包含划分的圆角矩形,划分中会包含子矩形,这些子矩形也有划分,不过其中放置的是简单的一列条目,显示为Label。

9、找到Rectangle StickyNoteFigure的Flow Layout,设置属性如下图:

10、为SticyNodeFigure添加一个子Rectangle,名称为ThreadItems,并为它添加一个Stack layout。然后为StickyNoteFigure Figure Descriptor添加一个Child Access,用来接受子Rectangle,设置其Figure属性为Rectangle ThreadItems:

11、为Figure Gallery添加一个新的Figure Descriptor,命名ThreadItemLabelFigure,然后为ThreadItemLabelFigure添加一个Label,名称也是ThreadItemLabelFigure:

12、为Canvas创建一个Diagram Label,名为ThreadItemLabel,设置Figure属性为ThreadItemLabelFigure:

最终的版本参考下图:

Tooling Definition

13、添加工具,用于创建Thread结点和ThreadItems。

打开mindmap.gmftool,复制粘贴Topic工具,重命名为Thread;再复制一个,重命名为ThreadItem:

Mapping Definition

14、打开mindmap.gmfmap。首先为Topic Node Mapping添加一个新的Compartment映射,并设置Compartment属性为ThreadCompartment:

15、为Node Mapping添加Child Reference,设置Containment Feature属性如下图:

16、为上一步添加的Child Reference添加Node Mapping,属性设置如下图:

17、为Thread Node mapping添加一个Feature Label Mapping,属性如下:

18、为Thread Node Mapping添加一个ThreadItemCompartment Mapping,设置Compartment属性为ThreadItemCompartment:

19、为Thread Node Mapping添加一个Child Reference,设置Compartment属性如下:

20、为上面新添加的Child Reference添加一个Node Mapping:

21、为上面的ThreadItem Node Mapping添加一个Feature Label Mapping:

最终的mindmap.gmfmap文件结构如下:

22、此时,重新生成mindmap.gmfgen文件和diagram代码(可以借助GMF Dashboard),运行,效果如下图:

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

双子座@开源中国:http://my.oschina.net/plumsoft

© 著作权归作者所有

上一篇: GMF 教程 Mindmap 3
下一篇: GMF 教程 Mindmap 1
双子座
粉丝 540
博文 78
码字总数 61009
作品 0
南京
程序员
私信 提问
加载中

评论(1)

李李光
很好。我照着实现了。就是不知道是啥意思。看来需要思考一下。
文章里的问题,请帮忙解答下

@双子座 你好,想跟你请教个问题: 在 GMF 教程 Mindmap 1这篇文章里,在mindmap.gmfgen右击Generate diagram code时出现初始化类的错误 请问怎么解决,谢谢了...

操场和巷口
2013/12/31
9
1
GMF 教程 Mindmap 3

Link Constraints 目前为止,工程运行一个Topic结点给自己连线,显然是没有意义的。接下来通过使用约束,避免这种现象。 1、打开mindmap.gmfmap,找到目前唯一的Link Mapping结点,右击,选择...

双子座
2013/03/15
0
0
GMF 教程 Mindmap 5

这一部分主要实现的是: 使用扩展的Plug-in为我们的Diagram添加一个自定义动作 Creating a Customization Plug-in 尽管可以给生成的代码添加备注@generated NOT来避免下次重新生成代码时覆盖...

双子座
2013/03/17
0
0
MDSF:如何使用GMF来做TOGAF建模工具

在MDSF:架构工具简要功能说明中说到我要做一个支持TOGAF的架构工具,本篇介绍一下如何使用GMF来做一个简单的建模工具。 前提知识   如果你还不知道生成建模工具的基本过程以及基础知识,请...

技术小胖子
2017/11/14
0
0
思维导图软件--FreeMind

FreeMind是一套由Java撰写而成的实用的开源思维导图/心智(MindMap)软件,可用来帮助你整理思绪的工具软体,可将每一个环节用 图形表示,透过将思路图形化、结构化,帮助你对整个作业流程的了...

匿名
2008/09/17
82.9K
6

没有更多内容

加载失败,请刷新页面

加载更多

日志相关---日志配置和过滤器

一、log4j日志简介 1.1、 Loggers 级别和介绍 Loggers组件在此系统中被分为八个级别:ALL、TRANCE、DEBUG、INFO、WARN、ERROR和FATAL、OFF。这八个级别是有顺序的, ##off表示关闭ALL < T...

spinachgit
1分钟前
1
0
六个面试题层层剖析——LongAddr原子类

并发编程面试题 (1)LongAddr的结构是怎样的? (2)当前线程应该访问Cell数组里面的哪一个Cell元素? (3)如何初始化Cell数组? (4)Cell数组如何扩容? (5)线程访问分配的Cell元素有冲...

须臾之余
2分钟前
0
0
MySQL-入门(二)

本部分主要是MySQL的常用函数和高级用法。 一、MySQL排序 排序关键字:order by 排序字段。后面写上要排序字段,排序字段可以有多个,多个采用逗号间隔,order by默认采用升序(asc)排序,可...

潜行-L
13分钟前
0
0
BAM转VCF的方法对比

1 使用GATK HaplotypeCaller #java -jar gatk.jar HaplotypeCaller --native-pair-hmm-threads 4 -R xx.fa -I xx.bam -O xx.vcf --native-pair-hmm-threads用来设置多线程,默认为4线程 2 sa......

悲催的古灵武士
21分钟前
0
0
软件架构设计原则之“KISS”的总结使用

今天聊一聊软件架构设计中的 KISS 原则。 对! 就是亲嘴的那个 “KISS”! 一定要多练习。 ... ... ... ... 作为一个程序员我是推荐理解为“亲嘴”的,可以很好的解决单身问题,但作为一个架...

Owen_Jia
23分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部