昨天一哥们碰到一个问题,他用gmf做的编辑器有个connection,这个connection很特殊,它的source和target都是connection,这个connection删除的时候只是不显示了,
下次打开diagram的时候还是存在的,经观察,点击右键的时候有两个删除选项分别是:
delete From Diagram(别的点完之后这个是disable的)和delete From Model。而点delete的时候默认执行的是delete From Diagram,
这样不会删除对应模型,也就导致了上面的问题。我先是想办法让与delete From Diagram对应的Action不被加到右键
菜单上(如果能让它的etCommand()方法返回null问题也解决了,但是没做到。。。),用如下扩展点
<extension point="org.eclipse.gmf.runtime.common.ui.services.action.contributionItemProviders">
<?gmfgen generated="true"?>
<contributionItemProvider
class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContributionItemProvider"
checkPluginLoaded="false">
<Priority name="Low"/>
<popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider">
<popupStructuredContributionCriteria objectClass="kmPkg.diagram.edit.parts.KAssociationBetweenVariablesEditPart"/>
<popupPredefinedItem id="deleteFromDiagramAction" remove="true"/>
</popupContribution>
</contributionItemProvider>
</extension>
发现那个菜单是没了,但问题依然没有解决。于是继续debug,看看别的按delete的时候和这个按delete的时候到底有什么区别,经过了一夜加一个早上的奋战终于发现,原因出在,别的Connection删除的时候ConnectionEditPolicy#shouldDeleteSemantic()返回的是true,也就是删除对应模型的意思,而这个删除的时候
上面的方法返回false。。。。
于是在Connection对应的EditPart上重新安装如下policy
protected void createDefaultEditPolicies() {
super.createDefaultEditPolicies();
installEditPolicy(EditPolicy.CONNECTION_ROLE,
new MyConnectionEditPolicy());
//install other policy
}
MyConnectionEditPolicy 的代码如下,让shouldDeleteSemantic返回true
import org.eclipse.gmf.runtime.diagram.ui.internal.editpolicies.ConnectionEditPolicy;
public class MyConnectionEditPolicy extends ConnectionEditPolicy{
@Override
protected boolean shouldDeleteSemantic() {
return true;
}
}
然后运行发现删除(按delete)的时候弹出个对话框,意思就是这样做会连模型也删除,如果只想从diagram中删除,请点右键。。。
选择yes,然后把复选框勾上,下次就不会看到这个对话框了。
一切恢复正常:)
如果想知道具体原因,请看DeleteFromDiagramAction#isCanonical方法和ConnectionEditPolicy#shouldDeleteSemantic()方法
注:如果不想从菜单中去掉delete From Diagram,不用扩展那个扩展点
分享到:
相关推荐
GMF(Generic Model Framework)是Eclipse平台下的一款强大的图形建模框架,它为开发者提供了构建图形用户界面(GUI)的工具,特别是用于创建复杂的图形编辑器和图表应用程序。GMF 1.7是最新的版本,它在前一版本的...
【GMF教程】GMF(Graphics Modeling Framework)是Eclipse平台下的一个图形建模框架,用于构建基于模型的图形编辑工具。本教程是基于英文教程的实践与翻译,旨在帮助读者理解并掌握如何使用GMF创建一个Mindmap编辑器...
【GMF Tutorial中文版】是一套面向初学者的Eclipse GMF(Graphical Modeling Framework)入门教程。GMF是Eclipse建模项目的一个子项目,它的主要目标是为Eclipse Modeling Framework (EMF)和Graphical Editing ...
10. **社区支持**:由于GMF是开源项目,用户可以访问其官方文档和社区论坛获取帮助,与其他开发者交流经验,共同解决遇到的问题。 总之,"GMF数据表建模例子"是一个宝贵的教育资源,它结合了Eclipse的模型框架和...
GMF(Generic Modeling Framework)是Eclipse Modeling Framework (EMF)的一个扩展,它提供了一种通用的方法来构建基于模型的应用程序。GMF旨在简化图形用户界面(GUI)的开发,特别是那些涉及图表编辑和可视化任务...
GMF的出现解决了这个问题,它为开发者提供了一个图形化的开发环境,使得创建基于EMF和GEF的图形化编辑器变得更加直观和快速。同时,GMF保持了灵活性,如果遇到GMF不能满足需求的情况,可以直接利用底层的GEF和EMF...
Eclipse GMF(Graphics Modeling Framework)是Eclipse平台下的一个开源工具,用于构建图形化建模和编辑环境。本教程将带你快速掌握Eclipse GMF的核心概念和使用方法,让你在15分钟内对GMF有初步的认识。 一、...
《深入解析Eclipse GMF RAR技术》 在软件开发领域,Eclipse是一个广泛使用的集成开发环境(IDE),而GMF(Graphical Modeling Framework)则是Eclipse社区提供的一款强大的图形建模框架。本文将深入探讨GMF中的RAR...
更重要的是,直接下载平台可以规避因API变动导致的兼容性问题,确保学习过程的连续性和效率。 #### Taipan实例:从零到精通的实战演练 无论采取哪种安装方式,运行Taipan实例还需要额外安装完整的GMF SDK 2.0.0。...
GMF,全称为Generic Mapping Tools,是一个开源的地理信息系统,用于创建、编辑和展示地理数据。这个工具在地学、环境科学以及地球物理学等领域广泛应用,因其强大的地图制作和数据分析功能而受到专业人士的喜爱。本...
Eclipse插件GMF,全称为Graphical Modeling Framework,是Eclipse平台上的一个重要组成部分,主要用于构建可视化的建模工具。这个框架提供了一种强大的方式,让开发者能够创建出具有图形界面的模型编辑器,用于设计...
- 这种配置调整有助于解决Eclipse启动时可能出现的内存不足问题。 #### 五、GMF架构解析 - **概念模型(conceptual model)**:这是GMF的核心部分,它定义了图形元素及其属性,与具体的领域模型(domain model)分离,...
在此背景下,图形建模框架GMF的出现为解决这些问题提供了一个理想的方案。 #### GMF框架概述 ##### EMF与GEF简介 在深入了解GMF之前,有必要先了解EMF和GEF这两个Eclipse插件项目的基本概念: - **Eclipse建模...
在Eclipse中,GEF(Graphical Editing Framework)、VE(Visual Editor)和GMF(Graphical Modeling Framework)是三个重要的插件或框架,主要用于图形化界面设计和建模。 1. GEF(Graphical Editing Framework) ...
### GMF 开发 FSM 的完整实例解析 #### 引言 GMF(Graphical Modeling Framework)是Eclipse项目的一部分,它提供了一套完整的工具和框架用于创建图形化编辑器,帮助开发者快速构建复杂的模型编辑器。本文档将通过...
### GMF开发文档知识点概述 #### 一、GMF简介 **GMF (Graphical Modeling Framework)** 是一种基于Eclipse的框架,用于构建图形编辑器。它为开发人员提供了创建和定制图形用户界面(GUI)的功能,使得创建复杂的...
【标题】:“一个简单的GMF实例” 在IT领域,GMF(Graphical Modeling Framework)是Eclipse项目的一部分,主要用于创建图形化编辑器。这个“一个简单的GMF实例”可能是一个教程或者示例项目,旨在帮助开发者理解...
GMF(Graphical Modeling Framework)是Eclipse基金会推出的一个开源项目,主要用于构建图形化建模工具。这个"gmf-runtime-2.1.2.zip"压缩包文件包含了Eclipse图形化开发插件GMF的运行时组件,版本为2.1.2。此插件...