Eclipse插件开发快速入门(一)

来源:互联网 发布:网络修改大师 编辑:程序博客网 时间:2024/05/01 00:20

转自:http://blog.csai.cn/user1/413/archives/2005/1786.html

Eclipse插件开发快速入门(一)

刚才我在修理自己的汽车,我需要拧下一个螺丝。于是我打开自己的扳手工具包,试图找到合适的扳手。但是那些扳手的型号都不对,因为那个螺丝都属于公制标准的。我只能使用与理想尺寸最相近的扳手。这是一个不好的想法;结果我把那个螺丝弄裂了,只好去买一个专用的工具来下掉它。这个故事的精髓是:实现特定的事务永远需要使用恰当的工具

  Eclipse是一个非常流行的Java集成开发环境(IDE),它是NetBeans/SunOne Studio、Jbuilder、和IntelliJ IDEA的强有力的竞争者。Java程序员群体正在迅速地迁移到Eclipse上,因为它是免费的、开放源代码的、质量很好,而且非常容易定制。

  本文的内容是如何在Eclipse中编写插件(plugin)。本文的目标读者是哪些人呢?很多Eclipse用户简单地使用IDE而不需要进行定制;很多人会使用他人建立的插件,这些人不是本文的目标读者。有些用户希望定制Eclipse;有些人将为他们公司的雇员开发工具;有些人希望销售与自己的产品相关的工具;还有一些人希望使用其它名称转售预安装了某些工具的Eclipse。这些人组成了本文的目标受众。开始编写Eclipse插件的前提条件是了解如何使用Eclipse和编写Java程序,并且对标准Widget工具包(SWT)有很好的理解。

  安装Eclipse

  如果你已经使用了Eclipse 3,那么可以跳过这一段落。如果没有安装该软件,你首先需要下载和安装它。你可以简单地从
Eclipse下载页面下载最新的稳定版本,接着把下载的文件解压到一个文件夹中(例如c:/dev)。在写作本文的时候,这个文件是eclipse-SDK-3.0.1-win32.zip(85MB)。这个过程会建立c:/dev/eclipse文件夹。

  请注意,在这个文件夹下已经有一个叫做plugins的文件夹了。你可以快速浏览一下,会发现很多的已经安装好的插件。这是怎么回事呢?因为Eclipse的核心相对较小,几乎每个部分都是一个插件。

  架构

  Eclipse由一个很小的核心和核心之上的大量插件组成。有些插件仅仅是供其它插件使用的库。其中存在很多你可以利用的工具。所有插件使用的基础库是:

  · 标准Widget工具包(SWT):Eclipse中处处使用的图形化组件:按钮,图像、光标、标签等等。布局管理类。通常这个库被用于代替Swing。

  · JFace:菜单、工具条、对话框、参数选择、字体、图像、文本文件的类和向导基类。

  · 插件开发环境(PDE):辅助数据操作、扩展、建立过程和向导的类。

  · Java开发者工具包(JDT):用于编程操作Java代码的类。

  上面的每一个类都有自己专有的功能,其中一些还可以单独使用(尽管它们内在地依赖于其它类)。例如,SWT不仅仅只用于插件;它还可以被用于建立非Eclipse的、独立的应用程序。还有一些其它的库没有被列举出来。

  图1显示了Eclipse不同层次之间的关系。


