GEF学习心得

 

GEFGraphical Editor Framework)是一个图形化编辑框架,提供以图行方式来编辑数据,为UML类图编辑器、图形化XML编辑器、界面设计工具以及图形化数据库结构设计工具提供了良好的开发平台。 网上关于GEF的介绍已经很多了,其中八进制和疯狂的菠菜文章比较精彩。我之所以也想发表一些文章,主要是被GEF的功能深深吸引,希望以我的视角介绍GEF,让更多的开发者投入精力去研究,一起探讨GEF的扩展应用。

由于偶然的因素,接触到了GEF,作为耄耋之年的程序员,立刻又投入到了学习研究中,主要是原来从事MIS系统开发,很少投入精力研究开发图形编辑系统,在开发MIS项目的过程中,用到过建模分析工具、数据库设计工具、工作流系统、数据交换系统,对其中方便的图形编辑有一种由衷的尊敬。

初次接触GEF,感觉无从下手,幸亏有八进制和疯狂的菠菜两位引路者,才逐步理解并能够动手学习和尝试编程开发,这样一干就是大半年的时间,应该来讲,GEF核心思想已经基本了解,不敢说精通。在研究开发的过程中,在遇到问题、解决问题过程中,积累了很多经验,不敢说宝贵,我想对于想研究、但无从下手者,应当有一定的借鉴作用。由于GEF框架涉及的内容众多,增加了初学者学习的难度和熟练者讲解的难度,所以我想以一个老程序员的视角,将我的学习内容逐步整理出来,供大家参考。

GEF应用的典型界面

一个典型的GEF应用应当包括一下几个部分内容:

l        调色板

l        图形编辑和显示区域

l        属性栏

l        大纲等

 

调色板就是工具箱,每个可以创建的图形元素都是工具箱的一项工具,在编辑器中添加元素时,只要从工具箱中选择创建的元素,拖入编辑器中指定位置即可。当然,在编辑过程中,还需要不断选择修改元素,系统提供了选择单个图形元素(SelectTool)和一批元素(MarqueeTool)的选择工具,这两个工具也是必须的。调色板是GEF编辑器的构件之一,在编辑器创建时,必须指定调色板。

GEF实现的内容就是图形编辑,所以只要创建了GEF编辑器,就会有一个编辑区域,来存放和显示图形元素。在编辑图形元素时,拖动图形元素、修改图形元素的位置和序列,受编辑器中画板的布局约束,如编辑器中的画板采用的是XYLayout布局,就可以改变图形元素的坐标位置,而一旦采用ToolbarLayout,就只能改变图形元素在画板中的排列次序。

图形元素的属性不仅仅是位置,还有很多其他的内容,编辑这些属性方法很多,比如直接在图形元素上编辑、弹出窗口编辑等等,常用的和最好的方法是选择图形元素后,直接显示图形元素的所有属性,在属性栏中直接编辑。这样我们就需要调用EClipse的属性视图(PropertySheet)

图形元素如果很多,界面上无法看清楚怎么办?我们一般还需要一个大纲,在大纲中显示图形元素的列表或图表的缩略图,提供快速定位和选择。这时间,我们又要使用Eclipse的大纲功能(ContentOutline)。

虽然简单,说道这里,已经有些乱了,没有使用过的人可能就会对上述内容的排放提出疑问:上述内容如何组织。

这里需要涉及Eclipse的插件开发知识,GEF作为EClipse的一种插件,插件的工作台都是通过透视图(Perspective)来管理的,所以插件窗口打开时,指定一个透视图来管理界面,透视图中来确定视图和编辑器的摆放位置。

GEF程序架构

GEF采用的是MVC架构,结合Struts,阐述GEF程序构成。从事Web开发人员肯定了解Struts,通过与其对比,更容易快速了解GEF。

序号

Struts概念

GEF概念

备注

FormBean

Model

数据持久化对象

Action

EditPart

操作控制器

HTML Input

Figure

数据显示

DAO

Command

数据操作

Form

画布

图形元素容器

Expolorer

Editor

容器

上述内容只是简单的对比,虽然都是MVC架构,但是有些方面还是有区别的:

Struts中,持久层的变化不会触发Action,改变浏览器的显示;GEF中,模型通过实现PropertyChangeSupport变量,实现属性变化的追踪和反馈,模型属性的变化如果需要追踪和反馈,一旦修改属性时,会通知对应的EditPartEditPart中监听属性变化,修改视图的显示。

Struts中,HTML字段的变化不会立即通知控制器,除非表单提交,而GEF的EditPart会安装不同的策略,监视视图(Figure)属性的改变,调用不同的命令,修改模型属性。

 

GEF编辑器如何识别模型和显示模型

GEF编辑器在创建时必须指定调色板和控制器工厂,调色板将模型变为一种工具、控制器工厂实现模型和控制器的定义,将模型工具拖入编辑器时,GEF根据控制器工厂定义,找到模型对应的控制器。GEF中,每个模型都必须有对应的控制器,在控制器中,实现模型和视图(Figure)的对应、控制视图的改变等。

通过上述描述,我们应该清楚如何将相互分离的三者关联起来。

 

GEF编辑器的功能

前面已经讲了很多编辑器的功能,下面对编辑器的功能再做补充,因为编辑器的功能绝对不止上述内容。

对比Word我们就很清楚,编辑器必须具有打开、保存、监视文件修改、相关菜单、右键菜单、对象敏感菜单等等,GEF编辑器具有同样的功能。

 

内容太多,水平有限,后面继续补充吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值