`

eclipse rcp 插件快捷键冲突解决方案 ctrl+s

 
阅读更多
快捷键的数量是有限的,何况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 插件开发指南 #### Eclipse RCP Plugin 开发快速入门 Eclipse RCP(Rich Client Platform)插件开发是构建基于Eclipse框架的应用程序的核心技术之一。本指南旨在帮助开发者从零开始掌握Eclipse ...

    ECLIPSE+RCP应用系统开发方法与实战(PDF 高岗著)

    1. **Eclipse RCP基础**:首先,书中会介绍Eclipse RCP的基本概念,包括其核心架构、组件模型、插件机制等,帮助读者理解RCP的工作原理。 2. **开发环境搭建**:讲解如何安装Eclipse IDE,配置RCP开发环境,以及...

    eclipse RCP Plug-in开发自学教程.pdf

    eclipse RCP(Rich Client Platform)是一种基于eclipse的插件式开发平台,允许开发者使用eclipse结构风格设计弹性的可扩展的应用程序。RCP插件式开发方式可以重用eclipse中的方法和编码模式,提高开发效率和代码...

    Eclipse RCP 软件打包发布方法

    在实际操作中,可能会遇到一些特定问题,如依赖冲突、资源优化等,这需要根据实际情况进行调整和解决。同时,持续关注Eclipse RCP的更新和社区支持,可以帮助你更好地利用这个平台的优势,提升开发效率和用户体验。

    Eclipse rcp深入浅出中英文版及配套代码

    1. **基础架构**:Eclipse RCP的基础是插件系统,每个插件都可以提供特定的功能。通过插件之间的依赖关系,可以构建复杂的系统。书中会详细介绍如何创建和管理插件项目。 2. **工作台(Workbench)**:Eclipse RCP...

    eclipse rcp应用系统开发方法与实战源代码.zip

    1. **Eclipse RCP架构**:理解Eclipse RCP的基础架构非常重要,包括插件(Plugins)、工作台(Workbench)、视图(Views)、编辑器(Editors)、透视图(Perspectives)等核心概念。这些组件共同构成了一个灵活且...

    EclipseRCP教程

    2. RCP(Rich Client Platform):Eclipse RCP 的核心架构,提供了应用程序的入口、视图管理、事件处理和插件管理机制。 3. Plug-in:Eclipse RCP 的插件机制,允许开发者轻松地开发和集成新的功能模块。 4. View:...

    Eclipse RCP.pdf清晰版

    ### Eclipse RCP 入门详解 #### 一、Eclipse RCP 概述 **Eclipse RCP**(Rich Client Platform)是一种构建丰富客户端应用程序的框架,它利用Eclipse平台的强大功能来创建高度定制化的桌面应用程序。通过RCP,...

    eclipse rcp 插件开发学习笔记.pdf 15-24章

    在提供的压缩包中,包含了关于Eclipse RCP插件开发15至24章的学习笔记,这些章节覆盖了多个关键主题,下面将对这些主题进行详细解读。 1. **第15章:对话框和向导(Dialogs and Wizards)** - 在Eclipse RCP中,...

    Eclipse插件开发学习笔记全篇+源码.rar

    本文将深入探讨Eclipse插件开发的相关知识点,结合提供的"全书分为4篇共24章"的学习笔记和源码,帮助你更全面地理解和实践Eclipse插件开发。 第一篇:基础篇 在这一篇中,你将学习到Eclipse插件开发的基础知识,...

    eclipse RCP mp3工程

    Eclipse RCP是一个强大的开发框架,允许开发者创建桌面应用,它提供了丰富的用户界面组件和灵活的插件架构。 【描述】中的“非常棒的一个rcp应用程序”意味着这个工程展示了Eclipse RCP的强大功能和易用性,可能是...

    EclipseRcp 例子程序

    6. **命令与快捷键**:Eclipse RCP提供了命令框架,允许自定义用户操作,如菜单项和快捷键。例子程序会展示如何定义、注册和绑定这些命令。 7. **服务(Service)**:Eclipse RCP支持服务导向的架构,通过服务,...

    Eclipse RCP培训.zip

    5. **命令(Command)与手势(Handler)**:命令是Eclipse RCP中的动作抽象,手势则将命令与用户操作(如鼠标点击、键盘快捷键)关联起来。这种设计使得UI行为的实现与表现分离,易于维护。 6. **服务(Service)**...

    Eclipse Rcp

    Eclipse RCP是一种基于Eclipse平台的富客户端平台技术,它允许开发者创建独立于Eclipse环境的Java桌面应用程序。RCP通过提供一套标准组件和API,简化了桌面应用程序的开发流程,使开发者能够专注于业务逻辑而非界面...

    Eclipse RCP开发详解

    Eclipse提供了一套强大的调试工具,包括对插件和RCP应用程序的专门支持,帮助你定位和解决问题。 总之,Eclipse RCP提供了一个强大而灵活的平台,用于构建高质量的桌面应用。通过深入学习"**Eclipse RCP开发详解**...

    documents about Eclipse RCP

    4. **示例应用**:`example_rcp_applications_v2.pdf`可能是包含实际RCP应用的案例研究,这些案例将展示如何使用RCP来构建复杂的应用程序,以及在实践中可能遇到的问题和解决方案。 5. **HTML文章**:`article....

    Eclipse RCP(富客户端平台)开发中文语言包_3.6.0.rar

    中文语言包主要解决Eclipse RCP的国际化问题,使用户界面(UI)适应中文环境。对于中国开发者来说,使用母语界面可以提高开发效率,减少因翻译错误导致的误解。这个语言包包含了Eclipse RCP 3.6.0版本中的所有关键...

    ECLIPSE RCP项目源程序

    1. **插件(Plugins)**:Eclipse RCP基于插件架构,每个功能模块都被封装在单独的插件中,这样可以实现模块化开发,提高代码的复用性和可扩展性。在标签中提到的"ECLIPSE RCP 插件",意味着这个项目可能包含多个...

    Eclipse插件RCP中文入门教程.pdf

    ### Eclipse插件RCP中文入门教程关键知识点解析 #### 一、Eclipse平台概述与起源 Eclipse平台是一个开源的、基于Java的可扩展开发框架,由一系列服务和框架构成,旨在通过插件组件构建高度定制化的开发环境。...

Global site tag (gtag.js) - Google Analytics