文档章节

GMF 教程 Mindmap 4

双子座
 双子座
发布于 2013/03/16 18:27
字数 858
阅读 462
收藏 0

这一部分主要实现的是:

替换图标
使用graphical definition添加一个混合图形

New Icons

1、替换图标。替换图标最简单的方法是将org.eclipse.gmf.examples.mindmap.edit\icons文件夹下的GIF的图像换了。

除了这个方法,比如想要替换Creation Tool Subtopic的默认图标,可以将准备好的图片Subtopic.gif放在/icons/full/obj16/Subtopic.gif目录下,然后在mindmap.gmftool中,删除Creation Tool Subtopic下的Default Image,为之添加Small Icon Bundle Image,设置属性如下:

2、重新生成mindmap.gmfgen文件。 在mindmap.gmfgen中,设置默认的向导和文件图标(或者直接替换掉org.eclipse.gmf.examples.mindmap.diagram工程下的\icons\obj16\ MindmapDiagramFile.gif),并将Diagram File Extension属性改成mmd:

3、重新生成diagram工程代码,运行,可以看到使用了新图标:

Composite Figures

现在要实现的是在上图中可以添加一个角色性的图形,用来代表资源。

Graphical Definition

4、打开mindmap.gmfgraph文件,向Figure Gallery中添加一个Figure Descriptor,并在Figure Descriptor中添加一个Rectangle,都命名为ResourceFigure。将它的Outline和Fill属性都设置为false。

5、接下来要给这Rectangle添加很多Child,这个Rectangle是作为这些所有Child的容器。例如,要给这Rectangle添加XY Layout和Ellipse作为头部,添加Polygon作为身体,还要设置大小。可以使用text editor方式打开mindmap.gmfgraph文件,将下面的代码加到文件中:

<descriptors name="ResourceFigure">
    <actualFigure xsi:type="gmfgraph:Rectangle" name="ResourceFigure"
        outline="false" fill="false">
        <layout xsi:type="gmfgraph:StackLayout" />
        <children xsi:type="gmfgraph:Rectangle" name="Resource"
            outline="false" fill="false">
            <layout xsi:type="gmfgraph:FlowLayout" vertical="true"
                forceSingleLine="true" minorAlignment="CENTER" majorSpacing="0"
                minorSpacing="0" />
            <children xsi:type="gmfgraph:Ellipse" name="Head">
                <foregroundColor xsi:type="gmfgraph:RGBColor" red="220"
                    green="220" blue="250" />
                <backgroundColor xsi:type="gmfgraph:RGBColor" red="230"
                    green="230" blue="255" />
                <size x="40" y="20" />
            </children>
            <children xsi:type="gmfgraph:Polygon" name="Body">
                <foregroundColor xsi:type="gmfgraph:RGBColor" red="220"
                    green="220" blue="250" />
                <backgroundColor xsi:type="gmfgraph:RGBColor" red="230"
                    green="230" blue="255" />
                <size x="40" y="36" />
                <template x="23" />
                <template x="23" y="5" />
                <template x="39" y="5" />
                <template x="39" y="10" />
                <template x="23" y="10" />
                <template x="23" y="17" />
                <template x="39" y="29" />
                <template x="39" y="34" />
                <template x="20" y="23" />
                <template x="1" y="34" />
                <template x="1" y="29" />
                <template x="17" y="17" />
                <template x="17" y="10" />
                <template x="1" y="10" />
                <template x="1" y="5" />
                <template x="17" y="5" />
                <template x="17" />
                <template x="23" />
            </children>
        </children>
    </actualFigure>
</descriptors>

6、在Canvas中添加一个Node,命名为Resource,并设置其Figure属性为ResourceFigure。
给Figure Gallery添加一个Figure Descriptor,并在Figure Descriptor中添加一个Label,都命名为BasicLabelFigure。

