此解决方案来自网络,个人备用
快捷键的数量是有限的,何况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>
分享到:
相关推荐
### Eclipse RCP 插件开发指南 #### Eclipse RCP Plugin 开发快速入门 Eclipse RCP(Rich Client Platform)插件开发是构建基于Eclipse框架的应用程序的核心技术之一。本指南旨在帮助开发者从零开始掌握Eclipse ...
eclipse RCP(Rich Client Platform)是一种基于eclipse的插件式开发平台,允许开发者使用eclipse结构风格设计弹性的可扩展的应用程序。RCP插件式开发方式可以重用eclipse中的方法和编码模式,提高开发效率和代码...
中文语言包主要解决Eclipse RCP的国际化问题,使用户界面(UI)适应中文环境。对于中国开发者来说,使用母语界面可以提高开发效率,减少因翻译错误导致的误解。这个语言包包含了Eclipse RCP 3.6.0版本中的所有关键...
1. **Eclipse RCP基础**:首先,书中会介绍Eclipse RCP的基本概念,包括其核心架构、组件模型、插件机制等,帮助读者理解RCP的工作原理。 2. **开发环境搭建**:讲解如何安装Eclipse IDE,配置RCP开发环境,以及...
1. **基础架构**:Eclipse RCP的基础是插件系统,每个插件都可以提供特定的功能。通过插件之间的依赖关系,可以构建复杂的系统。书中会详细介绍如何创建和管理插件项目。 2. **工作台(Workbench)**:Eclipse RCP...
在实际操作中,可能会遇到一些特定问题,如依赖冲突、资源优化等,这需要根据实际情况进行调整和解决。同时,持续关注Eclipse RCP的更新和社区支持,可以帮助你更好地利用这个平台的优势,提升开发效率和用户体验。
1. **Eclipse RCP架构**:理解Eclipse RCP的基础架构非常重要,包括插件(Plugins)、工作台(Workbench)、视图(Views)、编辑器(Editors)、透视图(Perspectives)等核心概念。这些组件共同构成了一个灵活且...
在提供的压缩包中,包含了关于Eclipse RCP插件开发15至24章的学习笔记,这些章节覆盖了多个关键主题,下面将对这些主题进行详细解读。 1. **第15章:对话框和向导(Dialogs and Wizards)** - 在Eclipse RCP中,...
2. RCP(Rich Client Platform):Eclipse RCP 的核心架构,提供了应用程序的入口、视图管理、事件处理和插件管理机制。 3. Plug-in:Eclipse RCP 的插件机制,允许开发者轻松地开发和集成新的功能模块。 4. View:...
### Eclipse RCP 入门详解 #### 一、Eclipse RCP 概述 **Eclipse RCP**(Rich Client Platform)是一种构建丰富客户端应用程序的框架,它利用Eclipse平台的强大功能来创建高度定制化的桌面应用程序。通过RCP,...
Eclipse RCP是一个强大的开发框架,允许开发者创建桌面应用,它提供了丰富的用户界面组件和灵活的插件架构。 【描述】中的“非常棒的一个rcp应用程序”意味着这个工程展示了Eclipse RCP的强大功能和易用性,可能是...
6. **命令与快捷键**:Eclipse RCP提供了命令框架,允许自定义用户操作,如菜单项和快捷键。例子程序会展示如何定义、注册和绑定这些命令。 7. **服务(Service)**:Eclipse RCP支持服务导向的架构,通过服务,...
5. **命令(Command)与手势(Handler)**:命令是Eclipse RCP中的动作抽象,手势则将命令与用户操作(如鼠标点击、键盘快捷键)关联起来。这种设计使得UI行为的实现与表现分离,易于维护。 6. **服务(Service)**...
最后,Eclipse RCP的发展带来了Java桌面应用程序开发的新希望,它允许开发者利用Eclipse的强大功能和成熟的插件生态,来构建功能丰富、外观一致的客户端应用,同时避免了大量重复的界面开发工作。Eclipse RCP的应用...
Eclipse提供了一套强大的调试工具,包括对插件和RCP应用程序的专门支持,帮助你定位和解决问题。 总之,Eclipse RCP提供了一个强大而灵活的平台,用于构建高质量的桌面应用。通过深入学习"**Eclipse RCP开发详解**...
4. **示例应用**:`example_rcp_applications_v2.pdf`可能是包含实际RCP应用的案例研究,这些案例将展示如何使用RCP来构建复杂的应用程序,以及在实践中可能遇到的问题和解决方案。 5. **HTML文章**:`article....
1. **插件(Plugins)**:Eclipse RCP基于插件架构,每个功能模块都被封装在单独的插件中,这样可以实现模块化开发,提高代码的复用性和可扩展性。在标签中提到的"ECLIPSE RCP 插件",意味着这个项目可能包含多个...
以及Eclipse RCP扩展的使用和扩展点的开发,掌握这些技术知识的读者将能构建一个结构完整的Eclipse RCP软件,并解决软件开发过程中遇到的故障;实战篇(第13-15章)详细讲解了Eclipse RCP与Spring OSGi框架、...
Eclipse RCP的核心概念是模块化,通过插件(Plug-ins)机制来构建可扩展的应用程序。以下是对Eclipse RCP插件开发学习笔记1-14章的详细知识点解析: 1. **第1章 Eclipse平台简介**: - Eclipse平台是基于OSGi...