在Java编辑器中按下“Ctrl + a”,可以看见当前编辑器中的文本处于全选状态,这即是Eclipse IDE中快捷键的一处应用场景,在实际的插件开发中,我们会经常定制快捷键,那么Eclipse的快捷键是如何实现呢?
每个快捷键最终都会对应着具体操作,在Eclipse中,这个操作用IAction来描述,并在调用 IAction接口的run方法时执行,在Eclipse早期的版本中,定义Action的时候可同时定义与之关联的快捷键,这种方式会导致如下几个问题:
1、 不同的插件中不同语义的操作可能定义相同的快捷键。
2、 相同语义的操作可能会定义不同的快捷键,如复制、粘贴等操作。
3、 插件可能会定义以后与工作台冲突的快捷键(例如,工作台升级就会发生这种情况)。
为了解决上述问题,Eclipse引入了键绑定的机制,它可配置,这种机制在解决上述问题的时候又增加了如下的能力:
1、 用户可以控制应使用哪些键绑定
2、 插件可以定义模拟用户熟悉的其他工具的键绑定
3、 插件可以定义键绑定的上下文,以使它们只在某些情况下才是活动的
下面,通过一个简单的例子说明如何在键绑定的机制下实现自己的快捷键,在Eclipse插件的示例项目xml编辑器按下“Ctrl+o”时候,弹出一个对话框,如下图所示:
操作步骤以及说明如下:
-
-
-
新建插件工程,选择示例项目中的编辑器插件,并将编辑器对应的文件后缀名改为myxml,以区分Eclipse中已经集成的xml编辑器。
-
实现下列扩展点:
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扩展点,设置action的Retarger属性为true,表示这个Action是一个重定向Action,并设置Action的definitionId与Command的id一致。表示将此Id的Action与相应的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);
}
}
-
最后,看看按下“Ctrl+o” 是不是会弹出图示的对话框。
从上例中可以看出,Eclipse键绑定实现的策略是通过命令来定义语义操作,并将命令与快捷键绑定,命令的语义操作即IAction,可由插件实时设置,以便为同一语义的命令在不同情况下表现为不同的操作行为,如拷贝粘贴,这些在不同的插件中,表现出的具体行为也就不同,文本编辑器对文本操作,图形编辑器对图形进行操作,但它们的快捷键都是Ctrl+v,Ctrl+c;
我们在扩展点中声明Command和Binding,那么如何关联Command与具体的操作呢?
可通过以下的方式:
-
实现org.eclipse.ui.handlers扩展点或者在声明Command时候配置一个IHander,这种方式下需要提供一个具体操作类实现org.eclipse.core.commands.IHander接口,在execute方法中执行具体的操作内容。
-
实现org.eclipse.ui.actionSets扩展点,配置全局Action,此Action的actionDefinitionId与Command的Id一致,当扩展点的属性Retarget属性为True的时候,我们需要在此为Command提供一个真实的Action作为Command的操作,当Retarget属性为False的时候,表示我们配置的Action是一个重定向Action,仅仅提供一个将此Action的Id与Command绑定的作用,这样,我们可按照本文例中的方法,定制自己的Action,最后调用IActionBars.setGlobalActionHandler(String actionId, IAction handler)方法,把自己的Action如OpenAction和快捷键进行绑定。
- 大小: 28.5 KB
分享到:
相关推荐
在这一篇中,你将学习到Eclipse插件开发的基础知识,包括: 1. 插件体系结构:理解Eclipse的插件模型,如何通过插件来构建可扩展的应用。 2. OSGi框架:Eclipse基于OSGi运行,了解OSGi的概念和它在插件中的作用。 3....
在学习Eclipse插件开发的过程中,理解以下概念至关重要: - **Extension Points**:这是Eclipse插件系统的核心,是插件之间交互的接口,定义了可以被其他插件扩展的点。 - **ActionSets**:包含了一系列的菜单项...
Eclipse插件开发是Java开发领域中的一个重要分支,它允许开发者通过扩展Eclipse IDE的功能来创建自定义的工作环境。这份“Eclipse插件开发笔记源码”提供了丰富的学习材料,帮助开发者深入理解并实践Eclipse插件开发...
在Eclipse插件开发中,"扩展点"是一个关键概念。扩展点是Eclipse平台预先定义的一组接口,允许插件对其进行扩展以实现特定功能。例如,`org.eclipse.ui.editors`扩展点用于定义新的文本编辑器,`org.eclipse.ui....
这份"eclipse插件开发学习笔记配套源码"提供了一手的实践材料,帮助我们理解并掌握Eclipse插件的开发流程和技术要点。 Eclipse插件开发基于OSGi框架,该框架允许模块化构建应用程序,使得组件之间可以独立升级和...
Eclipse插件开发是开发者提升工作效率、定制个性化开发环境的重要途径。本学习笔记将深入探讨Eclipse插件开发的相关知识,以帮助你掌握这一核心技能。 一、Eclipse插件体系结构 Eclipse基于OSGi(Open Service ...
在Eclipse插件开发中,首先需要理解的是OSGi(Open Services Gateway Initiative)框架,它是Eclipse的基础架构,用于管理插件之间的依赖关系和生命周期。每个Eclipse插件都是一个独立的OSGi模块,可以导入和导出...
《Eclipse插件开发》第三版是一本专为Eclipse平台开发者量身打造的专业书籍,主要探讨了如何在Eclipse环境中构建、扩展和管理插件。2009年出版的这一版本,针对当时Eclipse的最新版本进行了更新,包含了最新的开发...
【Eclipse插件开发学习笔记】是一本详细探讨Eclipse插件开发的教程,由张鹏等人编写。这本书深入浅出地介绍了如何利用Eclipse平台进行插件开发,旨在帮助开发者提升在Eclipse环境中定制和扩展功能的能力。通过阅读...
Eclipse插件开发的核心是通过利用Eclipse平台提供的各种扩展点来实现。本资源"**Eclipse插件开发扩展点大全(中文)**"正是针对这一主题,提供了详尽的中文指南,帮助开发者深入理解和利用这些扩展点。 Eclipse的...
Eclipse是一款广泛使用的Java集成开发环境(IDE),它支持多种编程语言,并且具有丰富的功能和高度可定制性。为了提高开发效率,掌握Eclipse的常用快捷键和有效利用插件至关重要。以下是对"**Eclipse常用快捷键+插件...
3. **职业发展**:掌握Eclipse插件开发技术,能增强开发者在软件开发领域的竞争力,尤其在企业级应用开发中,定制化的开发环境往往能提高团队的工作效率。 4. **开源生态**:Eclipse作为一个开源项目,其插件开发也...
### Eclipse插件开发知识点解析 #### 一、Eclipse平台简介 **1.1 Eclipse集成开发环境(IDE)** - **1.1.1 安装及使用Eclipse IDE** - Eclipse IDE是一款免费开源的集成开发环境,适用于Java、C/C++、PHP等多种...
【Eclipse插件开发教程】 Eclipse是一款广泛使用的开源集成开发环境(IDE),以其高度可扩展性和灵活性闻名。Eclipse插件是增强Eclipse功能的关键,开发者可以通过编写插件来定制自己的开发环境,以满足特定的编程...
Eclipse 插件开发是构建基于Eclipse平台的自定义工具或功能扩展的过程。Eclipse是一个开源的集成开发...通过学习Eclipse插件开发,开发者可以创建符合自己需求的工具,提升开发效率,并参与到Eclipse社区的建设中去。
在Eclipse插件开发中,jad可以作为调试工具,辅助分析插件的执行过程。例如,当遇到某些问题时,可以通过jad反编译插件的字节码,查看其底层的机器指令,从而找出问题的根源。 **源码阅读** 在Eclipse插件开发中,...
总的来说,"idea使用eclipse快捷键插件.zip"提供了一种便捷的方式,让Eclipse用户能够在IntelliJ IDEA中继续使用他们习惯的快捷键,减少了学习新工具的阻力,提高了开发效率。然而,随着时间的推移,建议用户逐渐...