GEF的英文全称是Graphical Editor Framework。GEF的中文书籍在市面上面基本没有的。但是很多的Eclipse的二次开发项目可能却需要用到Eclipse的GEF的相关技术。GEF是一个Eclipse的项目之一,著名的XMind软件(http://www.xmind.net/)就是基于GEF开发的,如下图所示意,做出来的界面非常的漂亮和灵活,另外,WindowBuilder工具(http://www.eclipse.org/wb)也是基GEF开发的,此外Apache的一个BPEL的一个项目也是基于GEF开发的。上面只是其中三个例子,类似的其他的例子非常的多,笔者就不在一一列举。
基于GEF的 XMind的工作空间的效果展示
既然现在我们已经知道了GEF能做什么了,那么GEF的框架是如何组成的呢?换句话说,学习GEF需要学习和了解哪些技术呢?各位看官,且听笔者慢慢给你娓娓道来。
GEF Eclipse项目主要由三大部门组成:Draw2D, Zest 和 GEF。 读者看到这可能就会感到奇怪了,为什么GEF Eclipse项目还包括GEF自身呢?其实很好理解,就是用GEF这一部分代替整个的GEF Eclipse项目,就好比,我们有的时候,用北京来代替中国一样,只是一个名称罢了。下面分别介绍下面这个三个组成部分:
(1) Draw2D
Draw2D是一个轻量级的画图框架。所谓的轻量级是相对于重量级而言的,轻量级是指这些被Draw2D绘制的图形(figure)是有纯Java对象绘制出来的,和具体的操作系统资源没有直接的联系。而重量级意思就是每一个SWT的widgets(部件)都是和具体操作系统资源相关的API。废话少说,那么Draw2D主要的功能是什么呢?说白了,Draw2D主要用来显示图形信息,所以的Draw2D图形都是在SWT的画布(canvas)里面显示的,需要注意的是,其没有提供交互的行为。
(2) Zest
Zest 是建立在Draw2D框架之上的一个框架。其提供了类似于Jface的功能(Jface相对于SWT来说)。使用Zest 能非常容易的把一个Java的模型和Draw2D的图形绑定在一起。
(3)GEF
GEF 也是建立在Draw2D框架之上的一个框架。提供了非常非常丰富的API,能够让用户和图形界面进行交互,比如拖拽画板(palette),打印,对图形界面的实物操作(比如,图形画错了,取消或者回滚)等。
总之,下面一幅图,代表了作者的千言万语。
下面是一些其他参考文章:
http://www.cnblogs.com/bjzhanghao/archive/2005/02/09/103595.html
http://www.eclipse.org/articles/Article-GEF-Draw2d/GEF-Draw2d.html
http://wiki.eclipse.org/GEF_Description
http://wiki.eclipse.org/GEF_Description2
笔者的后续文章,将分别一一介绍Draw2D,Zest和GEF的相关技术,并结合一些实际的例子,敬请期待。。。。。。。