GEF(Graphical 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概念 | 备注 |
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根据控制器工厂定义,找到模型对应的控制器。GEF中,每个模型都必须有对应的控制器,在控制器中,实现模型和视图(Figure)的对应、控制视图的改变等。
通过上述描述,我们应该清楚如何将相互分离的三者关联起来。
GEF编辑器的功能
前面已经讲了很多编辑器的功能,下面对编辑器的功能再做补充,因为编辑器的功能绝对不止上述内容。
对比Word我们就很清楚,编辑器必须具有打开、保存、监视文件修改、相关菜单、右键菜单、对象敏感菜单等等,GEF编辑器具有同样的功能。
内容太多,水平有限,后面继续补充吧。
分享到:
相关推荐
**Gef 学习总结** Gef,全称为 Graph Editor Framework,是一个强大的图形编辑框架,主要用于构建可视化的图形编辑工具。在IT行业中,Gef通常与EMF(Eclipse Modeling Framework)结合使用,用于创建复杂的建模和...
在“gef学习文档和编写源码”这个压缩包中,你将找到详细的教程,涵盖了上述各个方面的内容。通过文档,你可以逐步学习如何使用Gef,从基本的命令到高级的分析技巧。同时,提供的源码部分可以帮助你理解Gef的内部...
**GEF学习资料详解** **一、什么是GEF** GEF(Graphical Editing Framework)是Eclipse项目中的一个核心组件,主要用于构建图形编辑框架。它为开发者提供了一套全面的工具,用于创建复杂的图形用户界面,特别适用...
### Eclipse的GEF框架深入解析 #### 一、GEF框架概述 GEF,全称为Graphical Editor Framework,是Eclipse平台下的一款图形编辑框架,主要用于构建图形化编辑器,如流程设计器、UML类图编辑器等。GEF遵循经典的MVC...
该质料是本人在学习GEF期间整理的一些GEF的学习实例,适合初学者,对于初学者学习整个GEF框架很有帮助
**GEF学习资料** 本文将深入探讨GEF(Graph Edit Framework)的学习资源,这是一个用于创建图形编辑框架的开源项目,广泛应用于开发图形用户界面。针对初学者,我们将重点关注"八进制"和"dudu"教程,这两部分是理解...
**GEF入门学习例子** **概述** `GEF`(Graphical Editing Framework)是Eclipse开源组织提供的一款强大的图形编辑框架,用于构建图形用户界面(GUI)应用,特别是那些需要进行图形绘制、编辑和操作的软件。这个入门...
总之,这个“gefgit”压缩包为你提供了一个全面的GEF学习环境,结合理论教程和实际代码,是你掌握GEF技术的理想起点。通过学习和实践,你将能够运用GEF开发出功能丰富的图形编辑器,满足各种定制化需求。
**GEF学习体会与经验总结** GEF,全称Graphical Editing Framework,是Eclipse组织开发的一个图形编辑框架,主要用于构建可自定义的图形化编辑工具。它为开发者提供了丰富的API和工具,使得创建复杂的图形用户界面...
这是我自己在学习GEF的时候做的一些总结。 1、GEF中的概念比如Command,Tool,Request等等。 2、GEF中使用到的几种设计模式。 3、GEF中对鼠标键盘事件处理的机制、流程。
在开始学习GEF之前,确保拥有以下环境: - **操作系统**:Windows XP或更高版本。Windows 2000可能遇到兼容性问题,需额外调试。 - **JDK版本**:推荐使用1.5及以上版本,因低版本在处理EMF中的XML模型时可能出现...
【GEF入门版中文教程 源码】是针对RCP(Rich Client Platform)平台下图形编辑框架(Graphical Editor Framework,简称GEF)的学习资源,特别适合初学者。RCP是Eclipse组织提供的一种用于构建桌面应用的框架,而GEF...
【GEF-ALL-3.7+GEF-ALL-3.8+GEF_Draw2d学习资料】是一份综合性的资源包,包含了GEF(Graphical Editing Framework)的3.7和3.8版本以及与其相关的Draw2D库的学习材料。GEF是Eclipse平台上用于构建图形化编辑器框架的...
标题中的“GEF资源打包”指的是一个集合了关于GEF(Graph Edit Framework)的各种学习资料的压缩文件。这个资源包可能包含了对理解、学习和使用GEF非常有帮助的材料。描述进一步说明了这个包中包含的具体内容,如...
**gef学习概述** gef(GNU Environment for GDB)是一个强大的GDB增强插件,它为GDB(GNU调试器)提供了丰富的交互式命令和高级功能,使得程序调试过程更为高效和便捷。本PPT旨在帮助用户深入理解gef的用法和核心...
尽管Gef的学习资源相对较少,没有官方的完整文档,但这并不意味着学习路径困难。实际上,很多技术社区和个人博客提供了宝贵的教程和经验分享。例如,"WebSpider 从 www.java2s.com 浏览.url"可能是指一个关于如何...
**GEF学习资料整理概述** **一、GEF项目搭建** GEF,全称为Graphical Editing Framework,是Eclipse平台下的一个图形编辑框架,用于构建图形化用户界面,特别是用于创建复杂的模型驱动编辑器。搭建GEF项目首先要...
在本资料集中,"GEF学习"这一文件很可能是包含一系列教程、示例代码或文档,用于指导学习者逐步掌握GEF的使用。可能涵盖以下内容: 1. **基本概念**:介绍GEF的关键概念,如Figure、EditPart、Command、Model等,...
GEF 全称 Graphical Editor Framework 。它是一个基于 eclipse 的图形化编辑框架。通过它,开发人员可以方便的以图形化的方式(而非文本的方式)展示和编辑模型。