图1:分层的类库


  安装GEF和Draw2D运行时

  在默认情况下,这两个面向对象的库(图形化编辑器框架组件GEF和Draw2D)是没有被安装的。在本文中我们需要利用它们,因此首先需要安装它们。你可以在GEF主页面下载GEF和Draw2D,下载3.0.1或以后版本,把文件保存为GEF-SDK-3.0.1.zip(5.5MB)。把这个文件解压到Eclipse文件夹下(这是包含plugins子文件夹的文件夹)。这两个库自身也是作为插件加进来的。

  这些库提供了什么样的功能?它们构成了建立图形化插件的基础。图形化插件通常显示一些对象(例如方框和标签,用线和箭头链接在一起)。这些对象和连接器的绘制都是由Draw2D来处理的。但是绘制过程仅仅是图形化编辑器实现的一半功能。另一半--编辑器命令、工具条、拖放功能、打印--由GEF来完成。

  配置PDE选项

  安装上述的各种部件之后,下一步就是定制或至少是熟悉插件配置选项。这些选项在菜单窗体 -> 选项的"插件开发"类别下选择。浏览一下插件用到的数以十计的配置选项。你可以特地看一下Target Environment(目标环境)类别。它允许我们选择默认的操作系统、视窗(windowing)系统、CPU架构和语言。

  我们感兴趣的还有Plug-in Development(插件开发)透视图(透视图是一组视图参数选择,包括面板、视图、工具条等等,根据不同的事务发生改变,可以把它看出Eclipse中的"模式")。通过选择菜单中的窗口-> 打开透视图 -> 其它,然后在列表中选择"插件开发"就可以看到它了。它与Java透视图相似,但是拥有一个插件视图,可以显示所有检测到的插件。图2显示了如何激活这个透视图,并显示了该透视图。


图2:插件开发透视图
建立一个简单插件

  建立插件最简单的办法是使用文件-> 新建->插件项目向导所提供的模板。接着输入一个项目名称(例如"Invokatron")。这是什么意思呢?我们将建立的插件是Invokatron,它是一个供Java代码使用的代码生成图形化编辑器。本文删除了Invokatron的路径,但是很明显这个雄心勃勃的项目直到下次安装时才会完成。

  在"下一步"页面上,除了类名之外其它的选项都不变,类名输入invokatron.InvokatronPlugin。在"插件内容"页面上,输入你认为适合的任何信息。在"模板"页面上,选中检查框以激活模板。我们可以在多个模板中进行选择:

  · Hello, World

  · 简单的XML编辑器

  · 多页面编辑器和向导

  · 透视图扩展

  · 弹出菜单

  · 属性页面

  · 视图

  · 拥有前面的一个或多个数据项的自定义插件

  对于本文的示例,我们使用自定义插件模板。选择"多页面编辑器"-"新建文件向导"-"属性"页面。在"下一步"页面输入下面一些值:
"多页面编辑器"页面(图3所示):

  · Java程序包名称:invokatron.editor

  · 编辑器类名称:InvokatronEditor

  · 编辑器辅助类名称:InvokatronEditorContributor

  · 编辑器名称:Invokatron Editor

  · 文件扩展名:invokatron


图3:"多页面编辑器"设置

  "新建向导"页面(图4所示):

  · Java程序包名称:invokatron.wizard

  · 向导类别ID:Invokatron

  · 向导类别名称:Invokatron Wizard

  · 向导类名称: InvokatronWizard

  · 向导页面类名称:InvokatronWizardPage

  · 向导名称:Invokatron Wizard

  · 文件扩展名: invokatron

  · 初始文件名: MyClass.invokatron


图4:"新建向导"设置

  "属性"页面(图5所示):

  · Java程序包名称:invokatron.properties

  · 属性页面类: InvokatronPropertyPage

  · 属性页面名称:Invokatron Properties

  · 目标类:org.eclipse.core.resources.IFile

  · 文件名过滤器:*.*


图5:"属性"页面设置

  这个时候Eclipse生成了大量的文件:

  · plugin.xml:描述该插件的主文件。它包含了辅助代码生成、库、插件依赖关系和扩展指向的一些信息。

  · build.properties:用于描述建立(build)过程的文件。它主要用于指定需要的库。

  · invokatron/*.java:插件类。

  · sample.gif:菜单项显示的图标。

  plugin.xml文件和build.properties一起被显示在多页面编辑器中。第一个页面("预览")允许你在测试环境中导出和运行该插件。"导出"的意思是通过生成一些代码、接着编译和打包来完善该插件。

  查看一下类,你会发现它实际上没有做什么操作。添加菜单选项的代码在哪儿呢?框架组件从plugin.xml文件包含的信息中简单地生成了必要的代码。你可以查看一下这个文件。它的最后一部分包含了一个扩展列表,这是这些类可以插入Eclipse的地方。
(未完)