GMF

GMF 教程 Mindmap 2

 ̄綄美尐妖づ 提交于 2019-12-10 17:53:03
对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

GMF之Shapes实例Part3:为结点Node设置图片或颜色

时光怂恿深爱的人放手 提交于 2019-12-10 17:39:39
1、把要用到的图片放在org.eclipse.myTest.shapes.diagram工程下的icons/custom文件夹下,我用的是ReserveShapeFigure.jpg,然后刷新这个工程。 2、我想要设置图片的元素是ReserveShape1,打开ReserveShape1EditPart.java,它在该工程的org.eclipse.myTest.shapes.diagram.edit.parts包下。 3、为ReserveShape1EditPart类添加静态成员变量,代码如下: /** * @generated NOT */ private static final ImageDescriptor descriptor = ShapesDiagramEditorPlugin .findImageDescriptor("icons/custom/ReserveShapeFigure.jpg"); private static final Image originalImage = descriptor.createImage(); public static final ImageData OrgImageData = originalImage.getImageData(); 4、在ReserveShape1EditPart

GMF之Shapes实例Part5:使用扩展点为指定类型结点添加右击菜单并改变图片

こ雲淡風輕ζ 提交于 2019-12-10 17:39:28
在Part4中我们为节点添加了右击菜单,但是使用这种方式会给所有节点都添加菜单。如果我们只想给某种类型的结点添加菜单,就要使用扩展点方式了。 1、首先新建一个Action:在工程org.eclipse.myTest.shapes.diagram中的Actions包中新建一个类ChangeImageAction,并使它继承AbstractActionDelegate类并实现接口IObjectActionDelegate,在这个Action中首先选择图片,然后再给指定结点改变图片,其完整代码如下: package org.eclipse.myTest.shapes.diagram.edit.actions; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.emf.transaction.RecordingCommand; import org.eclipse.emf.transaction.TransactionalEditingDomain; import org.eclipse.gmf.runtime.common.ui.action.AbstractActionDelegate; import org.eclipse.jface.viewers.IStructuredSelection;

GMF之Shapes实例Part4:为结点Node设置右击菜单并更换图片

柔情痞子 提交于 2019-12-10 17:39:17
在上一篇文章中,我们实现了为结点设置图片,但是我们还不能修改结点的图片,所有相同类型结点的图片是一样的。 本例首先给结点添加右击菜单,然后实现修改结点图片的功能。 1、修改ReserveShape1EditPart.java的部分代码,把descriptor、originalImage、OrgImageData声明处的static都去掉,否则修改一个结点之后,同类型的其他结点也会改变。 /** * @generated NOT */ private ImageDescriptor descriptor = ShapesDiagramEditorPlugin .findImageDescriptor("icons/custom/ReserveShapeFigure.jpg"); private Image originalImage = descriptor.createImage(); private ImageData OrgImageData = originalImage.getImageData(); 2、在ReserveShape1EditPart类中添加方法如下: /** * @generated NOT */ public void setImageData(String imagePath) { descriptor =

GMF之Shapes实例Part6:给结点添加图片并实现保存

ⅰ亾dé卋堺 提交于 2019-12-10 17:17:44
之前给结点设置图片都不能保存,下次打开后还是原来的图片。接下来就是实现永久保存,其实就是给Shape结点所对应的模型元素添加一个属性ID,这个ID的值在创建模型时确定,并且,我们选择图片后将图片复制到一个确定的文件夹下,图片名就是ID名。 1、给AbstractShape模型添加属性ID:修改工程org.eclipse.myTest.shapes下的models下的shapes.ecore_diagram,这样它所对应的shapes.ecore文件也会改变,为AbstractShape添加属性ID,类型是EString,具体操作参考GMF之Shapes实例Part1。 2、保存shapes.ecore_diagram,删除shapes.genmodel,重新创建一个shapes.genmodel,类似GMF之Shapes实例Part1中,别忘了设置Base Package为org.eclipse.myTest,然后重新生成Model Code、Edit Code和Editor Code,参考GMF之Shapes实例Part1。 3、在工程org.eclipse.myTest.shapes下的org.eclipse.myTest.shapes.util下新建一个类,用于产生一个全局唯一的ID: package org.eclipse.myTest.shapes.util;

GMF之Shapes实例Part1:创建一个GMF项目

痴心易碎 提交于 2019-12-10 16:46:32
接触GEF与GMF有一段时间了,感觉它们的功能还是很强大的,只是我学的比较慢。也许每个人的学习方法不一样,我比较习惯做简单的例子。今天下午也不干活了,写几篇关于GMF入门的博客。以后有时间会在该系列的前一篇博客的基础上更新。 GEF与GMF比较经典的例子是Shapes,在这里我自己创建一个Shapes示例,其中包含6种连线(其中两条是后备用的)、5种图形(也有两个是后备的),以后都是在它的基础上更新的。 PS:我的Eclipse已经安装了GMF插件。 1、创建一个GMF项目: File→New→Project,找到New GMF Project, 项目名为org.eclipse.myTest.shapes,并在下一步选中Show dashboard view for the created project : 最后在下一步单击Finish。 2、此时Eclipse打开了Dashboard,如下图,它是一个创建GMF的向导,在图中已经用数字标记了我们接下来的步骤: 3、创建Domain Model (1)点击Dashboard图中1处的Create,打开向导,选择模型目录文件以及输入名称,如下图: 接下来的都保持默认,完成创建。 在Package Explorer中双击打开shapes.ecore,展开platfform,选中展开得到的那个图标,在Properties中设置其属性: