`
tjlvan
  • 浏览: 22541 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

在Eclipse插件开发中定制自己的快捷键

阅读更多

Java编辑器中按下“Ctrl + a,可以看见当前编辑器中的文本处于全选状态,这即是Eclipse IDE中快捷键的一处应用场景,在实际的插件开发中,我们会经常定制快捷键,那么Eclipse的快捷键是如何实现呢?

每个快捷键最终都会对应着具体操作,在Eclipse中,这个操作用IAction来描述,并在调用 IAction接口的run方法时执行,Eclipse早期的版本中,定义Action的时候可同时定义与之关联的快捷键,这种方式会导致如下几个问题:

1、  不同的插件中不同语义的操作可能定义相同的快捷键。

2、  相同语义的操作可能会定义不同的快捷键,如复制、粘贴等操作。

3、  插件可能会定义以后与工作台冲突的快捷键(例如,工作台升级就会发生这种情况)。

为了解决上述问题,Eclipse引入了键绑定的机制,它可配置,这种机制在解决上述问题的时候又增加了如下的能力:

1、  用户可以控制应使用哪些键绑定

2、  插件可以定义模拟用户熟悉的其他工具的键绑定

3、  插件可以定义键绑定的上下文,以使它们只在某些情况下才是活动的

 

   下面,通过一个简单的例子说明如何在键绑定的机制下实现自己的快捷键,在Eclipse插件的示例项目xml编辑器按下“Ctrl+o”时候,弹出一个对话框,如下图所示:

 

 

操作步骤以及说明如下:

  1.  

  1.  

    1. 新建插件工程,选择示例项目中的编辑器插件,并将编辑器对应的文件后缀名改为myxml,以区分Eclipse中已经集成的xml编辑器。

    2.  实现下列扩展点:
      a) org.eclipse.ui.bindings扩展点,将命令与快捷键绑定,配置后好的plugin.xml如下:

      <extension point="org.eclipse.ui.bindings">
            <key
            		commandId="org.tjlvan.open"
                  schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
                  sequence="Ctrl+O">
            </key>
         </extension>

       

       

       

         b) org.eclipse.ui.commands扩展点,声明自己的Command,xml如下

         <extension point="org.eclipse.ui.commands">
            <command
                  description="打开一个对话框"
                  id="org.tjlvan.open"
                  name="open">
            </command>
         </extension>

       


      c)  org.eclipse.ui.actionSets扩展点,设置actionRetarger属性为true,表示这个Action是一个重定向Action,并设置ActiondefinitionIdCommandid一致。表示将此IdAction与相应的Command关联

      <extension point="org.eclipse.ui.actionSets">
            <actionSet
                  id="org.tjlvan.actionSet"
                  label="myActionSet"
                  visible="false">
               <action
                     definitionId="org.tjlvan.open"
                     id="org.tjlvan.openAction"
                     label="open"
                     retarget="true">
               </action>
            </actionSet>
         </extension>
      

      d)  实现一个简单的OpenAction,在run方法中打开一个对话框

      public class OpenAction extends Action {
      	
      	public OpenAction() {
      		this.setId(OpenAction.class.getName());
      		this.setText("Open");
      	}
      	
      	public void run() {
      		MessageDialog.openInformation(null, "测试", "定义自己的快捷键");
      	}
      }

       
      e)  xml编辑器对应的EditorActionContributor将我们OpenAction重定向,以便和特定快捷键关联,代码如下:

       

      public class SubTextEditorActionContributor extends
      		BasicTextEditorActionContributor {
      
      	private IAction openAction = new OpenAction();
      	
      	public SubTextEditorActionContributor() {
      		super();
      	}
      	
      	@Override
      	public void setActiveEditor(IEditorPart part) {
      		super.setActiveEditor(part);
      		IActionBars actionBars= getActionBars();
      		actionBars.setGlobalActionHandler("org.tjlvan.openAction", openAction);
      	}
      }

       

       

       

       

       

       

       

    1.  

    最后,看看按下“Ctrl+o 是不是会弹出图示的对话框。

        从上例中可以看出,Eclipse键绑定实现的策略是通过命令来定义语义操作,并将命令与快捷键绑定,命令的语义操作即IAction,可由插件实时设置,以便为同一语义的命令在不同情况下表现为不同的操作行为,如拷贝粘贴,这些在不同的插件中,表现出的具体行为也就不同,文本编辑器对文本操作,图形编辑器对图形进行操作,但它们的快捷键都是Ctrl+v,Ctrl+c;

    我们在扩展点中声明CommandBinding,那么如何关联Command与具体的操作呢?

可通过以下的方式:

  1. 实现org.eclipse.ui.handlers扩展点或者在声明Command时候配置一个IHander这种方式下需要提供一个具体操作类实现org.eclipse.core.commands.IHander接口,在execute方法中执行具体的操作内容。
  2. 实现org.eclipse.ui.actionSets扩展点,配置全局ActionActionactionDefinitionIdCommandId一致,当扩展点的属性Retarget属性为True的时候,我们需要在此为Command提供一个真实的Action作为Command的操作,当Retarget属性为False的时候,表示我们配置的Action是一个重定向Action仅仅提供一个将此ActionIdCommand绑定的作用,这样,我们可按照本文例中的方法,定制自己的Action,最后调用IActionBars.setGlobalActionHandler(String actionId, IAction handler)方法,把自己的ActionOpenAction和快捷键进行绑定。

 

 

 

 

  • 大小: 28.5 KB
分享到:
评论

相关推荐

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

    在这一篇中,你将学习到Eclipse插件开发的基础知识,包括: 1. 插件体系结构:理解Eclipse的插件模型,如何通过插件来构建可扩展的应用。 2. OSGi框架:Eclipse基于OSGi运行,了解OSGi的概念和它在插件中的作用。 3....

    Eclipse插件开发系列

    在学习Eclipse插件开发的过程中,理解以下概念至关重要: - **Extension Points**:这是Eclipse插件系统的核心,是插件之间交互的接口,定义了可以被其他插件扩展的点。 - **ActionSets**:包含了一系列的菜单项...

    Eclipse插件开发笔记源码

    Eclipse插件开发是Java开发领域中的一个重要分支,它允许开发者通过扩展Eclipse IDE的功能来创建自定义的工作环境。这份“Eclipse插件开发笔记源码”提供了丰富的学习材料,帮助开发者深入理解并实践Eclipse插件开发...

    eclipse插件开发步步教你

    在Eclipse插件开发中,"扩展点"是一个关键概念。扩展点是Eclipse平台预先定义的一组接口,允许插件对其进行扩展以实现特定功能。例如,`org.eclipse.ui.editors`扩展点用于定义新的文本编辑器,`org.eclipse.ui....

    eclipse插件开发学习笔记配套源码

    这份"eclipse插件开发学习笔记配套源码"提供了一手的实践材料,帮助我们理解并掌握Eclipse插件的开发流程和技术要点。 Eclipse插件开发基于OSGi框架,该框架允许模块化构建应用程序,使得组件之间可以独立升级和...

    Eclipse 插件开发学习笔记.rar

    Eclipse插件开发是开发者提升工作效率、定制个性化开发环境的重要途径。本学习笔记将深入探讨Eclipse插件开发的相关知识,以帮助你掌握这一核心技能。 一、Eclipse插件体系结构 Eclipse基于OSGi(Open Service ...

    Eclipse插件开发学习笔记-源代码1至24章.zip

    在Eclipse插件开发中,首先需要理解的是OSGi(Open Services Gateway Initiative)框架,它是Eclipse的基础架构,用于管理插件之间的依赖关系和生命周期。每个Eclipse插件都是一个独立的OSGi模块,可以导入和导出...

    eclipse 插件开发 第三版(英文)

    《Eclipse插件开发》第三版是一本专为Eclipse平台开发者量身打造的专业书籍,主要探讨了如何在Eclipse环境中构建、扩展和管理插件。2009年出版的这一版本,针对当时Eclipse的最新版本进行了更新,包含了最新的开发...

    [Eclipse插件开发学习笔记].张鹏等.扫描版-1

    【Eclipse插件开发学习笔记】是一本详细探讨Eclipse插件开发的教程,由张鹏等人编写。这本书深入浅出地介绍了如何利用Eclipse平台进行插件开发,旨在帮助开发者提升在Eclipse环境中定制和扩展功能的能力。通过阅读...

    Eclipse插件开发扩展点大全(中文)

    Eclipse插件开发的核心是通过利用Eclipse平台提供的各种扩展点来实现。本资源"**Eclipse插件开发扩展点大全(中文)**"正是针对这一主题,提供了详尽的中文指南,帮助开发者深入理解和利用这些扩展点。 Eclipse的...

    Eclipse常用快捷键+插件大全.rar

    Eclipse是一款广泛使用的Java集成开发环境(IDE),它支持多种编程语言,并且具有丰富的功能和高度可定制性。为了提高开发效率,掌握Eclipse的常用快捷键和有效利用插件至关重要。以下是对"**Eclipse常用快捷键+插件...

    学习eclipse插件开发的原因

    3. **职业发展**:掌握Eclipse插件开发技术,能增强开发者在软件开发领域的竞争力,尤其在企业级应用开发中,定制化的开发环境往往能提高团队的工作效率。 4. **开源生态**:Eclipse作为一个开源项目,其插件开发也...

    eclipse插件开发学习笔记

    ### Eclipse插件开发知识点解析 #### 一、Eclipse平台简介 **1.1 Eclipse集成开发环境(IDE)** - **1.1.1 安装及使用Eclipse IDE** - Eclipse IDE是一款免费开源的集成开发环境,适用于Java、C/C++、PHP等多种...

    Eclipse插件开发教程

    【Eclipse插件开发教程】 Eclipse是一款广泛使用的开源集成开发环境(IDE),以其高度可扩展性和灵活性闻名。Eclipse插件是增强Eclipse功能的关键,开发者可以通过编写插件来定制自己的开发环境,以满足特定的编程...

    eclipse插件开发

    Eclipse 插件开发是构建基于Eclipse平台的自定义工具或功能扩展的过程。Eclipse是一个开源的集成开发...通过学习Eclipse插件开发,开发者可以创建符合自己需求的工具,提升开发效率,并参与到Eclipse社区的建设中去。

    eclipse插件

    在Eclipse插件开发中,jad可以作为调试工具,辅助分析插件的执行过程。例如,当遇到某些问题时,可以通过jad反编译插件的字节码,查看其底层的机器指令,从而找出问题的根源。 **源码阅读** 在Eclipse插件开发中,...

    idea使用eclipse快捷键插件.zip

    总的来说,"idea使用eclipse快捷键插件.zip"提供了一种便捷的方式,让Eclipse用户能够在IntelliJ IDEA中继续使用他们习惯的快捷键,减少了学习新工具的阻力,提高了开发效率。然而,随着时间的推移,建议用户逐渐...

Global site tag (gtag.js) - Google Analytics