您的位置:首页 > 其它

给RCP系统添加全局快捷键

2010-04-08 16:49 316 查看
文章转自: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
"
;

}

3、创建Action类,在构造函数里用两个方法注册一下

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);

}

}

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

register(monitorAction);

注意:如果你没有在plugin.xml和makeActions做上面讲过的设置,加上这一句将可能导致

你的RCP系统无法启动。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: