GEF 入门教材.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
GEF 入门系列 作者:八进制 整理:Dart 大多数情况下,我们说开发一个基于Eclipse的应用程序就是指开发一个Eclipse插件 (plugin),Eclipse里的每个插件都有一个名为plugin.xml的文件用来定义插件里的各种 元素,例如这个插件都有哪些编辑器,哪些视图等等。在视图中使用菜单和工具条请参考以 前的贴子,本篇只介绍编辑器的情况,因为GEF应用程序大多数是基于编辑器的。 图 1 Eclipse 平台的几个组成部分 首先要介绍 Retarget Action 的概念,这是一种具有一定语义但没有实际功能的 Action, 它唯一的作用就是在主菜单条或主工具条上占据一个项位置,编辑器可以将具有实际功能的 Action 映射到某个 Retarget Action,当这个编辑器被激活时,主菜单/工具条上的那个 Retarget Action 就会具有那个 Action 的功能。举例来说,Eclipse 提供了 IWorkbenchActionConstants.COPY 这个 Retarget Action,它的文字和图标都是预先 定义好的,假设我们的编辑器需要一个复制节点到剪贴板功能,因为复制节点和复制 这两个词的语义十分相近,所以可以新建一个具有实际功能的 CopyNodeAction(extends Action),然后在适当的位置调用下面代码实现二者的映射: IActionBars.setGlobalActionHandler(IWorkbenchActionConstants.COPY, copyNodeAction) 当这个编辑器被激活时,Eclipse 会检查到这个映射,让 COPY 项变为可用状态,并且 当用户按下它时去执行 CopyNodeAction 里定义的操作,即 run()方法里的代码。Eclipse 引入 Retarget Action 的目的是为了尽量减少主菜单/工具条的重建消耗,并且有利于用户 使用上的一致性。在 GEF 应用程序里,因为很可能存在多个视图(例如编辑视图和大纲视 图,即使暂时只有一个视图,也要考虑到以后扩展为多个的可能),而每个视图都应该能够 第 32 页,共 79 页 GEF 入门系列 作者:八进制 整理:Dart 完成相类似的操作,例如在树结构的大纲视图里也应该像编辑视图一样可以删除选中节点, 所以一般的操作都应以映射到 Retarget Action 的方式建立。 主菜单/主工具条 与视图窗口不同,编辑器没有自己的菜单栏和工具条,它的菜单只能加在主菜单里。由 于一个编辑器可以有多个实例,而它们应当具有相同的菜单和工具条,所以在 plugin.xml 里定义一个编辑器的时候,元素有一个 contributorClass 属性,它的值是一个实现 IEditorActionBarContributor 接口的类的全名,该类可以称为菜单工具条添加器。在添 加器里可以向 Eclipse 的主菜单/主工具条里添加自己需要的项。还是以我们这个项目为例, 它要求对每个操作可以撤消/重做,对画布上的每个元素可以删除,对每个节点元素可以设 置它的优先级为高、中、低三个等级。所以我们要添加这六个 Retarget Action,以下就是 DiagramActionBarContributor 类的部分代码: public class DiagramActionBarContributor extends ActionBarContributor { protected void buildActions() { addRetargetAction(new UndoRetargetAction()); addRetargetAction(new RedoRetargetAction()); addRetargetAction(new DeleteRetargetAction()); addRetargetAction(new PriorityRetargetAction( IConstants.PRIORITY_HIGH)); addRetargetAction(new PriorityRetargetAction( IConstants.PRIORITY_MEDIUM)); addRetargetAction(new PriorityRetargetAction( IConstants.PRIORITY_LOW)); } protec

文档评论(0)

好文精选 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档