快速业务通道

15分钟学会Eclipse GMF - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19

15分钟学会Eclipse GMF

时间:2011-02-14 IBM Chris Aniszczyk

背景

坦白说:过去在 Eclipse 里使用 Graphical Editor Framework(GEF)创建图形化编辑器 既慢又痛苦。这个过程包括理解复杂的框架和大量的冗余代码。但也说明 GEF 是创建图形化编辑器的最佳框架,因为它与模型无关。另一方面,与模型无关本身也有一些问题。

GMF 杂谈

GMF 的运行时组件是 IBM® 为使用 Eclipse Foundation 开发的,它以前还受 IBM Rational® 建模产品的支持。

GEF 是 Model-View-Controller(MVC)机制的精髓,它允许将您自己的模型引入表中。在使用 GEF 的早期,大多数人还使用自定义模型(考虑传统 Java 对象 [Plain Old Java™ Object, POJO])。您会发现自定义模型带来的问题是需要自己编写通用代码来支持模型,如序列化及侦听模型更改的功能。

在 GEF 中使用模型的下一个逻辑步骤是要使用 Eclipse Modeling Framework(EMF),EMF 提供了以各种形式将模型序列化的工具和侦听对模型默认值的更改的功能。

但是,将 EMF 模型与 GEF 框架整合在一起有一定的技术难度(如不同的命令堆栈),导致 EMF 模型并没有很快被基于 GEF 的编辑器接受。最终,GMF 项目在这种逆境中应运而生,并希望能够引入一种快速生成图形化编辑器的方法。通过类似的方法,EMF 生成适用于 EMF 模型的基本编辑器。

创建 EMF 模型

创建模型的第一步就是定义 EMF 模型的协作对象。我写这篇文章的目的只是说明定义模型的过程,而不是深入讲解 EMF 提供的模型处理工具的用法。本例中将要使用的模型是一个简单的图形化模型。我将通过一张图来帮助我说明模型的外观。

图 1. 可视的图形化模型

15分钟学会Eclipse GMF(2)

时间:2011-02-14 IBM Chris Aniszczyk

如您所见,使用模型是帮助我们理解各部分之间关系的一种简单方法。这个模型由图形、连接和图形化图表组成。

EMF 支持通过多种方法定义模型。为简单起见,我决定使用加注的 Java 技术。下面的代码清单说明了如何使用 EMF 定义模型。第一个模型对象是一个有名称属性、源连接和目标连接(Connection 类型)的图形。请注意,这是一个抽象的 EMF 类。

清单 1. Shape.java

/**   * @model abstract="true"   */ public interface Shape { /**   * @model   */ String getName(); /**   * @model type="com.ibm.model.shapes.model.Connection" containment="true"   */ List getSourceConnections(); /**   * @model type="com.ibm.model.shapes.model.Connection"   */ List getTargetConnections(); }

接下来定义囊括所有图形的列表的图形化图表。

清单 2. ShapesDiagram.java

/**   * @model   */ public interface ShapesDiagram { /**   * @model type="com.ibm.model.shapes.model.Shape" containment="true"   */ List getShapes(); }

接下来定义一些特殊的图形使模型更加生动。

清单 3. RectangularShape.java

/**   * @model   */ public interface RectangularShape extends Shape {}

清单 4. EllipticalShape.java

/**   * @model   */ public interface EllipticalShape extends Shape {}

最后,再添上连接就可以了,这样就能将各种图形真正连接在一起。

清单 5. Connection.java

/**   * @model   */ public interface Connection { /** @model */ Shape getSource(); /** @model */ Shape getTarget(); }

15分钟学会Eclipse GMF(3)

时间:2011-02-14 IBM Chris Aniszczyk

使用 Java 编程语言定义了模型后,请单击 File &g

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号