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
分享到:
相关推荐
在"emf-xsd-SDK-2.6.1"的压缩包中,包含了Eclipse环境的相关文件,这通常意味着我们可以在这个环境中开发和测试基于EMF和XSD的模型应用。Eclipse是一个集成开发环境(IDE),支持多种编程语言和插件,EMF相关的插件...
《Eclipse插件开发与应用:深入理解emf-sdo-xsd-SDK-2.3.2》 在软件开发领域,Eclipse作为一款强大的开源集成开发环境(IDE),因其高度可扩展性和丰富的插件生态而深受开发者喜爱。Eclipse插件是其核心功能之一,...
`emf-sdo-SDK-2.2.2`是EMF对SDO标准的实现,是一个针对Eclipse环境的插件。 在Eclipse中,`emf-sdo-SDK-2.2.2`主要包含以下几个方面的知识点: 1. **元模型(Metamodel)**:元模型是描述数据结构的模型,它定义了...
在EMF-SDO-XSD SDK中,"eclipse"可能指的是Eclipse集成开发环境(Integrated Development Environment),这是一个广泛使用的Java开发工具,也支持多种其他语言和框架,包括Struts。开发者可以使用Eclipse来导入和...
【标题】"emf-xsd-Update-2.10.2" 是一个与Java可视化开发相关的软件更新版本,主要用于支持Visual Editor的安装和使用。这个版本是2.10.2,通常代表着修复了一些已知问题,增加了新功能,或者优化了性能。 【描述...
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" 涉及到的是一个针对Eclipse集成开发环境的扩展,主要关注的是EMF(Eclipse Modeling Framework)和XSD(XML Schema Definition)的更新版本2.7.2。这个更新包包含了对EMF框架的增强...
emf-sdo-xsd-SDK-2.4.0.zip emf是Eclipse modeling framework组建框架的缩写;SDO是服务数据对象的缩写,它是Java程序的一种数据编程框架;emf-sdo-xsd-SDK-2.4.0.zip是Eclipse编程器的组成员之一。
Eclipse 3.6.1(Helios)的插件。emf-runtime-2.6.1.7z。
"emf-sdo-runtime-2.2.0.zip" 是一个包含EMF SDO运行时库的压缩包,用于在Eclipse环境中集成SDO功能。这个版本号2.2.0表明这是一个特定的稳定版本,包含了该版本中所有修复的bug和新增的功能。 在压缩包内的...
myeclipse ,swing ,chajian,解压,添加
标题中的"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"指的是Eclipse Modeling Framework (EMF) Service Data Objects (SDO) XSD SDK的一个特定版本,即2.2.1。EMF是Eclipse基金会开发的一个强大的建模框架,它允许开发者创建、操作和...
"emf-runtime-2.5.0.zip" 是一个包含EMF运行时库的压缩文件,版本为2.5.0。这个版本可能包含了对模型对象的创建、序列化、反序列化以及与模型相关的事件处理等功能。它对于那些希望在Eclipse环境下开发图形化编辑器...
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 convert LAS--standard industrial Logging curve data into EMF format Graphics.
`emf-sdo-runtime`是EMF针对SDO标准实现的运行时库,它是Eclipse IDE中的一个插件,用于支持在Eclipse环境中开发和使用SDO的应用。 EMF-SDO-Runtime的核心功能包括: 1. **数据对象模型**:它允许开发者定义复杂的...
【标题】"emf-xsd-Update-2.7.1" 涉及的是EMF(Eclipse Modeling Framework)的版本更新至2.7.1。EMF是Eclipse项目的一部分,它提供了一个用于构建基于模型的应用程序的框架和工具。在这一版本的更新中,开发者可能...