博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GMF 教程 Mindmap 5
阅读量:6719 次
发布时间:2019-06-25

本文共 2446 字,大约阅读时间需要 8 分钟。

hot3.png

这一部分主要实现的是:

使用扩展的Plug-in为我们的Diagram添加一个自定义动作

Creating a Customization Plug-in

尽管可以给生成的代码添加备注@generated NOT来避免下次重新生成代码时覆盖我们修改的代码,除此之外,还可以使用一个新的Plug-in工程来将自定制(扩展)与生成的工程分离。

1、创建一个新的Plug-in工程,命名为org.eclipse.gmf.examples.mindmap.diagram.custom,使用默认的设置,不要Activator类,也不用向导提供的任何模板。

Custom Actions

目前为止创建一个新的Subtopic的方法比较麻烦,需要频繁点击工具。现在希望给Topic结点添加右击菜单项Create Subtopic来实现这个操作,直接创建Subtopic结点,包括连线。

首先,我们要知道,org.eclipse.ui.bindings可以用来将Ctrl+I组合键(或者其他组合键)分配给我们的Action。可以通过修改diagram.custom工程的plugin.xml文件来实现。不过刚创建的新工程没有这个文件,不过没关系。

2、打开diagram.custom工程的MAINIFEST.MF,选择标签Extension,单击Add,添加org.eclipse.ui.bindings扩展点:

3、其实之前单击Add的时候,就会自动创建plugin.xml文件了。然后可以直接编辑这个文件,在<plugin>标签之间添加内容:

4、为了这个命令,需要使用org.eclipse.ui.command扩展点。在plugin.xml文件中添加如下内容:

5、现在,为了弹出菜单,要使用org.eclipse.ui.popupMenus扩展点

6、不过,为了使生效,要在MAINIFEST.MF加入:

Import-Package: org.eclipse.gmf.examples.mindmap.diagram.edit.parts

7、现在,如果运行程序,右击Topic结点,可以看到上下文菜单多了Insert:

8、之后,要实现那个Action。

在diagram.custom工程的src下创建包org.eclipse.gmf.examples.mindmap.diagram.part,然后创建类MindmapCreateSubtopicAction,完整代码在后边的下载地址。

不过,要按照提示添加各种Import-package,参考下图:

注意要添加左边的org.eclipse.gmf.runtime.diagram.ui,否则程序会提示org.eclipse.gmf.runtime.notation.View cannot be resolved。

9、此时运行程序,先创建一个Topic结点,然后右击,选择Insert——Subtopic,会自动在右上方的创建一个Topic结点,并带有连线:

Custom Layout

默认的布局并不适合mindmap。下面要实现的是给diagram添加一个自定义的布局,虽然很简单,但是却指明了方法。还是会使用扩展点来实现。

我们将会尝试两中布局:一个是继承自

org.eclipse.gmf.runtime.diagram.ui.providers.LeftRightProvider

另一个继承自

org.eclipse.gmf.runtime.diagram.ui.providers.internal.RadialProvider

10、在工程的dependancies中加入org.eclipse.gmf.runtime.diagram.ui.providers。

11、在plugin.xml中加入扩展:

12、然后创建包org.eclipse.gmf.examples.mindmap.diagram.layout,在包中创建两个类MindmapDefaultLayoutProvider和MindmapRadialLayoutProvider,代码见下载地址。

运行,但是我看不出来有什么效果。

Removing Tools from the Palette

13、如果不想要palette上的Notes和Zoom工具,可以在自定义的工程中使用paletteProvider扩展点来实现移除这些工具。在diagram.custom工程的plugin.xml加入:

14、此时运行的话,会发现只有Select工具还在palette上,而原来的Note工具和缩放工具都移除了:

源码:

双子座@开源中国:

转载于:https://my.oschina.net/plumsoft/blog/114354

你可能感兴趣的文章
Windows 10 Redstone 终将引入交互式动态瓷贴
查看>>
《机器人与数字人:基于MATLAB的建模与控制》——3.1节平移和旋转
查看>>
《途客圈创业记:不疯魔,不成活》一一1.3 iWeekend创业周末
查看>>
《精通SNMP》——2.4 标签类型和子类型
查看>>
《云数据中心构建实战:核心技术、运维管理、安全与高可用》——导读
查看>>
《Python自动化运维:技术与最佳实践》一2.4 探测Web服务质量方法
查看>>
《Android UI基础教程》——2.4节显示列表
查看>>
《Scala机器学习》一一1.5 使用Scala和Spark的Notebook工作
查看>>
Fast-FrameWork v0.1.1,JDK 8 MVC 框架
查看>>
《IP组播(第1卷)》一导读
查看>>
《高效能程序员的修炼》一学会读源代码
查看>>
3大军团、266个项目,菜鸟技术如何玩转双11项目管理?
查看>>
魅族隔空回应雷军:开放 Flyme 对抗 MIUI
查看>>
成为阿里云大使的笔记
查看>>
《深入解析IPv6(第3版)》——2.10 参考文献
查看>>
《Adobe Illustrator CC经典教程》—第0课0.16节使用文字
查看>>
企业安全:从触觉时代到视觉时代
查看>>
Oracle Dataguard在阿里云ecs上的测试
查看>>
《Python数据科学实践指南》——0.3 为什么是Python
查看>>
《混合云计算》——2.4 检查云集成的需求
查看>>