GEF (一) -- GEF简介及控制器EditPart

 

一 GEF简介

 

  GEF Graphical Editing Framework, 是Eclipse提供的图形编辑框架 ,采用MVC 框架模式实现,并使用了事件监听、Command和Policy模式实现控制和操作的功能。模型 对应业务逻辑,实现相应的接口,并添加事件监听器,实现对模型改变事件的监听。控制器 由GEF提供的EditPart实现,安装编辑策略,监听模型的变化,处理模型变化请求,执行相应的Command命令完成相应的操作,绘制图形。视图 部分由Eclipse提供的Draw2d实现,绘制相应的图形。

 

  在MVC(模型-视图-控制器)模型中,控制器通常是视图和模型之间唯一的连接者。控制器负责维护视图、解释UI事件并转化为对模型的操作。

  框架在应用的模型和视图之间提供了一种连接,也提供了输入Handler,例如tools和actions,把事件转换位请求Requests,Requests 和 Commands 用来封装交互行为和对模型产生的作用。下面是GEF中各角色的描述:

 

模型 (Model)

  模型可以是任何能够持久化的数据,任何模型都可以用在GEF中。模型必须具有一种通知机制,从非技术角度来讲,模型和命令(command)关系紧密。command作用就是通过一种能够撤销和重做的方式修改模型,通常,command只被用在模型本身。

 

视图 (View (Figure/Treeitems))

  视图是用户能够看到的任何东西,图形和树节点都能够用作视图元素。

 

控制器  (control (EditPart))

  通常每一个可视化模型对象对应一个控制器。这个控制器称为EditPart ,Editpart是模型和视图之间的连接,也负责图形编辑。Editpart包含称为EditPolicy的Helpler工具,它能够处理大量的编辑任务。

 

显示器 (Viewers)

  EditPartViewer 是控制器 editparts显示视图的地方。GEF提供两种Viewer,graphical viewer具备图形功能,tree viewer可以显示本地化(native)树节点。GEF viewer和JFace viewer类似,它们管理SWT控件,viewer也是一个选择提供器(selection provider),选择单元为控制器EditPart。

 

  GEF能够用在任何能够Workbench中使用SWT Control空间的地方,可以是一个editor、view、wizard page 等等。通常在Editpart使用,有时在editor编辑器的大纲页面中使用。GEF要求具备RCP(Eclipse Rich Client)和“view”(org.celipse.ui.views)插件环境,view插件提供了属性页支持。

 

二 控制器(EditPart)介绍

  EditPart把对应的视图和模型关联起来,并且形成它们自己的结构,通常对应模型的结构,例如,一个模型是一个包含节点的图表模型,那么会对一个包含子editpart的editpart。

  这种editpart的父子关系在图形里也是一样的。父图形包含子图形。通常是父类editpart的视图是一个包含几种子图形的复杂视图,其中一个图形被设计为面板,其他图形可以加入这个面板里。最终形成了一种三个近似相互对应的独立层次数据结构。

 

  连接是这种简单树状结构的例外。连接表示两个对象之间的连接和关联,视图使用Draw2d的连接图形。连接能够方便地式储存在模型中,但是其edipart被source editpart和target editpart管理。连接图形也比较特殊,它绘制在包含非连接图形的主要图层之上的一个特殊的层。

 

  GEF提供两种editpart实现。Graphical editpart使用figure(Draw2d)作为视图,支持连接,也即这些连接本身就是 Graphical editpart。另一种是tree editpart,使用SWT 树节点作为视图。

 

editpart的作用包括:

  • 创建和维护视图
  • 创建和维护子editpart
  • 创建和维护连接editpart
  • 支持模型编辑

  需要指出的是,维护视图和其他editpart意味着模型改变会通知给editpart。通常editpart 在关联的模型中添加监听器,当接收到通知,editpart根据模型的变化更新它的视图和结构。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值