文档章节

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
640
0
GMF 教程 Mindmap 5

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

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

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

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

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

匿名
2008/09/17
93.6K
6

没有更多内容

加载失败,请刷新页面

加载更多

Navicat 快捷键

操作 结果 ctrl+q 打开查询窗口 ctrl+/ 注释sql语句 ctrl+shift +/ 解除注释 ctrl+r 运行查询窗口的sql语句 ctrl+shift+r 只运行选中的sql语句 F6 打开一个mysql命令行窗口 ctrl+l 删除一行 ...

低至一折起
49分钟前
4
0
PyTorch入门笔记一

张量 引入pytorch,生成一个随机的5x3张量 >>> from __future__ import print_function>>> import torch>>> x = torch.rand(5, 3)>>> print(x)tensor([[0.5555, 0.7301, 0.5655],......

仪山湖
今天
5
0
OSChina 周二乱弹 —— 开发语言和语言开发的能一样么

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @花间小酌:#今日歌曲推荐# 分享The Score的单曲《Revolution》 《Revolution》- The Score 手机党少年们想听歌,请使劲儿戳(这里) @批判派...

小小编辑
今天
2.5K
19
oracle ORA-39700: database must be opened with UPGRADE option

ORA-01092: ORACLE instance terminated. Disconnection forced ORA-00704: bootstrap process failure ORA-39700: database must be opened with UPGRADE option 进程 ID: 3650 会话 ID: 29......

Tank_shu
今天
3
0
分布式协调服务zookeeper

ps.本文为《从Paxos到Zookeeper 分布式一致性原理与实践》笔记之一 ZooKeeper ZooKeeper曾是Apache Hadoop的一个子项目,是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它...

ls_cherish
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部