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 能很easy的把一个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的相关技术。并结合一些实际的样例,敬请期待。
。
。
。。
。。