解决RCP中CNF(navigator)配置后delete\copy\past快捷键失效

2023-12-14 17:32

本文主要是介绍解决RCP中CNF(navigator)配置后delete\copy\past快捷键失效,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这两天在配置一个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);}}

这样问题就解决了






这篇关于解决RCP中CNF(navigator)配置后delete\copy\past快捷键失效的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/493413

相关文章

idea maven编译报错Java heap space的解决方法

《ideamaven编译报错Javaheapspace的解决方法》这篇文章主要为大家详细介绍了ideamaven编译报错Javaheapspace的相关解决方法,文中的示例代码讲解详细,感兴趣的... 目录1.增加 Maven 编译的堆内存2. 增加 IntelliJ IDEA 的堆内存3. 优化 Mave

如何解决mmcv无法安装或安装之后报错问题

《如何解决mmcv无法安装或安装之后报错问题》:本文主要介绍如何解决mmcv无法安装或安装之后报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mmcv无法安装或安装之后报错问题1.当我们运行YOwww.chinasem.cnLO时遇到2.找到下图所示这里3.

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

Python 安装和配置flask, flask_cors的图文教程

《Python安装和配置flask,flask_cors的图文教程》:本文主要介绍Python安装和配置flask,flask_cors的图文教程,本文通过图文并茂的形式给大家介绍的非常详细,... 目录一.python安装:二,配置环境变量,三:检查Python安装和环境变量,四:安装flask和flas

Feign Client超时时间设置不生效的解决方法

《FeignClient超时时间设置不生效的解决方法》这篇文章主要为大家详细介绍了FeignClient超时时间设置不生效的原因与解决方法,具有一定的的参考价值,希望对大家有一定的帮助... 在使用Feign Client时,可以通过两种方式来设置超时时间:1.针对整个Feign Client设置超时时间

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

springboot security之前后端分离配置方式

《springbootsecurity之前后端分离配置方式》:本文主要介绍springbootsecurity之前后端分离配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的... 目录前言自定义配置认证失败自定义处理登录相关接口匿名访问前置文章总结前言spring boot secu

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML