GEF的一些总结
来源:互联网 发布:淘宝客网站备案 编辑:程序博客网 时间:2024/05/21 17:41
1.一般来说可以继承三种EditPart,分别是
org.eclipse.gef.editparts.AbstractGraphicalEditPart 用于一般图形
org.eclipse.gef.editparts.AbstractConnectionEditPart 用于连线
org.eclipse.gef.editparts.AbstractTreeEditPart 用于大纲视图
2.编辑域[EditDomain] :编辑域是一个起到管理作用的类,它绑定了一个编辑器、若干个查看器和若干个工具。因此它定义了真实的编辑器。编辑域还提供一个命令堆栈,用来保存所有执行过的命令,有两点好处:1.可实现重做和不做的操作2.可查看模型是否被改动。
3.
编辑器主要实现以下功能 :
1).需要创建EditDomain。
2).通过EditDomain,访问命令堆栈,为编辑器提供参考[如参考命令堆栈,编辑器决定是否允许存储操作]。
3).实现存储功能。
4).装配图形查看器[GraphicalViewer]。
5).装配调色板[palette]。
6).实现大纲[Outline]的挂接等等。
总结:编辑器利用工厂[EditPart Factory]根据模型创建对应的控制器[EditParts]。在控制器中通过它的设置图形方法来把EditPart与图形对应起来,这样模型、控制器和图形就一一对应了。
4.支持反馈的EditPolicy :
1).SelectionEditPolicy :一个抽象类,它是提供控制器被选择的反馈基础。即当用户在编辑器上选中图形时,相应的图形给以相应的反应以区分选中的和未选中的。要注意的反馈图形被画在反馈层上[LayerConstants.FEEDBACK_LAYER]。有如下方法包括在该类中:
Protected void showFocus()
Protected abstract void showSelection()
protected void showPrimarySelection()
protected void showFocus()
protected abstract void hideSelection()
这几个方法的英文名字表示了它们的含义,这里就不再一一介绍。
2).SelectionHandlesEditPolicy :这个类继承了SelectionEditPolicy,它提供个带控制点[handle]的选择反馈。子类提供了一个控制点的List,该List将修饰被选择的[控制器对应的]图形。GEF中提供了如下继承SelectionHandlesEditPolicy的子类:
1.BendpointEditPolicy :这个类在实现带弯点的连接时,被连接的控制器调用。
2.ConnectionEndpointEditPolicy :在连接的两端展示控制点。
3.NonResizableEditPolicy :阻止用户改变图形大小,并在被选图形上添加一格简单的黑框和在四个边角处设置四个黑色小方框。如图1所示。用户可以改变图形的位置。
4.ResizableEditPolicy :这个类继承NonResizableEditPolicy,在图形的四周添加八个黑色小方框,用来增加改变图形大小功能。
3).GraphicalNodeEditPolicy :这个类提供关于连接的反馈。当用户建立连接,从一个端点拖向另一个端点,GEF通过该类模拟一个连接。这模拟的连接被画在反馈层,它将连接到控制器提供的锚点[Anchor]。
4).LayoutEditPolicy :这是一个抽象类,它用布局管理器[LayoutManager]来放置它的子控制器图形。该类应该提供反馈,一个新元素放到该类对应的图形中的反馈。注意,这里该类对应的图形应该是一个容器图形,即该图形包含子图形。关键方法如下:
1.showLayoutTargetFeedback :这个方法展示当前的操作将放图形在什么位置的反馈。
2.getSizeOnDropFeedback :展示将新建图形的大小。
- GEF的一些总结
- 学习GEF的一些资料
- GEF总结
- 关于GEF-HelloWorld的一些经验
- GEF:Tool的职责
- GEF模型的职责
- GEF的MVC结构
- GEF基本概念的文章
- Eclipse的GEF入门
- GEF的MVC体系结构
- gef
- GEF的一个NPE bug
- GEF的一个NPE bug
- GEF property view的使用
- 最好的GEF开发教程
- GEF显示简单的标尺
- GEF 一篇不错的文章
- 使用GEF ScalableFreeformRootEditPart的注意事项
- c语言螺旋方阵逆时针旋转
- UVa 1589 (implement)
- 加密货币与共识机制
- POJ1328 贪心算法
- 一键配置java环境-学习资料备用
- GEF的一些总结
- Android App压力测试之Monkey
- 如何使用git 管理github远程仓库
- Oracle下创建自增主键
- Kettle从零出发--1:初识
- HDU
- v-once
- selenium基本入门
- DataBank收购了Stream的达拉斯数据中心