7、给 Canvas添加Diagram Label,命名为ResourceLabel,选择相应属性。注意这个Label不是作为图形的子元素,而是在它的外部,因此可以随意给它设置位置。

8、再给Rectangle ResourceFigure添加一个Label,设置Name属性为ResourceLabel,Text属性为Resource。

Tooling Definition

9、打开mindmap.gmftool,添加一个工具:

Mapping Definition

10、打开mindmap.gmfmap文件,为Mapping结点添加一个Top Node Reference,并选择Containment Feature属性为Map.resources:Resource。再向这个Top Node Reference添加一个Node Mapping,属性设置如下:

11、给这个Node Mapping添加一个Feature Label Mapping,属性如下图:

这样设置的目的是允许一个资源的标签显示为name [email@some.com]。

Generation

12、重新生成mindmap.gmfgen文件和Diagram代码,运行:

PS:目前只能达到这个效果,标签比较长的话只能显示在右下方,不知道怎么让Someone[someone@some.com]标签显示在图形的正下方。

源码:http://www.oschina.net/code/snippet_164134_19278

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

© 著作权归作者所有

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

评论(3)

双子座
双子座 博主

引用来自“zlf424”的评论

楼主你好,请问“目前只能达到这个效果,标签比较长的话只能显示在右下方,不知道怎么让Someone[someone@some.com]标签显示在图形的正下方”的问题解决了没有?
我现在正需要做一个外部的Label,最好初始化的时候就放在图元顶端靠左位置,请问您知道怎怎么做吗 谢谢

因为最近挺忙的,没有时间研究这个,所以,不好意思啊~
z
zlf424
楼主你好,请问“目前只能达到这个效果,标签比较长的话只能显示在右下方,不知道怎么让Someone[someone@some.com]标签显示在图形的正下方”的问题解决了没有?
我现在正需要做一个外部的Label,最好初始化的时候就放在图元顶端靠左位置,请问您知道怎怎么做吗 谢谢
z
zlf424
1
文章里的问题,请帮忙解答下

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

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

对Step1做补充操作,主要增加的功能: 为Topic结点添加划分(compartment),实现结点嵌套,使得可以在结点上半部显示结点名称,在下半部可以添加新的内容(这里是加入Thread子结点) Graphi...

双子座
2013/03/13
0
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

没有更多内容

加载失败,请刷新页面

加载更多

代码规范

代码格式化 安装vscode插件:Prettier - Code formatter 格式化配置:将下列配置写入到vscode的settings.json文件 (遵照代码格式化) "prettier.disableLanguages": ["vue"], "prettier.......

TreeZhou0511
38分钟前
3
0
python实现人工神经网络的一个例子

人工神经网络已经有无数的开源框架,比如tensorflow,caffe等,可以直接用。但最近需要做一个小样例,把基本思想讲一讲,因此自己写了一个demo,以供参考。 下面直接上代码,代码中有注释,比...

propagator
42分钟前
3
0
远程dubugger

1、在tomcat的bin下/data/project/XXX/apache-tomcat-8.5.23/bin 在catalina.bat文件中新增如下即可 JAVA_OPTS="-Xmx1024m -Xms1024m -agentlib:jdwp=transport=dt_socket,server=y,suspend......

一只小青蛙
59分钟前
1
0
jemter 连接MySQL

jemter 连接MySQL 点击测试计划,测试计划最后”添加目录或jar包到ClassPath“,点击浏览,添加mysql-connector.jar mysql-connector.jar的下载地址: https://mvnrepository.com/artifact/my...

xiaobai1315
今天
5
0
第一次尝试用python实现zabbix主机的批量添加批量删除及模板导入脚本

Python3入门练手尝试篇 API参考: zabbix API 4.0版本:https://www.zabbix.com/documentation/4.0/zh/manual/api #!/bin/python3import xlrd,os,json,requests,sys#参考zabbix API 4.0版本......

平头哥-Enjoystudy
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部