`
cutesunshineriver
  • 浏览: 201169 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

EMF学习--CompoundCommand

EMF 
阅读更多
1、新建插件工程graph,建立ecore文件。


2、由ecore生成对应的genmodel文件,用来生成Model代码,edit和editor两个插件。

3、修改edit插件的EdgeItemProvider类,使Edge的source属性可以和Node的outgoing属性之间实现双向引用。
覆写createSetCommand方法,当feature为GraphPackage.Literals.EDGE__SOURCE时,触发SetSrcEdgeCompoundCommand这样一个组合命令。
@Override
	protected Command createSetCommand(EditingDomain domain, EObject owner, EStructuralFeature feature, Object value) {
		if (feature == GraphPackage.Literals.EDGE__SOURCE) {
			return new SetSrcEdgeCompoundCommand(domain, owner, feature, value);
		}
		return super.createSetCommand(domain, owner, feature, value);
	}

	private class SetSrcEdgeCompoundCommand extends CompoundCommand {

		private EditingDomain domain;
		private EObject owner;
		private Object value;

		public SetSrcEdgeCompoundCommand(EditingDomain domain, EObject owner, EStructuralFeature feature, Object value) {
			this.domain = domain;
			this.owner = owner;
			this.value = value;

			append(new SetCommand(domain, owner, feature, value));
		}

		@Override
		public void execute() {
			Node node = (Node) value;
			if (node != null) {
				Edge outgoingEdge = node.getOutgoing();
				if (outgoingEdge != null) {// 关联一个存在其他关联的对象
					appendAndExecute(new SetCommand(domain, node, GraphPackage.Literals.NODE__OUTGOING, null));
					appendAndExecute(new SetCommand(domain, outgoingEdge, GraphPackage.Literals.EDGE__SOURCE, null));
				}
			}

			Edge edge = (Edge) owner;
			Node sourceNode = edge.getSource();
			if (sourceNode == null) {// add
				appendAndExecute(new SetCommand(domain, node, GraphPackage.Literals.NODE__OUTGOING, edge));
			} else if (node == null) { // remove
				appendAndExecute(new SetCommand(domain, sourceNode, GraphPackage.Literals.NODE__OUTGOING, null));
			} else { // edit
				appendAndExecute(new SetCommand(domain, sourceNode, GraphPackage.Literals.NODE__OUTGOING, null));
				appendAndExecute(new SetCommand(domain, node, GraphPackage.Literals.NODE__OUTGOING, edge));
			}

			super.execute();
		}

	}
  • 大小: 24.4 KB
1
2
分享到:
评论

相关推荐

    emf-xsd-SDK-2.6.1

    在"emf-xsd-SDK-2.6.1"的压缩包中,包含了Eclipse环境的相关文件,这通常意味着我们可以在这个环境中开发和测试基于EMF和XSD的模型应用。Eclipse是一个集成开发环境(IDE),支持多种编程语言和插件,EMF相关的插件...

    emf-sdo-xsd-SDK-2.3.2.zip

    《Eclipse插件开发与应用:深入理解emf-sdo-xsd-SDK-2.3.2》 在软件开发领域,Eclipse作为一款强大的开源集成开发环境(IDE),因其高度可扩展性和丰富的插件生态而深受开发者喜爱。Eclipse插件是其核心功能之一,...

    emf-sdo-SDK-2.2.2

    `emf-sdo-SDK-2.2.2`是EMF对SDO标准的实现,是一个针对Eclipse环境的插件。 在Eclipse中,`emf-sdo-SDK-2.2.2`主要包含以下几个方面的知识点: 1. **元模型(Metamodel)**:元模型是描述数据结构的模型,它定义了...

    emf-sdo-xsd-SDK-2.0.1.zip

    在EMF-SDO-XSD SDK中,"eclipse"可能指的是Eclipse集成开发环境(Integrated Development Environment),这是一个广泛使用的Java开发工具,也支持多种其他语言和框架,包括Struts。开发者可以使用Eclipse来导入和...

    emf-xsd-Update-2.10.2

    【标题】"emf-xsd-Update-2.10.2" 是一个与Java可视化开发相关的软件更新版本,主要用于支持Visual Editor的安装和使用。这个版本是2.10.2,通常代表着修复了一些已知问题,增加了新功能,或者优化了性能。 【描述...

    emf-sdo-SDK-2.2.0(2) eclipse 可视化 界面设计

    emf-sdo-SDK-2.2.0(2) eclipse 可视化 界面设计。 因为size太大,所以分成了2部分,另一部分在 emf-sdo-SDK-2.2.0(1)里面。 emf-sdo-SDK-2.2.0(1)的下载地址: http://download.csdn.net/source/1002774

    emf-xsd-Update-2.7.2

    【标题】"emf-xsd-Update-2.7.2" 涉及到的是一个针对Eclipse集成开发环境的扩展,主要关注的是EMF(Eclipse Modeling Framework)和XSD(XML Schema Definition)的更新版本2.7.2。这个更新包包含了对EMF框架的增强...

    emf-sdo-xsd-SDK-2.4.0.zip

    emf-sdo-xsd-SDK-2.4.0.zip emf是Eclipse modeling framework组建框架的缩写;SDO是服务数据对象的缩写,它是Java程序的一种数据编程框架;emf-sdo-xsd-SDK-2.4.0.zip是Eclipse编程器的组成员之一。

    emf-runtime-2.6.1.7z

    Eclipse 3.6.1(Helios)的插件。emf-runtime-2.6.1.7z。

    emf-sdo-runtime-2.2.0.zip

    "emf-sdo-runtime-2.2.0.zip" 是一个包含EMF SDO运行时库的压缩包,用于在Eclipse环境中集成SDO功能。这个版本号2.2.0表明这是一个特定的稳定版本,包含了该版本中所有修复的bug和新增的功能。 在压缩包内的...

    emf-sdo-runtime-2.2.0.zip、GEF-runtime-3.2.zip和VE-runtime-1.2.3_jem.zip

    myeclipse ,swing ,chajian,解压,添加

    emf-runtime-2.6.1

    标题中的"emf-runtime-2.6.1"指的是EMF框架的运行时组件,版本号为2.6.1。 EMF的核心功能包括: 1. **模型定义**:通过扩展XML Schema Definition (XSD) 或者ECORE(EMF的元数据模型)来定义模型结构。ECORE是一种...

    emf-sdo-xsd-SDK-2.2.1

    标题中的"emf-sdo-xsd-SDK-2.2.1"指的是Eclipse Modeling Framework (EMF) Service Data Objects (SDO) XSD SDK的一个特定版本,即2.2.1。EMF是Eclipse基金会开发的一个强大的建模框架,它允许开发者创建、操作和...

    emf-runtime-2.5.0.zip

    "emf-runtime-2.5.0.zip" 是一个包含EMF运行时库的压缩文件,版本为2.5.0。这个版本可能包含了对模型对象的创建、序列化、反序列化以及与模型相关的事件处理等功能。它对于那些希望在Eclipse环境下开发图形化编辑器...

    emf-sdo-runtime-2.2.0 (emf build 2.2.0)

    eclipse可视化插件安装必备插件之一:emf-sdo-runtime-2.2.0。eclipse全部可视化插件正确配置是eclipse-SDK-3.2-win32,emf-sdo-runtime-2.2.0,GEF-runtime-3.2,VE-runtime-1.2,VE-SDK-1.2

    LAS2emf tool--convert LAS format log curves into EMF

    LAS2emf convert LAS--standard industrial Logging curve data into EMF format Graphics.

    emf-sdo-runtime

    `emf-sdo-runtime`是EMF针对SDO标准实现的运行时库,它是Eclipse IDE中的一个插件,用于支持在Eclipse环境中开发和使用SDO的应用。 EMF-SDO-Runtime的核心功能包括: 1. **数据对象模型**:它允许开发者定义复杂的...

    emf-xsd-Update-2.7.1

    【标题】"emf-xsd-Update-2.7.1" 涉及的是EMF(Eclipse Modeling Framework)的版本更新至2.7.1。EMF是Eclipse项目的一部分,它提供了一个用于构建基于模型的应用程序的框架和工具。在这一版本的更新中,开发者可能...

Global site tag (gtag.js) - Google Analytics