快捷键的数量是有限的,何况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="miner.accelerator"
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中的方法和编码模式,提高开发效率和代码...
1. **Eclipse RCP基础**:首先,书中会介绍Eclipse RCP的基本概念,包括其核心架构、组件模型、插件机制等,帮助读者理解RCP的工作原理。 2. **开发环境搭建**:讲解如何安装Eclipse IDE,配置RCP开发环境,以及...
中文语言包主要解决Eclipse RCP的国际化问题,使用户界面(UI)适应中文环境。对于中国开发者来说,使用母语界面可以提高开发效率,减少因翻译错误导致的误解。这个语言包包含了Eclipse RCP 3.6.0版本中的所有关键...
在实际操作中,可能会遇到一些特定问题,如依赖冲突、资源优化等,这需要根据实际情况进行调整和解决。同时,持续关注Eclipse RCP的更新和社区支持,可以帮助你更好地利用这个平台的优势,提升开发效率和用户体验。
1. **基础架构**:Eclipse RCP的基础是插件系统,每个插件都可以提供特定的功能。通过插件之间的依赖关系,可以构建复杂的系统。书中会详细介绍如何创建和管理插件项目。 2. **工作台(Workbench)**:Eclipse RCP...
1. **Eclipse RCP架构**:理解Eclipse RCP的基础架构非常重要,包括插件(Plugins)、工作台(Workbench)、视图(Views)、编辑器(Editors)、透视图(Perspectives)等核心概念。这些组件共同构成了一个灵活且...
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插件开发15至24章的学习笔记,这些章节覆盖了多个关键主题,下面将对这些主题进行详细解读。 1. **第15章:对话框和向导(Dialogs and Wizards)** - 在Eclipse RCP中,...
Eclipse RCP是一个强大的开发框架,允许开发者创建桌面应用,它提供了丰富的用户界面组件和灵活的插件架构。 【描述】中的“非常棒的一个rcp应用程序”意味着这个工程展示了Eclipse RCP的强大功能和易用性,可能是...
本文将深入探讨Eclipse插件开发的相关知识点,结合提供的"全书分为4篇共24章"的学习笔记和源码,帮助你更全面地理解和实践Eclipse插件开发。 第一篇:基础篇 在这一篇中,你将学习到Eclipse插件开发的基础知识,...
6. **命令与快捷键**:Eclipse RCP提供了命令框架,允许自定义用户操作,如菜单项和快捷键。例子程序会展示如何定义、注册和绑定这些命令。 7. **服务(Service)**:Eclipse RCP支持服务导向的架构,通过服务,...
5. **命令(Command)与手势(Handler)**:命令是Eclipse RCP中的动作抽象,手势则将命令与用户操作(如鼠标点击、键盘快捷键)关联起来。这种设计使得UI行为的实现与表现分离,易于维护。 6. **服务(Service)**...
Eclipse RCP是一种基于Eclipse平台的富客户端平台技术,它允许开发者创建独立于Eclipse环境的Java桌面应用程序。RCP通过提供一套标准组件和API,简化了桌面应用程序的开发流程,使开发者能够专注于业务逻辑而非界面...
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平台概述与起源 Eclipse平台是一个开源的、基于Java的可扩展开发框架,由一系列服务和框架构成,旨在通过插件组件构建高度定制化的开发环境。...