快速业务通道

[Eclipse]GEF入门系列(六、添加菜单和工具条) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
的操作,即run()方法里的代码。Eclipse引入 Retarget Action的目的是为了尽量减少主菜单/工具条的重建消耗,并且有利于用户使用上 的一致性。在GEF应用程序里,因为很可能存在多个视图(例如编辑视图和大纲视图,即使暂 时只有一个视图,也要考虑到以后扩展为多个的可能),而每个视图都应该能够完成相类似 的操作,例如在树结构的大纲视图里也应该像编辑视图一样可以删除选中节点,所以一般的 操作都应以映射到Retarget Action的方式建立。

[Eclipse]GEF入门系列(六、添加菜单和工具条)(2)

时间:2011-04-19 cnblogs bjzhanghao

主菜单/主工具条

与视图窗口不同,编辑器没有自己的菜单栏和工具条,它的菜单只能加在主菜单里。由于 一个编辑器可以有多个实例,而它们应当具有相同的菜单和工具条,所以在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));    }    protected void declareGlobalActionKeys() {    }    public void contributeToToolBar(IToolBarManager toolBarManager) {      ……    }    public void contributeToMenu(IMenuManager menuManager) {      IMenuManager mgr=new MenuManager("&Node","Node");      menuManager.insertAfter(IWorkbenchActionConstants.M_EDIT,mgr);      mgr.add(getAction(IConstants.ACTION_MARK_PRIORITY_HIGH));      mgr.add(getAction(IConstants.ACTION_MARK_PRIORITY_MEDIUM));      mgr.add(getAction(IConstants.ACTION_MARK_PRIORITY_LOW));    } }

可以看到,DiagramActionBarContributor类继承自GEF提供的类ActionBarContributor, 后者是实现了IEditorActionBarContributor接口的一个抽象类。buildActions()方法用于创 建那些要添加到主菜单/工具条的Retarget Actions,并把它们注册到一个专门的注册表里; 而contributeToMenu()方法里的代码把这些Retarget Actions实际添加到主菜单栏,使用 IMenuManager.insertAfter()是为了让新加的菜单出现在指定的系统菜单后面, contributeToToolBar()里则是添加到主工具条的代码。

[Eclipse]GEF入门系列(六、添加菜单和工具条) - 编程入门网

图2 添加到主菜单条和主工具条上的Action

[Eclipse]GEF入门系列(六、添加菜单和工具条)(3)

时间:2011-04-19 cnblogs bjzhanghao

GEF 在ActionBarContributor里维护了retargetActions和globalActionKeys两个列表, 其中后者是一个Retarget Actions的ID列表,addRetargetAction()方法会把一个Retarget Action同时加到二者中

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号