树形

GMF树形布局 3 展开/折叠时更换Node图标

不问归期 提交于 2020-04-07 12:39:49
前一篇博客实现了展开/折叠,但是如果当节点折叠时图标可以发生变化,例如变成加号,那就直观了。这篇博客解决这个问题。 具体步骤如下: 1、首先,将两个图标文件放在diagram工程下的icons\custom下,并刷新这个工程,如下图所示: 2、修改Topic节点图标的地方,在TopicNameEditPart中的getLabelIcon()方法中,需要将它修改。具体思路是:检查其父类即 TopicEditPart所对应的的模型的isExpanded成员变量,如果是false,则返回加号图像,否则,返回Topic图像。 修改 getLabelIcon()方法如下: /** * @generated NOT */ protected Image getLabelIcon() { EObject parserElement = getParserElement(); if (parserElement == null) { return null; } return this.createLabelIconImage(); } 3、在 TopicNameEditPart中添加createLabelIconImage()方法: /** * 根据父模型,创建标签图标 */ private Image createLabelIconImage() { Image labelIconImage

GMF树形布局 2 实现展开/折叠

我的未来我决定 提交于 2020-04-07 12:10:23
这一篇博客在上一篇的基础上,实现展开/折叠功能。期待的最终效果是,双击某一Node,其后面的Node与连线都隐藏;再双击时显示回来。并且折叠之后,保存关闭,下次打开时还处于折叠状态,可以正确展开。 有一个细节应当注意,如下图: 比如折叠了节点1之后再折叠节点0,之后再展开节点0的时候,节点1应当还是处于折叠状态。 具体步骤如下: 1、为了实现这个展开/折叠操作,并且方便以后实现图标的更换,可以在节点的模型文件中添加一个布尔型的变量expanded,用于标识展开状态。可以在模型文件中修改,然后重新生成Model Code以及Edit Code,具体操作可以参考 这里 的步骤1、2。注意,将 expanded的默认值设为true。 2、创建一个Command,用于实现折叠或者展开。先在diagram工程下的src目录下新建一个package,名为org.eclipse.gmf.examples.mindmap.diagram.edit.commands.custom,在其中新建一个class文件,名为ExpandOrCollapseCommand,继承自RecordingCommand。 3、ExpandOrCollapseCommand的构造函数如下,获取 public ExpandOrCollapseCommand( TransactionalEditingDomain