eclipse gmf安装
背景
让我直言不讳:过去,使用图形编辑器框架(GEF)在Eclipse中创建图形编辑器既缓慢又痛苦。 它涉及到了解复杂的框架和相当多的冗余代码。 也就是说,GEF是创建图形编辑器的绝佳框架,因为它与模型无关。 另一方面,与模型不可知会产生自己的问题。
根据“模型-视图-控制器(MVC)”范例的精神,GEF允许您将自己的模型带到表中。 在GEF成立之初,大多数人都使用自定义模型(例如,Plain Old Java™对象(POJO))。 定制模型的问题在于,您发现自己编写通用代码来支持模型,例如序列化和侦听模型更改的能力。
在GEF中使用模型的下一个合乎逻辑的步骤是使用Eclipse建模框架(EMF),该工具提供了以各种格式序列化模型的工具,并具有开箱即用地监听模型更改的能力。
但是,在将EMF模型集成到GEF框架中时遇到了技术挑战(例如不同的命令栈),这延迟了基于GEF的编辑器采用EMF模型的过程。 最终,GMF项目诞生于这种挫败感,并渴望以一种快速的方式来生成图形编辑器。 EMF以类似的方式为EMF模型生成基本编辑器。
创建您的EMF模型
我们冒险的第一步是定义一个可以使用的EMF模型。 我的目标只是展示定义模型的过程,而不是深入介绍EMF提供的用于操纵模型的工具。 在此示例中将使用的模型是简单的形状模型。 我喜欢从图片开始,以帮助我形象化模型的外观。
图1.可视化的形状模型

如您所见,该模型是帮助我们理解一切工作原理的非常简单的方法。 它具有一些形状,连接和形状图的概念。
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();
}
在用Java编程语言定义了模型之后,我们通过使用File> New> Eclipse Modeling Framework> EMF Model定义一个新的EMF genmodel(见图2)。 注意:如果您没有EMF项目,请先创建一个。
图2.带EMF注释的Java导入器

创建EMF基因模型后,右键单击该文件并确保生成“ 模型”和“ 编辑”组件(您可以选择“ 全部生成”以简化工作)。
创建您的GMF模型
GMF有一组您需要创建的模型才能生成图形编辑器。 图3显示了创建这些模型所涉及的过程。 我们需要使用的第一个模型是图形定义,它定义了生成的编辑器的视觉效果。 接下来是工具定义,其中包括与编辑器面板,菜单等相关的内容。最后,我们需要的最后一个模型是映射定义,您可以猜到它是定义业务逻辑之间的映射(您的EMF形状模型)和视觉模型(图形和工具定义)。
图3. GMF概述(来自GMF Wiki)

GMF有一个很棒的实用程序,称为GMF仪表板(“ 窗口”>“显示视图”>“其他”>“ GMF仪表板” )。 仪表板是完成图形编辑器过程的简便方法。 在此阶段,您应该已经选择了域模型和域genmodel。
图4. GMF仪表板

GMF图形定义模型
我们创建的第一个模型是图形化定义模型 (请在仪表板下创建的图形防守型超链接)。 确保选择“ 画布”作为模型对象。 该模型易于创建:
- 创建我们要在图上显示的图。 这是通过在编辑器中创建一个新的Figure Gallery条目并创建各种图形来完成的。
- 创建将在图上看到的节点(矩形和椭圆形)。
- 在我们的图上创建一个连接。
- 确保每个节点都与在地物库中创建的地物匹配。
注意:如果您在执行此任务时遇到麻烦,请下载一个示例插件,其中包含已为您制作的所有模型。
图5. GMF图模型

GMF工具定义模型
在这一步中,我们需要定义工具定义模型 ,该模型可以让我们为图形编辑器定义类似信息的调色板和菜单。 要定义工具定义模型,请打开GMF仪表板,然后点击创建 。 我们的简单模型只需要定义一个调色板和一些创建工具即可帮助模型创建(请参见图6)。
图6. GMF工具模型

GMF映射定义模型
映射定义模型就是所有这些元素的集合。 在此模型中,我们将可视化(图形)模型映射到业务逻辑(域模型)。 GMF有一组简洁的向导来帮助创建映射定义。 可以使用“ 文件”>“新建”>“图形建模框架”>“指南GMFMap创建”来调用它。 第一步是选择我们所有的GMF模型(参见图7)。
图7. GMFMap向导向导1

接下来,向导会聪明地要求我们选择要用作图根元素的模型元素。 在我们的例子中,这将是ShapesDiagram模型元素。
图8. GMFMap向导2

最后,GMF为我们弄清楚了应该将哪些模型元素映射到哪些视觉元素的方法。
图9. GMFMap向导向导3

重要的是要注意,这些向导可能随着GMF的发展而改变。 关于使用GMF自身引导的图形编辑器来进行GMF的讨论,以帮助创建映射定义文件(和其他GMF模型)。
生成您的GMF编辑器
这整个过程的最后也是最令人愉快的一步是生成图形编辑器。 为此,请从您的映射定义模型创建GMFGen模型。 为此,右键单击映射定义文件,然后选择创建生成器模型...。 应该生成一个新项目,其中包含要与图形编辑器一起使用的所有代码。 要使用图形编辑器,请启动一个新的Eclipse运行时工作台,然后转到File> New> Examples> Model Diagram (请参见图10)。
图10.模型向导

创建模型文件后,您应该能够使用生成的编辑器(请参见图11)。 还不错吧?
图11. Shapes编辑器

GMF功能
重要的是要注意,我们编写的生成的编辑器只是GMF功能的一小部分。 要利用框架的高级功能,可以做很多调整。
例如,GMF支持验证。 我的意思是:如果我们想将形状模型限制为每个模型元素只允许一个连接,会发生什么? 只允许相似的元素互相连接? 或者,如何控制可用于形状的名称类型呢? GMF完全有能力支持这些类型的验证等。 为了进行验证,GMF利用Eclipse建模框架技术(EMFT)来支持涉及使用Java代码和对象约束语言(OCL)定义验证器的方案。 GMF将为未通过验证的文件添加错误标记,类似于Eclipse对未编译的Java文件所做的标记。 要了解有关GMF支持的更多信息,请参阅参考资料 。
结论
我的目标是双重的:我想演示Eclipse Callisto发行版中一个令人兴奋的新部分,该模型支持模型驱动的开发,并且我想展示在15分钟内在Eclipse中生成图形编辑器有多酷。
翻译自: https://www.ibm.com/developerworks/opensource/library/os-ecl-gmf/index.html
eclipse gmf安装