此解决方案来自网络,个人备用
快捷键的数量是有限的,何况Eclipse预定义了为数不少的快捷键,所以你开发的RCP程序自定义的快捷键与Eclipse默认定义出现冲突是寻常情况,这时候如何让我们自定义的快捷键优先被接受?方法有几种,在此,我向大家介绍一种万全之策。
一般给Action绑定快捷键的方法是自定义binding和command。例如我们实现了文件保存的动作代码,将这个动作与快捷键CTRL+S绑定,我们在该应用的plugin.xml文件中添加了以下代码:
<extension
point="org.eclipse.ui.bindings">
<key
commandId="miner.file.save"
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
sequence="CTRL+S">
</key>
</extension>
<extension
point="org.eclipse.ui.commands">
<command
id="miner.file.save"
name="Save">
</command>
</extension>
一般情况下,如上XML片段绑定的快捷键都可以正常使用。但是遇到快捷键冲突,就像org.eclipse.ui插件已经提供了一个Ctrl+S的快捷键,按下Ctrl+S将不能如我们所愿直接激活miner.file.save动作。遇到这种情况,我们可以选择改用另一个快捷键,也可以自定义动作的 commandId,将miner.file.save改成org.eclipse.ui.file.save。因为在Eclipse默认定义里,CTRL+S是与org.eclipse.ui.file.save绑定的,我们自定义了org.eclipse.ui.file.save的新实现。以上两种方法都不甚便利,最理想的解决之道是下面的自定义schema办法。
注意到,在之前定义的bindings用到的schemaId都是 org.eclipse.ui.defaultAcceleratorConfiguration,这个schema存储了Eclipse用到的所有默认快捷键。为何我们不自定义一个自己的schema文件,并把它设成当前使用的schema文件,那么Eclipse就会调用自定义的schema文件。且看下面修改后的plugin.xml片段:
<extension
point="org.eclipse.ui.bindings">
<scheme
id="miner.accelerator"
name="myAccelerator"
parentId="org.eclipse.ui.defaultAcceleratorConfiguration">
</scheme>
<key
commandId="miner.file.save"
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
sequence="CTRL+S">
</key>
</extension>
<extension
point="org.eclipse.ui.commands">
<command
id="miner.file.save"
name="Save">
</command>
</extension>
miner.accelerator是一个新的schema文件,它在org.eclipse.ui.bindings扩展点中定义。请注意,在定义新 schema的时候有一个parentID属性,如果定义了它,新的schema会像类继承一样把parent schema里面的key binding全继承下来。如果不定义,则是一个全新的schema。
至此是否大功告成?不行,还差重要的一步——让新建的schema文件生效。这需要plugin配置文件的支持,过程有些复杂,我简要的介绍三个实现步骤。RCP新手希望更深入的理解,可以从网上搜索RCP product配置方面的知识。
1. 新建一个plugin配置文件,遵循习惯,我们将这个文本文件命名为 plugin_customization.ini;
2. 在上述配置文件中加入以下语句:
org.eclipse.ui/KEY_CONFIGURATION_ID=miner.accelerator
KEY_CONFIGURATION_ID属性指示你将激活的schema;
3. 在plugin.xml中加入product扩展,将这个扩展的preferenceCustomization属性值赋予plugin_customization.ini。就如以下的XML片段:
<extension id="product" point="org.eclipse.core.runtime.products">
<product application="miner.application" name="miner">
<property name="preferenceCustomization" value="plugin_customization.ini">
</property>
</product>
</extension>
分享到:
相关推荐
eclipse3.4 RCP插件开发英文教程,转成了pdf
eclipse rcp 插件开发学习笔记.pdf 15-24章
以及Eclipse RCP扩展的使用和扩展点的开发,掌握这些技术知识的读者将能构建一个结构完整的Eclipse RCP软件,并解决软件开发过程中遇到的故障;实战篇(第13-15章)详细讲解了Eclipse RCP与Spring OSGi框架、...
eclipse rcp 插件开发学习笔记.pdf 1-14章
Eclipse RCP富客户端平台,基于Eclipse开发的。
Eclipse RCP plugin 开发快速入门。理论与实践相结合,容易理解。
eclipse rcp开发插件详解,快速开发eclipse插件,资源很好
Eclipse rcp 实现文本内容对比功能,可自己选取对比的文件进行比较
eclipse rcp应用系统开发方法与实战源代码.zip
Eclipse RCP开发教程,RCP入门教程,教你如何使用SWT Eclipse RCP开发教程,RCP入门教程,教你如何使用SWT Eclipse RCP开发教程,RCP入门教程,教你如何使用SWT Eclipse RCP开发教程,RCP入门教程,教你如何使用SWT
Eclipse RCP 软件打包发布方法。之前花了5分下了一个教材,更不不好用。现在自己摸索写了一个,绝对赞~
Eclipse RCP中使用第三方包,图文并茂很不错。
EclipseRcp 例子程序
eclipse rcp check table
clipse RCP允许开发者使用eclipse结构风格设计弹性的可扩展的应用程序,可重用Eclipse中已存在的方法和编码模式。俗话说,万事开头难。Eclipse RCP入手可能会比较困难、费时。接下来我们将主要讲述如何让RCP工作 ...
ECLIPSE RCP项目开发源程序(中文注释)
EclipseRCP教程EclipseRCP教程EclipseRCP教程
Eclipse RCP入门,初级的RCP开发介绍。
通过例子学习EclipseRCP开发通过例子学习EclipseRCP开发
eclipse RCP的mp3工程,非常棒的一个rcp应用程序,学习学习,快来下