CSDN博客

img oicqren

Eclipse插件开发之plugin.xml进阶

发表于2004/11/4 13:17:00  4713人阅读

前言

之前我们在Eclipse插件开发之新手入门中使用了一个最简单的过程建立了一个Eclipse的插件。 但是我们没有就任何的细节问题进行说明。我们接下来会就一些细节问题一一深入。

在本文中使用一个例子来说明插件中最为重要的一个文件:plugin.xml的书写方法及其作用。

插件结构

一个Eclipse的插件由哪几部分组成呢?其实很简单的,它由以下三部分基础组成:

  • plugin.xml -- 说明文件上,插件的描述与作用
  • 资源,如ico图标(可选)
  • java代码,包含于一个jar文件中(可选)
需要注意的是,一个插件的组成部分都包含于一个目录中,是由运行时的Eclipse核心所调用的。

看到这里,大多数人都会嘴角一翘:“没有java代码插件能运行吗”?我们下面使用实例来看看。

建立项目

在菜单上我们点击文件->新建->项目,在新建项目中选择插件开发->插件项目:

点下一步,并在项目名中输入com.huangdong.plugin.hello:

点下一步,在插件项目组构对话框中我们使用默认值:

点下一步,在插件代码生成器对话框中我们选择“创建空白插件项目”:

为什么要这样呢?因为我们这样就可以自己从头来完成每一步操作,从而让我们搞清Eclipse提供的代码生成的原理。

我们可以注意到,在这个空白的插件项目中,默认只有Eclipse基本的引用和plugin.xml文件以及为编译而准备的build.properties文件:

Hello按钮的plugin.xml

在这一节中我们只使用plugin.xml文件来让这个插件显示一个按钮到Eclipse中去。

增加依赖插件

Eclipse插件开发之新手入门中我使用的项目引用方式不但是大家也是我自己非常不喜欢的方式。 一方面操作起来麻烦,另一方面项目太多,Eclipse中也很零乱,这次告诉大家PDE中现在版本提供的更强的功能。

首先双击plugin.xml文件,进入依赖项视图,我们会发现现在还没有任何一个依赖插件被依赖:

我们点击“添加”按钮,在弹出的“可用的插件”对话框中找到“org.eclipse.ui”项选中后按“完成”:

这时org.eclipse.ui就会加入到必需的插件列表中了,我们再将plugin.xml文件存盘后也会发现Eclipse会将所需要的相关插件引用也加入到项目中来了:

再说一次,添加后请按Ctrl+s进行存盘后才会更新项目依赖的。

添加扩展

一旦项目依赖中加入了新的插件引用,哪么我们就可以对这个项目所提供的扩展点进行扩展了。 我们首先要声明我们要扩展什么。这里我们要扩展org.eclipse.ui.actionSets以便在Eclipse中加入一个按钮。

首先切换到plugin.xml的扩展视图,点击添加按钮,在弹出的扩展向导选择对话框中我们选择“一般向导”->“基于模式的扩展”:

点下一步,在扩展点选择对话框中找到org.eclipse.ui.actionSets项选中它:

这样在所有扩展列表中就多了org.eclipse.ui.actionSets条目。

扩展ActionSet

为了加入一个按钮,我们必须说明我们的ActionSet和它内部所有的Action。 这需要遵循org.eclipse.ui插件中有关ActionSet部分的DTD来书写XML, 所幸运的是,PDE帮我们找到相对应的DTD,并提示我们如何书写哪些条目。

首先用鼠票右键点中扩展列表中的org.eclipse.ui.actionSets,选择新建->actionSet:

我们在属性对话框中对以下属性进行更改:

  • id:com.huangdong.plugin.hello.actionSet
  • lable:Hello ActionSet

这里id是将来我们要书写的具体扩展org.eclipse.ui.actionSet的标识,而lable则是显示的名称,写少点也好看不是:

为ActionSet加入Action

具体的Action则是一组ActionSet中指定的一个行为,它也是行为的最小单元。

首先用鼠票右键点中扩展列表中的Hello ActionSet(actionSet),选择新建->action:

我们在属性对话框中对以下属性进行更改:

  • id:com.huangdong.plugin.hello.HelloAction
  • lable:Hello

这两个属性与ActionSet中的作用相同。

第一次运行

写好了plugin.xml文件,我们来运行一下这个插件看看效果。 同时也证明了一点,一个插件最不需要一个plugin.xml,这一个文件也就可以让该插件生效。

在菜单上点击运行->运行为->运行时工作台就可以将插件放入一个运行时工作台看效果了。 想看它是否部署并成效很简单,一个是在插件列表中可以找到这个插件:

还有就是在运行时工作台的菜单中选择窗口->定制透视图中的其它中可以找到Hello ActionSet:

我们现在选中它也不会发现工作台有变化,是因为我们还没有定义这个ActionSet中的Action到一个按钮上去。

定义按钮

我们到Hello action的属性页,在其中的toolbarPath的值中输入:HDGroup。 这样我们就为该Action定议了是在Toolbar中的HDGroup组中出现。

再次运行该插件项目,在定制透视图中找到Hello ActionSet,选中按确定,就可以在工具栏中看到Hello这个按钮了:

看到哪个红点了吗?这就是我们的plugin.xml书写正确并生效了。 不过我们按了这个按钮就会看到一个信息对话框,告诉我们“选择的操作当前不可用”:

这是因为我们没有在具体的Action中书写相关的代码,我们下面就来将具体的Java代码加入进来。

生成Action具体的类

写到这里我想先说一句话:“请大家书写插件时看看PDE这个最好的示例罢”。 PDE真的给我们一个太为方便的插件开发环境了!

我们在扩展列表中找到Hello Action,在它的属性列表中找到class属性,选择后会发现它的后面有一个...的按钮:

按下这个按钮后就会看到Java类选择对话框,我们选择“生成新的Java类”,并输入以下参数:

  • 源文件夹名:src/
  • 包名:com.huangdong.plugin.hello
  • 类名:HelloAction

写完后按完成按钮,这样就生成了HelloAction的框架代码,这个代码实现了IWorkbenchWindowActionDelegate接口。

我们在HelloAction的run方法中加入这个Action在执行后的代码,我们加入一个MessageBox来显示提示信息:

public void run(IAction action) {
	MessageDialog.openInformation(null, null, "Hello, Eclipse world");
}
					

运行Hello Eclipse World

最后我们将这个项目放入运行时工作台中试试:

写在最后的话

Eclipse插件开发之新手入门所不同的是,在本文中我们不使用Eclipse的向导, 自己一步步的完成了Hello Eclipse World插件的xml文件和Java文件的生成。 我想通过本文,你会更加了解Eclipse插件的开发流程和运行原理。 最重要的,在本文中你会更深入的了解插件项目中的plugin.xml的内容和书写方法。

如果你对本文有什么意见和建议请联系我,告诉我你的想法,另外也可以到技术天空BBS的Java版中讨论与Java相关的各种技术。

你可以从这里下载到本文所提到的完整的Eclipse Project包。

另外本文中的所有代码在以下环境中由作者实际测试完全没有问题:

  • Eclipse 2.1.2/3.0M6
  • JDK 1.4.2_02 For Windows/FreeBSD 4.8/FreeBSD 4.9
  • FreeBSD 4.8/FreeBSD 4.9/Windows 2000/Windows XP
阅读全文
0 0

相关文章推荐

img
取 消
img