快速业务通道

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

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

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

时间:2011-04-19 cnblogs bjzhanghao

在前面的帖子已经提到,GEF(Graphical Editor Framework)是一个图形化编辑框架, 它允许开发人员以图形化的方式展示和编辑模型,从而提升用户体验。这样的应用程序有很 多,例如:UML类图编辑器、图形化XML编辑器、界面设计工具以及图形化数据库结构设计工 具等等。归结一下,可以发现它们在图形化编辑方面具有以下共同之处:

提供一个编辑区域和一个工具条,用户在工具条里选择需要的工具,以拖动或单击的方式 将节点或连接放置在编辑区域;

节点可以包含子节点;

用户能够查看和修改某个节点或连接的大部分属性;

连接端点锚定在节点上;

提供上下文菜单和键盘命令;

提供图形的缩放功能;

提供一个大纲视图,显示编辑区域的缩略图,或是树状模型结构;

支持撤消/重做功能;

等等。

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

图1 基于GEF的界面设计工具(Visual Editor,VE)的工作界面

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

时间:2011-04-19 cnblogs bjzhanghao

GEF最早是Eclipse的一个内部项目,后来逐渐转变为Eclipse的一个开源工具项目, Eclipse的不少其他子项目都需要它的支持。Eclipse 3.0版本花了很大功夫在从Platform中 剥离各种功能部件上,包括GEF和IDE在内的很多曾经只能在Eclipse内部使用的工具成为可以 独立使用的软件/插件包了。理论上我们是可以脱离Eclipse用GEF包构造自己的应用程序的, 但由于它们之间天然的联系,而且Eclipse确实是一个很值得支持的开发平台,所以我还是推 荐你在Eclipse中使用它。

GEF的优势是提供了标准的MVC(Model-View-Control)结构,开发人员可以利用GEF来完 成以上这些功能,而不需要自己重新设计。与其他一些MVC编辑框架相比,GEF的一个主要设 计目标是尽量减少模型和视图之间的依赖,好处是可以根据需要选择任意模型和视图的组合 ,而不必受开发框架的局限(不过实际上还是很少有脱离Draw2D的实现)。

现在来看看GEF是如何实现MVC框架的吧,在这个帖子里我们先概括介绍一下它的各个组成 部分,以后将结合例子进行更详细的说明。

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

图2 GEF结构图

模型:GEF的模型只与控制器打交道,而不知道任何与视图有关的东西。为了能让控制器 知道模型的变化,应该把控制器作为事件监听者注册在模型中,当模型发生变化时,就触发 相应的事件给控制器,后者负责通知各个视图进行更新。

典型的模型对象会包含PropertyChangeSupport类型的成员变量,用来维护监听器成员即 控制器;对于与其他对象具有连接关系的模型,要维护连入/连出的连接列表;如果模型对应 的节点具有大小和位置信息,还要维护它们。这些变量并不是模型本身必须的信息,维护它 们使模型变得不够清晰,但你可以通过构造一些抽象模型类(例如让所有具有连接的模型对 象继承Node类)来维持它们的可读性。

相对来讲GEF中模型是MVC中最简单的一部分。

控制器:我们知道,在MVC结构里控制器是模型与视图之间的桥梁,也是整个GEF的核心。 它不仅要监听模型的变化,当用户编辑视图时,还要把编辑结果反映到模型上。举个例子来 说,用户在数据库结构图上删除一个表时,控制器应该从模型中删除这个表对象、表中的字 段对象、以及与这些对象有关的所有连接。当然在GEF中这些操作不是由直接控制器完成的, 这个稍后就会说到。

GEF中的控制器是所谓的EditPart对象,更确切的说应该是一组EditPart对象共同组成了 GEF的控制器这部分,每一个模型对象都对应一个EditPart对象。你的应用程序中需要有一个 EditPartFactory对象负责根据给定模型对象创建对应的EditPart对象,这个工厂类将被视图 利用。

RootEditPart是一种特殊的EditPart,它和你的模型没有任何关系,它的作用

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