解决RCP中CNF(navigator)配置后delete\copy\past快捷键失效
来源:互联网 发布:linux服务器ip怎么看 编辑:程序博客网 时间:2024/06/05 16:51
这两天在配置一个CNF导航视图时候发现快捷键delete、past、copy等都失效了,折腾良久,搞清楚了;
1.快捷键要想能在菜单右边显示出来:
deleteAction.setActionDefinitionId(IWorkbenchCommandConstants.EDIT_DELETE);
2.要想生效必须绑定handler:
@Overridepublic void fillActionBars(final IActionBars actionBars) {if (textActionHandler == null) {textActionHandler = new TextActionHandler(actionBars); // hook// handlers}textActionHandler.setCopyAction(copyAction);textActionHandler.setPasteAction(pasteAction);textActionHandler.setDeleteAction(deleteAction);// renameAction.setTextActionHandler(textActionHandler);updateActionBars();textActionHandler.updateActionBars();}
public void updateActionBars() {actionBars.setGlobalActionHandler(ActionFactory.CUT.getId(), textCutAction);actionBars.setGlobalActionHandler(ActionFactory.COPY.getId(), textCopyAction);actionBars.setGlobalActionHandler(ActionFactory.PASTE.getId(), textPasteAction);actionBars.setGlobalActionHandler(ActionFactory.SELECT_ALL.getId(), textSelectAllAction);actionBars.setGlobalActionHandler(ActionFactory.DELETE.getId(), textDeleteAction);}
setGlobalActionHandler把id和action绑定到一块;
这里你发现绑定的action并不是自己那个action,是texthandler中的action;
如果想强制生效可以直接把这个action换成我们那个action;
3.推荐的解决方法:
之所以不生效,是因为系统找不到action对应的commandid,我们可以绑定:
protected void makeActions() {clipboard = new Clipboard(shell.getDisplay());...deleteAction.setActionDefinitionId(IWorkbenchCommandConstants.EDIT_DELETE);initActionCommandMappingService();}/** * 快捷键绑定actionBars.setGlobalActionHandler(); * 这里使用了textActionHandler.updateActionBars();所以绑定的是textActionHandler中text*Action,而不是这里的action; * 方法一:重新设置setGlobalActionHandler为这里的action; * 方法二:ActionCommandMappingService中添加这里的action映射WorkbenchCommandConstants.EDIT_* */private void initActionCommandMappingService() {final IActionCommandMappingService actionCommandMappingService = (IActionCommandMappingService) CommonUIPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getService(IActionCommandMappingService.class);final String idDelete = actionCommandMappingService.getCommandId(ActionFactory.DELETE.getId());if (idDelete == null) {actionCommandMappingService.map(ActionFactory.DELETE.getId(), IWorkbenchCommandConstants.EDIT_DELETE);}final String idCopy = actionCommandMappingService.getCommandId(ActionFactory.COPY.getId());if (idCopy == null) {actionCommandMappingService.map(ActionFactory.COPY.getId(), IWorkbenchCommandConstants.EDIT_COPY);}final String idPast = actionCommandMappingService.getCommandId(ActionFactory.PASTE.getId());if (idPast == null) {actionCommandMappingService.map(ActionFactory.PASTE.getId(), IWorkbenchCommandConstants.EDIT_PASTE);}}
这样问题就解决了
0 0
- 解决RCP中CNF(navigator)配置后delete\copy\past快捷键失效
- rcp(插件开发)CNF(Common Navigator Framework)简介
- 虚拟机目录copy或移动后网络配置失效问题的解决
- Common Navigator Framework (CNF)
- Common Navigator CNF
- 解决加了@EnableHystrixDashboard后项目中freemarker配置失效导致404问题
- RCP程序的Navigator View中图标丢失解决办法
- Ubuntu 下jdk的环境变量配置(解决了重启电脑后失效的问题!)
- 为RCP程序添加导航Navigator视图(转鹏)
- 解决maven工程中使用spring-boot后导致的profile多环境配置失效的问题
- eclipse部分快捷键失效解决
- [已解决]MyEclipse导入Web项目后各种红色xx的问题 F3快捷键失效问题.
- MY.CNF配置(转载)
- 在rcp应用程序中引用外部jar后产生的NoClassDefFoundError的解决
- 在rcp应用程序中引用外部jar后产生的NoClassDefFoundError的解决
- 在rcp应用程序中引用外部jar后产生的NoClassDefFoundError的解决
- 在rcp应用程序中引用外部jar后产生的NoClassDefFoundError的解决
- 解决ReactNavigation中Navigator嵌套问题
- 1101. Quick Sort (25)
- lnmp和lnmp的性能
- TeamViewer现在无法捕捉屏幕,这可能是由于快速的用户切换或远程桌面会话已经断开
- 推荐算法之 slope one 算法
- Docker Registry + redis 遇到的两个小坑
- 解决RCP中CNF(navigator)配置后delete\copy\past快捷键失效
- Rails 执行 rails server 报错 Could not find a JavaScript runtime
- java hadoop hdfs 上写文件
- 获取屏幕状态
- T123AI芯片简介
- java byte转二进制字符串
- OpenCV下载,安装,集成,开发
- 机器学习笔记-多分类学习,类别不平衡,决策树
- 上线前的最后一公里:灰度测试