快速业务通道

[Eclipse]GEF入门系列(二、GEF概述) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
是把 EditPartViewer和contents(应用程序的最上层EditPart,一般代表一块画布)联系起来, 可以把它想成是contents的容器。EditPartViewer有一个方法setRootEditPart()专门用来指 定视图对应的RooEditPart。

[Eclipse]GEF入门系列(二、GEF概述) - 编程入门网

图3 EditPart对象

[Eclipse]GEF入门系列(二、GEF概述)(3)

时间:2011-04-19 cnblogs bjzhanghao

用户的编辑操作被转换为一系列请求(Request),有很多种类的请求,这些种类在GEF里 被称为角色(Role),GEF里有图形化和非图形化这两大类角色,前者比如Layout Role对应 和布局有关的的操作,后者比如Connection Role对应和连接有关的操作等等。角色这个概念 是通过编辑策略(EditPolicy)来实现的,EditPolicy的主要功能是根据请求创建相应的命 令(Command),而后者会直接操作模型对象。对每一个EditPart,你都可以"安装"一些 EditPolicy,用户对这个EditPart的特定操作会被交给已安装的对应EditPolicy处理。这样 做的直接好处是可以在不同EditPart之间共享一些重复操作。

在GEF SDK提供的帮助文档(GEF开发指南)里有一份详细的EditPolicy、Role和Request 类型列表,这里就不赘述了。

视图:前面说过,GEF的视图可以有很多种,GEF目前提供了图形(GraphicalViewer)和 树状(TreeViewer)这两种,前者利用Draw2D图形(IFigure)作为表现方式,多用于编辑区 域,后者则多用于实现大纲展示。视图的任务同样繁重,除了模型的显示功能以外,还要提 供编辑功能、回显(Feedback)、工具提示(ToolTip)等等。

GEF使用EditPartViewer作为视图,它的作用和JFace中的Viewer十分类似,而EditPart就 相当于是它的ContentProvider和LabelProvider,通过setContents()方法来指定。我们经常 使用的Editor是一个GraphicalEditorWithPalette(GEF提供的Editor,是EditorPart的子类 ,具有图形化编辑区域和一个工具条),这个Editor使用GraphicalEditViewer和 PaletteViewer这两个视图类,PaletteViewer也是GraphicalEditViewer的子类。开发人员要 在configureGraphicalViewer()和initializeGraphicalViewer()这两个方法里对 EditPartViewer进行定制,包括指定它的contents和EditPartFactory等等。

EditPartViewer同时也是ISelectionProvider,这样当用户在编辑区域做选择操作时,注 册的SelectionChangeListener就可以收到选择事件。EditPartViewer会维护各个EditPart的 选中状态,如果没有被选中的EditPart,则缺省选中的是作为contents的EditPart。

初步了解了GEF的MVC实现方式,让我们看看典型的GEF应用程序是什么样子的。大部分GEF 应用程序都实现为Eclipse的Editor,也就是说整个编辑区域是放置在一个Editor里的。所以 典型的GEF应用程序具有一个图形编辑区域包含在一个Editor(例如 GraphicalEditorWithPalette)里,可能有一个大纲视图和一个属性页,一个用于创建 EditPart实例的EditPartFactory,一些表示业务的模型对象,与模型对象对应的一些 EditPart,每个EditPart对应一个IFigure的子类对象显示给用户,一些EditPolicy对象,以 及一些Command对象。

GEF应用程序的工作方式如下: EditPartViewer接受用户的操作,例如节点的选择、新增 或删除等等,每个节点都对应一个EditPart对象,这个对象有一组按操作Role分开的 EditPolicy,每个EditPolicy会对应一些Command对象,Command最终对模型进行直接修改。 用户的操作转换为Request分配给适当的EditPolicy,由后者创建适当的Command来修改模型 ,这些Command会保留在EditDomain(专门用于维护EditPartViewer、Command等信息的对象 ,一般每个Editor对应唯一一个该对象)的命令堆栈里,用于实现撤消/重做功能。

以上介绍了GEF中一些比较重要的概

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号