六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 68|回复: 0

给RCP系统添加全局快捷键

[复制链接]

升级  41.33%

28

主题

28

主题

28

主题

秀才

Rank: 2

积分
112
 楼主| 发表于 2013-2-7 15:01:42 | 显示全部楼层 |阅读模式
文章转自:http://www.blogjava.net/chengang/archive/2006/04/28/43873.html
一个RCP系统,给它添加一个象Eclipse中Ctrl+Shift+O一样的全局快捷键,怎么加?

参考了RCP的Email项目示例,给我RCP项目中MonitorAction(显示一个监视器的命令)添加一个快捷键Ctrl+1。简单把添加的过程概述如下:

1、首先在plugin.xml中添加两个扩展点如下
  <extension         point="org.eclipse.ui.bindings">      <key            commandId="org.eclipse.ui.file.exit"            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"            sequence="CTRL+X"/>      <key            commandId="adminconsole.monitor"            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"            sequence="CTRL+1"/>   </extension>   <extension         point="org.eclipse.ui.commands">      <category            id="adminconsole.perspective"            name="Perspective"/>      <command            categoryId="adminconsole.perspective"            id="adminconsole.monitor"            name="Open Monitor Perspective"/>   </extension>


说明:
。org.eclipse.ui.file.exit是另一个退出系统命令,是复用了Eclipse本身的那个,它和本例无关。
。commandId要求唯一
。cmmands扩展点的category是一个组,估计不要也可以,最后还是加上吧。
。bindings扩展点中的commandId对应于cmmands扩展点中的id

2、创建一个类,专门保存所有commandId
public interface ICommandIds {    public static final String CMD_MONITOR = "adminconsole.monitor";}  

    private static class MonitorAction extends Action {        public MonitorAction() {            setText("监视");            // The id is used to refer to the action in a menu or toolbar            setId(ICommandIds.CMD_MONITOR);            // Associate the action with a pre-defined command, to allow key bindings.            setActionDefinitionId(ICommandIds.CMD_MONITOR);        }    }
3、创建Action类,在构造函数里用两个方法注册一下


4、在ApplicationActionBarAdvisor的makeActions方法,给monitorAction对象加上这样一句
register(monitorAction);


注意:如果你没有在plugin.xml和makeActions做上面讲过的设置,加上这一句将可能导致
你的RCP系统无法启动。
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表