[Eclipse]GEF入门系列(六、添加菜单和工具条) - 编程入门网
,对于已有的Retarget Actions,我们应该在 declareGlobalActionKeys()方法里调用addGlobalActionKey()方法来声明,在一个编辑器被 激活的时候,与globalActionKeys里的那些ID具有相同ID值的(具有实际功能的)Action将 被联系到该ID对应的Retarget Action,因此就不需要显式的去调用 setGlobalActionHandler()方法了,只要保证二者的ID相同即可实现映射。
GEF已经内置了撤消/重做和删除这三个操作的Retarget Action(因为太常用了),它们 的ID分别是IWorkbenchActionConstants.UNDO、REDO和DELETE,所以没有什么问题。而设置 优先级这个Action没有语义相近的现成Retarget Action可用,所以我们自己要先定义一个 PriorityRetargetAction,内容如下(没有经过国际化处理):
接下来要在编辑器(CbmEditor)的createActions()里建立具有实际功能的Actions,它 们应该是SelectionAction(GEF提供)的子类,因为我们需要得到当前选中的节点。稍后将 给出PriorityAction的代码,编辑器的createActions()方法的代码如下所示:
[Eclipse]GEF入门系列(六、添加菜单和工具条)(4)时间:2011-04-19 cnblogs bjzhanghao请再次注意在这个方法里每个Action的id都与前面创建的Retarget Action的ID对应,否 则将无法对应到主菜单条和主工具条中的Retarget Actions。你可能已经发现了,这里我们 只创建了设置优先级的三个Action,而没有建立负责撤消/重做和删除的Action。其实GEF在 这个类的父类(GraphicalEditor)里已经创建了这些常用Action,包括撤消/重做、全选、 保存、打印等,所以只要别忘记调用super.createActions()就可以了。 GEF提供的UNDO/REDO/DELETE等Action会根据当前选择的editpart(s)自动判断自己是否可 用,我们定义的Action则要自己在Action的calculateEnabled()方法里计算。另外,为了 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |