【插件开发】—— 12 GEF入门

什么是GEF?

  GEF的英文全称是Graphical Editing Framework,也就是图形化编辑框架。它帮助我们轻松的创建一些模型,并提供富图形化的特性。有一张图已经不知道被翻过踩过多少遍了,但是真的就是这张图表达了GEF标准的MVC架构思想。

  可以看到,上面最显眼的三个部分就是Model,Controller以及View.这三个部分,也够成了GEF插件开发的核心。

  在GEF中,每一个模型都有自己的Editpart,也就是Controller,也有自己的Model,这个Model通常包含了模型的属性以及相关的信息。而Figure则是自己的一种展现方式。

  比如经典的两种图形,一种是用于模型的创建,一种用连接模型的连线。

  而每一个模型的Editpart都会绑定一些动作,这些动作被放在EditPolicy中,也就是一些动作策略里面。当有属性事件发生时,就会触发这个策略对应的操作,从而修改模型的属性。模型属性会触发一些监听事件,导致图形Figure的重绘。

  另外一张图,就重绘的响应机制:

  这里就不得不提Draw2D了。Draw2D是一种基于SWT的2D绘图框架,它有效的帮助我们完成了图形可视化的工作。

  这里面的LWS也就是Draw2D的核心,每次图形的响应时间都会传输到这里,通过分发器找到相应的图形,进行响应。

  在GEF可以编辑接近所有的图形,在你的模型中,你既可以简单的修改模型的特性,也可以进行一些复杂的操作。所有的修改操作都符合一般性的操作习惯,比如拖拽,删除,复制,粘贴,或者从菜单或工具栏上触发。

  学习资源

    第一种就是GEF本身带有的一些的学习文档以及样例。

    GEF SDK在Eclipse的Help里面提供了在线帮助文档。通过查看Draw2D Developers Guide,和GEF Developer Guide可以查阅一些基本的使用指南。

    另外呢,在 http://www.eclipse.org/gef上也有很多GEF的相关资料,比如一些代码,样例以及文档。

   适合GEF的应用程序

  GEF可以开发很多种应用程序,几乎对于每一种图形都没有限制。最常见的程序就是建模工具了,比如企业流程、应用模型、以及一些UI界面。

  也有很多用于设计报表、网站,表单文档。也可以使用图形化编辑器来修改一些代码的样例,配置,服务器等等。、

  有很多优秀的开发产品,比如

  MDE for Struts

  为Struts开发的基于Eclipse的插件设计器,通过模型可以创建一些JSP,java , xml ,ant脚本等等文件,也可以通过模型生成一些样例代码

  Eclipse Desginer

  这个工具是基于SWT的设计工具,能够帮助我们可视化的完成一些RCP应用程序UI部分的编辑

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Deep learning进阶路

caffe随记(九)---利用FCN和已有的model进行图像语义分割

1、下载caffemodel 本例中我们使用的是pascalcontext-fcn32的模型,这个下载链接在它的文件夹里有,就是url那个文件 下载  pas...

41600
来自专栏陈仁松博客

在Windows下安装TensorFlow

目前TensorFlow在Windows下只支持Python 3.x。 1.下载Python 首先安装Pythone 3.6.4 下载地址 升级pip pyth...

45840
来自专栏软件开发 -- 分享 互助 成长

计算机系统可靠性的计算

计算机系统的可靠性是制从它开始运行(t=0)到某时刻t这段时间内能正常运行的概率,用R(t)表示。 失效率是指单位时间内失效的元件数与元件总数的比例,以λ表示。...

19490
来自专栏人工智障

visdom的安装及在pytorch下损失函数的可视化应用

更新:新版visdom0.1.7安装方式为:conda install -c srivasv visdom 

76200
来自专栏网络

HTML 正文内容提取库 Boilerpipe

Boilerpipe 是一个能从 HTML 中剔除广告和其他附加信息,提取出目标信息(如正文内容、发布时间)的 Java 库。 授权协议:Apache 开发语言...

38460
来自专栏Android点滴积累

Android高效内存1:一张图片占用多少内存

  在做内存优化的时候,我们发现除了解决内存泄露问题,剩下的就只有想办法减少真实的内存占用。而在App中,大部分内存可能被我们图片占用了,所以减少图片的内存占用...

25060
来自专栏R语言___生物信息

在线实用工具:处理fasta文件

FaBox (1.41) - an online fasta sequence toolbox

28050
来自专栏程序生活

Leetcode-Easy 72. Edit Distance

72. Edit Distance 描述: 求两个字符串的编辑距离 ? 思路: 动态规划 代码 class Solution: ...

33950
来自专栏Python中文社区

手把手教你用1行代码实现人脸识别

專 欄 ❈Kangvcar,Python爱好者,简书活跃作者,欢迎关注,打赏支持。❈ 环境要求: Ubuntu17.10 Python 2.7.14 环境...

3.1K100
来自专栏性能与架构

LVS负载均衡的调度算法

LVS是如何决定把用户请求转给哪台服务器的?LVS有很多种调度算法,下面介绍几个最常用的算法 (1)轮询 这是最简单的调度算法,调度器将收到的请求循环分配到服务...

387100

扫码关注云+社区

领取腾讯云代金券