简介: 结合目前比较受欢迎的 EMF(Eclipse Modeling Framework)和 GEF(Graphical Editing Framework)技术,提出了一种在图形化开发中创建连接线时普遍适用的验证方法. 最后给出了一个创建 连接线时动态 Schema 验证的例子,并根据 Schema 的定义列出创建连接线的真值表。针对该真值表的每 项进行验证,保证不符合 Schema 定义规则的模型对应的图形之间不能创建连接线,降低了 Schema 验证 和修改的复杂性。
一种基于 EMF 模型的在 GEF 中判断创建连接线有效性的方法
在 Java 中进行图形化工具的开发传统的方法是直接使用 AWT 或者 Swing,这种方法在处理图形化开 发的细节上(图形的创建/删除、放大/缩小、拖放和撤销等)一般比较复杂;图形化设计和后台模型的对 应关系都需要开发者自己定义,没有统一的标准,这样很难进行维护;AWT 或者 Swing 开发的图形界面 跟 Windows 界面的风格不一致,让一直使用 Windows 的用户很难接受。 EMF 和 GEF 技术作为 Eclipse 工程的一部分,分别用来进行模型的代码生成和图形化工具的开发。其中 GEF 简化了对图形的处理,开 发人员不必把主要精力放在图形的处理上;提供了一个基于 MVC(Model-View-Controller)结构的图形 化开发框架,有效地维持了图形和模型之间的对应关系;基于SWT,图形的风格跟Windows的一样。因此, 采用 GEF 进行图形化开发可以提高开发效率的同时保证了可扩展性。
EMF 和 GEF 介绍
EMF
EMF 是一套 Java 的框架,可以用于创建基于结构化模型的工具和其他的应用程序。对于引入的面向 对象的模型,EMF 可以帮助你快速地将你的模型转换为高效、正确和容易定制的 Java 代码。 EMF 使用 的模型定义的标准格式是 XMI(XML Metadata Interchange),有四种方式可以将你自己创建的模型转换 为XMI格式:
使用文本或 XML 编辑器直接创建 XMI 文档;
将使用 Rational Rose 等建模工具创建的模型导出,生成 XMI 文档;
使用带有模型特征注释的 Java 接口;
使用 XML Schema 来描述模型的格式。
GEF
GEF 可以方便开发者从一个现成的模型来创建一个功能丰富的图形化编辑器,提供了一个基本框架来 构建多种应用,比如说:状态图、GUI 编辑器、类图编辑器和状态机等。 GEF 包含了两个插件: org.eclipse.draw2d 和org.eclipse.gef。 其中 org.eclipse.draw2d 为显示的图形提供了布局和描述 的工具集;org.eclipse.gef 使用了 MVC 的架构,提供了控制器(比如: EditPart )来操作各个模型和 视图。
GEF工作原理
GEF 采用的是 MVC 架构,其架构图如图1所示。GEF一般和 EMF 结合使用,EMF 负责生成模型。MVC 的各个部分都是树状结构的,并且是一一对应关系。其中 EditPart 充当控制器的角色,里面可以使用各 种 EditPolicy,而 EditPolicy 的具体实现有时需要调用 Command 工具集类;而通过 draw2d 绘制的图 形充当视图的角色。 具体的工作流程为:
EditPartFactory 会针对每个模型创建一个对应的EditPart;
在每个 EditPart 内部会创建与模型对应的视图,即显示的图形;
当模型的属性改变后,会通知 EditPart 它的属性变化情况;
EditPart 会根据模型属性的变化更新视图的显示;