免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 9310 | 回复: 3
打印 上一主题 下一主题

[原创]Eclipse插件开发之plugin.xml进阶 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-01-25 09:17 |只看该作者 |倒序浏览
原文出处:
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

论坛徽章:
0
2 [报告]
发表于 2004-01-26 21:21 |只看该作者

[原创]Eclipse插件开发之plugin.xml进阶

   好~

论坛徽章:
0
3 [报告]
发表于 2004-02-01 09:28 |只看该作者

[原创]Eclipse插件开发之plugin.xml进阶

准备写下一篇了

论坛徽章:
0
4 [报告]
发表于 2004-02-01 12:15 |只看该作者

[原创]Eclipse插件开发之plugin.xml进阶

果然是高高手.. ^_^
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP