现在的位置: 首页 > 综合 > 正文

给RCP系统添加全局快捷键

2013年01月02日 ⁄ 综合 ⁄ 共 1749字 ⁄ 字号 评论关闭

文章转自: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系统无法启动。

抱歉!评论已关闭.