- 论坛徽章:
- 0
|
原文出处:
http://bsd.huangdong.com/dev/ecl ... luginXml/index.html
前言
之前我们在 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 |
|