- 3
- 0
- 约6.1千字
- 约 7页
- 2017-12-19 发布于河南
- 举报
GEF理解系列三
/blog/152087GEF理解系列三关键字: gef理解系列 经过以上步骤,我们已经有办法显示多个图形了。还是重提一下:Editor的初始状态由initializeGraphicalViewer()方法决定。不过在我们已经完成的过程,我们会发现,初始状态,也是最终状态,我们甚至不能移动任何一个图,当然了也不能增加和删除。下面我们要逐一的实现这些功能。在继续之前,我们先了解一下GEF执行操作的过程,看下图:图一 从上图可以看到。GEF把SWT事件包装成一个个的request发送到Controller(EditPart)上,通过Controller(EditPart)来操作、修改模型和视图。但是Controller(EditPart)并不直接进行操作。而是由安装在Controller(EditPart)上的一个个Policy来完成的。每个Controller(EditPart)上会安若干个Policies。当然了Policy其实也不直接完成操作,而只是返回一个对应的Command,由Command去实现真正的操作。 图二 在GEF中,实现任何操作,都是同样的路子:安装对应的Policy--返回某个Command--执行(由框架调) 我们应该还记得在之前的篇段里,我们一直没讲到EditPart的一个方法:createEditPolicies()。下面,就要开始用到这个方法了。 ?一、图形的移动与缩放首先需要明白的一点就是:对子图形的改变大小、变换位置的操作都是由父模型来负责完成的,因为子图形是附着在父图形上来显示。如果要实现对子模型的改变大小、变换位置的操作,我们需要在父模型的editpart上安装一个policy。可能初学的一个难点就是要找到一个直接对应的Policy。在EditPolicy里已经定义了一些Policy的Key常量。每个常量对应的Policy的名字通常和常量的名字相同。例如:常量名 类名 CONNECTION_ROLE ConnectionEditPolicy GRAPHICAL_NODE_ROLE GraphicalNodeEditPolicy COMPONENT_ROLE ComponentEditPolicy CONTAINER_ROLE ContainerEditPolicy DIRECT_EDIT_ROLE DirectEditPolicy 。。。。。。 。。。。。。表一所以如果我们选择了某个常量,就能知道应该选择哪个对应的EditPolicy;另外Policy名字有时也就决定了它的作用,所以要找到一个正确的Policy也不是太难。我个人觉得如果真的不知道应该选择哪个Policy,那就把觉得可能的一个一个的试,因为每个EditPolicy继承时都会有一些要求实现的方法,例如GraphicalNodeEditPolicy需要实现的方法有:protected Command getConnectionCompleteCommand(CreateConnectionRequest request)?; protected Command getConnectionCreateCommand(CreateConnectionRequest request)?; protected Command getReconnectSourceCommand(ReconnectRequest request)?; protected Command getReconnectTargetCommand(ReconnectRequest request) ;很显然,如果是要实现创建连接和重连的话,应该安装这个Policy,所以对应的安装就应该是: installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, new **GraphicalNodeEditPolicy()); 好了,废话少说。继续我们的事情。 要实现图形的移动和缩放,需要安装的Policy是LayoutEditPolicy,所以我们需要实现一个LayoutEditPolicy的子类,不过这里,我们要注意的是,我们应该继承的类为:XYLayoutEditPolicy。这是LayoutEditPolicy的一个子类。在实现之前,我们先想一下,要实现移动或者是缩放,我们需要哪些东西。很显示,我们要有一个需要将要移动或缩放的结点对象吧,对吧?另外,我们得知道移动或缩放后的位置大小吧,对吧?所以我们的command如果想完成这个任务,那么它至少需要知道这两个东西。所以我们的Policy可以如下实现了:public class DiagramLayoutPolicy extends XYLayoutEditPolicy { ?@Ove
您可能关注的文档
- 英语选择题答题技巧.doc
- V-Ray基础教学教程—VR设置折射颜色.doc
- 电气工程专业英语翻译1.doc
- vray渲染参数解释.doc
- 囧研究 英国人说760万能买到幸福.docx
- Bayer转换算法.docx
- 现代大学英语1 Lesson8-12精读试题.doc
- Oracle RAC以及ASM安装全过程整理.doc
- 专四备考:填空题常考.doc
- 3--四川省成都七中2011届高三“一诊”模拟英语试题.doc
- 伟明环保-市场前景及投资研究报告-境内业务稳健运行,印尼市场贡献边际增量.pdf
- 桂东县法院系统招聘考试真题2025.pdf
- 贵州省黔南布依族2026年中考三模物理试题及答案.pdf
- 贵州省黔南州2026年中考语文二模试卷附答案.pdf
- 贵州省铜仁市2026年中考语文二模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套完整答案详解.docx
- 贵州省毕节市2026年中考语文一模试卷附答案.pdf
- 贵州省贵阳市南明区2026年中考语文一模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套参考答案详解.docx
- 贵州省贵阳市白云区2026年中考二模物理试题附答案.pdf
最近下载
- 新媒体短视频制作与剪辑.pptx VIP
- 新版河北农业大学农艺与种业考研经验考研参考书考研真题.docx VIP
- 新版河北农业大学农艺与种业考研经验考研参考书考研真题.docx VIP
- 面向产业的算法治理研究(2025年).pptx
- 梵音入汉:佛经汉译对汉语演进的多维影响.docx
- 小学低段音乐课堂管理方法的研究课题资料(包含申请表、开题报告、实施方案、结题报告等).pdf VIP
- 2026《隧道贯通误差预计计算案例》4000字.docx
- 2022-2023学年北京市丰台区高二(下)期末数学试卷(附答案详解).docx VIP
- 5m盐酸溶液的配制 -回复.pdf VIP
- 2026年新疆工程学院辅导员招聘备考题库最新.docx VIP
原创力文档

文档评论(0)