没有合适的资源?快使用搜索试试~ 我知道了~
eclipse插件开发之GEF编辑器
需积分: 9 13 下载量 182 浏览量
2013-04-19
10:23:44
上传
评论
收藏 1.1MB DOC 举报
温馨提示
试读
30页
对gef中相关内容的描述,这里面我只是个人的理解,描述gef的最基本的功能,若需深入研究,可以从网上查询更多资料,我个人也在继续研究中。
资源推荐
资源详情
资源评论
1
GEF 编辑器学习总结
1. GEF 概述.........................................................................................................................................2
1.1.GEF MVC 模式....................................................................................................................2
1.1.1.模型(Model).........................................................................................................2
1.1.2.控制器(Controller)...............................................................................................2
1.1.3.视图(View)...........................................................................................................4
1.1.4.总结............................................................................................................................5
1.2.GEF 工作流程实例..............................................................................................................6
1.2.1.从画板中选择图形....................................................................................................7
1.2.2.获取模型对象............................................................................................................7
1.2.2.判断 child 不为空......................................................................................................7
1.2.3.传递 PropertyChange 事件........................................................................................8
1.2.4.获取事件 ID...............................................................................................................8
1.2.6.创建子模型的 EditPart:..........................................................................................8
1.2.7.Command 执行添加节点命令..................................................................................9
1.2.8.保存 Command 对象.................................................................................................9
1.2.9.刷新编辑器区域。..................................................................................................10
2. GEF 应用实例...............................................................................................................................10
2.1.GEF 应用程序创建步骤....................................................................................................10
2.1.1.创建 Editor...............................................................................................................10
2.1.2.创建模型(model)................................................................................................12
2.1.3.Figure(Viewer)....................................................................................................14
2.1.4.EditPart(Controller)............................................................................................14
2.1.5.编辑策略(EditPolicy).........................................................................................18
2.1.6.Command.................................................................................................................19
2.1.7.编辑器工厂(EditPartFactory)............................................................................20
2.1.7.右键菜单(ContextMenuProvider)......................................................................20
2.1.8 大纲视图(OutLine)............................................................................................22
2.1.9.属性页及画板工具栏..............................................................................................26
2
GEF 编辑器学习总结
1.GEF 概述
1.1.GEF MVC 模式
GEF 是具有标准 MVC(Model-View-Control)结构的图形编辑框架,其中 Model 由我
们自己根据业务来设计,它要能够提供某种模型改变通知的机制,用来把 Model 的变化告
诉 Control 层;Control 层由一些 EditPart 实现,EditPart 是整个 GEF 的核心部件,而 View
层(大多数情况下)就是 Draw2D(Draw2D 是基于 SWT 的图形处理包,它适合用作 GEF
的 View 层,可参考 GEF 入门系列“Draw2D”)了,其作用是把 Model 以图形化的方式表现
给使用者。
1.1.1.模型(Model)
GEF 的模型只与控制器打交道,而不知道任何与视图有关的东西。为了能让控制器知
道模型的变化,应该把控制器作为事件监听者注册在模型中,当模型发生变化时,就触发
相应的是事件给控制器,后者负责通知各个视图进行更新。
一般模型对象会包含 PropertyChangeSupport 类型的成员变量,用来维护监听器成员即
控制器;对于与其他对象具有连接关系的模型,要维护连入/连出的连接列表;如果模型对
应的节点具有大小和位置信息,还要维护他们。
1.1.2.控制器(Controller)
控制器是模型与试图之间的桥梁,也是整个 GEF 的核心。它不仅仅要监听模型的变化,
当用户编辑视图时,还要把编辑结果反映到模型上。
GEF 中的控制器是所谓的 EditPart 对象,每一个模型对象都对应一个 EditPart 对象。我
们的应用程序中需要有一个 EditPartFactory 对象负责根据给定模型对象创建对应的 EditPart
对象,这个工厂类将被视图利用。在编辑器类的 configureGraphicalViewer()方法中添加如下
语句:getGraphicalViewer().setEditPartFactory(new PartFactory());其
中 PartFactory 是继承自 EditPartFactory 类的用于判断创建模型对象的工厂类
RootEditPart 是特殊的 EditPart,它和模型没有任何关系,它的作用是把 EditPartViewer
和 contents(应用程序最上层的 EditPart,一般代表一块画布)联系起来,可以把它想成是
3
GEF 编辑器学习总结
contents 的容器。EditPartViewer 的 setRootEditPart()方法则用于指定对应的 RootEditPart。在
编辑器类的 configureGraphicalViewer()方法中添加如下语句:
getGraphicalViewer().setRootEditPart(new
ScalableFreeformRootEditPart());
其中 ScalableFreeformRootEditPart 是系统类
EditPart 对象
编辑操作被转换为一系列请求(Request),有很多种类的请求,这些种类在 GEF 里
被称为角色(Role), GEF 里有图形化和非图形化这两大类角色,前者如 Layout_Role 对
应和布局有关的操作,后者比如 Connection_Role 对应和连接有关的操作等等。角色通过编
辑 策 略 ( EditPolicy ) 来 实 现 , EditPolicy 的 主 要 功 能 是 根 据 请 求 创 建 相 应 的 命 令
(Command),我们对这个 EditPart 的特定操作会被交给已安装的对应的 EditPolicy 处理。
EditPolicy
4
GEF 编辑器学习总结
1.1.3.视图(View)
GEF 的 视 图 可 以 有 很 多 种 , GEF 目 前 提 供 了 图 形 ( GraphicalViewer ) 和 树 状
(TreeViewer)这两种,前者利用 Draw2D 图形(IFigure)作为表现形式,多用于编辑区域,
后者则多用于实现大纲视图展示。视图的作用,除了模型的显示功能外,还可提供编辑功
能、回显(FeedBack)、工具提示( ToolTip)等等。
GEF 使用 EditPartViewer 作为视图,它的作用和 IFace 中的 Viewer 十分类似,EditPart
就相当于是它的 ContentProvider 和 LabelProvider,通过 setContents()方法来指定。我们经常
使用的 Editor 是一个 GraphicalEditorWithPalette(GEF 提供的 EditorPart 的子类具有图形化
编辑区域和一个工具条),即我们的 Editor 要继承自
GraphicalEditorWithPalette 类,使得编辑器区域带可隐藏的画板工具栏,如下:
Editor
这 个 Editor 使 用 GraphicalEditViewer 和 PaletteViewer 这 两 个 视 图 类 。 我 们 在
configureGraphicalViewer()和 initializeGraphicalViewer()这两个方法里对 EditPartViewer 进行
定制,包括指定它的 contents 和 EditPartFactory 等等如下:
5
GEF 编辑器学习总结
EditPartViewer 同时也是 ISelectionProvider,这样当用户在编辑区域做选择操作时,注
册的 SelectionChangeListener 就可以收到选择事件。EditPartViewer 会维护各个 EditPart 的选
中状态,如果没有被选中的 EditPart,则默认选中的是作为 contents 的 EditPart。
1.1.4.总结
由以上介绍,可知 GEF 应用程序具有一个图形编辑区域包含在一个 Editor(例如
GraphicalEditorWithPalette)里,可能有一个大纲视图和一个属性页,一个用于 EditPart 实
例的 EditPartFactory,一些表示业务的模型对象,与模型对象对应的一些 EditPart,每个
EditPart 对应一个 IFigure 的子类对象显示给用户,一些 EditPolicy 对象以及一些 Command
对象。
剩余29页未读,继续阅读
资源评论
sheheit
- 粉丝: 0
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 二叉树7-1-1.cpp
- android 9.0 原生模拟器 签名文件
- 技术面试最后反问面试官的话 校招面试非技术问题有哪些 非技术问题如何回答.png
- NB-IOT-BC26全网通模块Altium+ CADENCE +PADS三种格式(原理图SCH+PCB封装库)文件.zip
- 基于微信小程序开发的校园失物招领系统源码毕业设计(优质项目源码).zip
- 词向量是一种将自然语言中的单词转换为数值向量的技术,它能够捕捉词义和上下文信息
- nmap与masscan的简单使用
- MyBatis动态SQL.pdf
- 基于stm32单片机protues仿真的温湿度控制系统设计(仿真图、源代码)
- 词向量:自然语言处理的基石
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功