`
zhaozhongwei
  • 浏览: 54548 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

gmf特殊connection删除的问题

    博客分类:
  • gmf
阅读更多

昨天一哥们碰到一个问题,他用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 1.7 最新版的gmf

    GMF(Generic Model Framework)是Eclipse平台下的一款强大的图形建模框架,它为开发者提供了构建图形用户界面(GUI)的工具,特别是用于创建复杂的图形编辑器和图表应用程序。GMF 1.7是最新的版本,它在前一版本的...

    GMF教程.doc

    【GMF教程】GMF(Graphics Modeling Framework)是Eclipse平台下的一个图形建模框架,用于构建基于模型的图形编辑工具。本教程是基于英文教程的实践与翻译,旨在帮助读者理解并掌握如何使用GMF创建一个Mindmap编辑器...

    GMF Tutorial中文版

    【GMF Tutorial中文版】是一套面向初学者的Eclipse GMF(Graphical Modeling Framework)入门教程。GMF是Eclipse建模项目的一个子项目,它的主要目标是为Eclipse Modeling Framework (EMF)和Graphical Editing ...

    GMF数据表建模例子

    10. **社区支持**:由于GMF是开源项目,用户可以访问其官方文档和社区论坛获取帮助,与其他开发者交流经验,共同解决遇到的问题。 总之,"GMF数据表建模例子"是一个宝贵的教育资源,它结合了Eclipse的模型框架和...

    GMF EMF

    GMF(Generic Modeling Framework)是Eclipse Modeling Framework (EMF)的一个扩展,它提供了一种通用的方法来构建基于模型的应用程序。GMF旨在简化图形用户界面(GUI)的开发,特别是那些涉及图表编辑和可视化任务...

    GMF实例解析.pdf

    GMF的出现解决了这个问题,它为开发者提供了一个图形化的开发环境,使得创建基于EMF和GEF的图形化编辑器变得更加直观和快速。同时,GMF保持了灵活性,如果遇到GMF不能满足需求的情况,可以直接利用底层的GEF和EMF...

    15 分钟学会 Eclipse GMF

    Eclipse GMF(Graphics Modeling Framework)是Eclipse平台下的一个开源工具,用于构建图形化建模和编辑环境。本教程将带你快速掌握Eclipse GMF的核心概念和使用方法,让你在15分钟内对GMF有初步的认识。 一、...

    org.eclipse.gmf.rar

    《深入解析Eclipse GMF RAR技术》 在软件开发领域,Eclipse是一个广泛使用的集成开发环境(IDE),而GMF(Graphical Modeling Framework)则是Eclipse社区提供的一款强大的图形建模框架。本文将深入探讨GMF中的RAR...

    GMF实例解析(PDF版)

    更重要的是,直接下载平台可以规避因API变动导致的兼容性问题,确保学习过程的连续性和效率。 #### Taipan实例:从零到精通的实战演练 无论采取哪种安装方式,运行Taipan实例还需要额外安装完整的GMF SDK 2.0.0。...

    GMF相关资料

    GMF,全称为Generic Mapping Tools,是一个开源的地理信息系统,用于创建、编辑和展示地理数据。这个工具在地学、环境科学以及地球物理学等领域广泛应用,因其强大的地图制作和数据分析功能而受到专业人士的喜爱。本...

    Eclipse插件 GMF

    Eclipse插件GMF,全称为Graphical Modeling Framework,是Eclipse平台上的一个重要组成部分,主要用于构建可视化的建模工具。这个框架提供了一种强大的方式,让开发者能够创建出具有图形界面的模型编辑器,用于设计...

    GMF Tourial中文版(一)

    - 这种配置调整有助于解决Eclipse启动时可能出现的内存不足问题。 #### 五、GMF架构解析 - **概念模型(conceptual model)**:这是GMF的核心部分,它定义了图形元素及其属性,与具体的领域模型(domain model)分离,...

    图形建模框架GMF综述

    在此背景下,图形建模框架GMF的出现为解决这些问题提供了一个理想的方案。 #### GMF框架概述 ##### EMF与GEF简介 在深入了解GMF之前,有必要先了解EMF和GEF这两个Eclipse插件项目的基本概念: - **Eclipse建模...

    eclipse gef ve gmf

    在Eclipse中,GEF(Graphical Editing Framework)、VE(Visual Editor)和GMF(Graphical Modeling Framework)是三个重要的插件或框架,主要用于图形化界面设计和建模。 1. GEF(Graphical Editing Framework) ...

    GMF开发FSM的完整的例子

    ### GMF 开发 FSM 的完整实例解析 #### 引言 GMF(Graphical Modeling Framework)是Eclipse项目的一部分,它提供了一套完整的工具和框架用于创建图形化编辑器,帮助开发者快速构建复杂的模型编辑器。本文档将通过...

    GMF 开发文档

    ### GMF开发文档知识点概述 #### 一、GMF简介 **GMF (Graphical Modeling Framework)** 是一种基于Eclipse的框架,用于构建图形编辑器。它为开发人员提供了创建和定制图形用户界面(GUI)的功能,使得创建复杂的...

    一个简单的GMF实例

    【标题】:“一个简单的GMF实例” 在IT领域,GMF(Graphical Modeling Framework)是Eclipse项目的一部分,主要用于创建图形化编辑器。这个“一个简单的GMF实例”可能是一个教程或者示例项目,旨在帮助开发者理解...

    gmf-runtime-2.1.2.zip

    GMF(Graphical Modeling Framework)是Eclipse基金会推出的一个开源项目,主要用于构建图形化建模工具。这个"gmf-runtime-2.1.2.zip"压缩包文件包含了Eclipse图形化开发插件GMF的运行时组件,版本为2.1.2。此插件...

Global site tag (gtag.js) - Google Analytics