一个典型的GEF应用应当包括一下几个部分内容:
l 调色板
l 图形编辑和显示区域
l 属性栏
l 大纲等
调
色板就是工具箱,每个可以创建的图形元素都是工具箱的一项工具,在编辑器中添加元素时,只要从工具箱中选择创建的元素,拖入编辑器中指定位置即可。当然,
在编辑过程中,还需要不断选择修改元素,系统提供了选择单个图形元素(SelectTool)和一批元素(MarqueeTool)的选择工具,这两个工
具也是必须的。调色板是GEF编辑器的构件之一,在编辑器创建时,必须指定调色板。
GEF
实现的内容就是图形编辑,所以只要创建了GEF编辑器,就会有一个编辑区域,来存放和显示图形元素。在编辑图形元素时,拖动图形元素、修改图形元素的位置
和序列,受编辑器中画板的布局约束,如编辑器中的画板采用的是XYLayout布局,就可以改变图形元素的坐标位置,而一旦采用
ToolbarLayout,就只能改变图形元素在画板中的排列次序。
图形元素的属性不仅仅是位置,还有很多其他的内容,编辑这些属性方法很多,比如直接在图形元素上编辑、弹出窗口编辑等等,常用的和最好的方法是选择图形元素后,直接显示图形元素的所有属性,在属性栏中直接编辑。这样我们就需要调用EClipse的属性视图(PropertySheet)。
图形元素如果很多,界面上无法看清楚怎么办?我们一般还需要一个大纲,在大纲中显示图形元素的列表或图表的缩略图,提供快速定位和选择。这时间,我们又要使用Eclipse的大纲功能(ContentOutline)。
虽然简单,说道这里,已经有些乱了,没有使用过的人可能就会对上述内容的排放提出疑问:上述内容如何组织。
这里需要涉及Eclipse的插件开发知识,GEF作为EClipse的一种插件,插件的工作台都是通过透视图(Perspective)来管理的,所以插件窗口打开时,指定一个透视图来管理界面,透视图中来确定视图和编辑器的摆放位置。
GEF采用的是MVC架构,结合Struts,阐述GEF程序构成。从事Web开发人员肯定了解Struts,通过与其对比,更容易快速了解GEF。
序号 | Struts概念 | GEF概念 | 备注 |
1 | FormBean | Model | 数据持久化对象 |
2 | Action | EditPart | 操作控制器 |
3 | HTML Input | Figure | 数据显示 |
4 | DAO | Command | 数据操作 |
5 | Form | 画布 | 图形元素容器 |
6 | Expolorer | Editor | 容器 |
上述内容只是简单的对比,虽然都是MVC架构,但是有些方面还是有区别的:
Struts中,持久层的变化不会触发Action,改变浏览器的显示;GEF中,模型通过实现PropertyChangeSupport变量,实现属性变化的追踪和反馈,模型属性的变化如果需要追踪和反馈,一旦修改属性时,会通知对应的EditPart,EditPart中监听属性变化,修改视图的显示。
Struts中,HTML字段的变化不会立即通知控制器,除非表单提交,而GEF的EditPart会安装不同的策略,监视视图(Figure)属性的改变,调用不同的命令,修改模型属性。
GEF编辑器在创建时必须指定调色板和控制器工厂,调色板将模型变为一种工具、控制器工厂实现模型和控制器的定义,将模型工具拖入编辑器时,GEF根据控制器工厂定义,找到模型对应的控制器。GEF中,每个模型都必须有对应的控制器,在控制器中,实现模型和视图(Figure)的对应、控制视图的改变等。
通过上述描述,我们应该清楚如何将相互分离的三者关联起来。
前面已经讲了很多编辑器的功能,下面对编辑器的功能再做补充,因为编辑器的功能绝对不止上述内容。
对比Word我们就很清楚,编辑器必须具有打开、保存、监视文件修改、相关菜单、右键菜单、对象敏感菜单等等,GEF编辑器具有同样的功能。
文章评论(0条评论)
登录后参与讨论