关键字: 给rcp系统添加全局快捷键
文章转自: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中添加两个扩展点如下
说明:
。org.eclipse.ui.file.exit是另一个退出系统命令,是复用了Eclipse本身的那个,它和本例无关。
。commandId要求唯一
。cmmands扩展点的category是一个组,估计不要也可以,最后还是加上吧。
。bindings扩展点中的commandId对应于cmmands扩展点中的id
2、创建一个类,专门保存所有commandId
3、创建Action类,在构造函数里用两个方法注册一下
4、在ApplicationActionBarAdvisor的makeActions方法,给monitorAction对象加上这样一句
注意:如果你没有在plugin.xml和makeActions做上面讲过的设置,加上这一句将可能导致
你的RCP系统无法启动。
一个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>
<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";
- }
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);
- }
- }
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);
register(monitorAction);
注意:如果你没有在plugin.xml和makeActions做上面讲过的设置,加上这一句将可能导致
你的RCP系统无法启动。
本文介绍如何为RCP系统添加全局快捷键,通过在plugin.xml文件中配置扩展点并创建对应的Action类,实现类似Eclipse中Ctrl+Shift+O的功能。文中详细解释了从配置到注册的全过程。
537

被折叠的 条评论
为什么被折叠?



