最小插件

我们都知道在不使用任何用户界面或其它框架的情况下, “Hello World”在使用普通的旧的 Java 时的外观。

   public class HelloWorld {
      public static void main(String[] args) {
         System.out.println("Hello World");
      }
   }

在 Eclipse 平台的上下文中,此旧标准发生了哪些变化?我们不将 Hello World 看作是独立的程序,而是将它改造为平台的扩展。由于我们想要对全世界问好,因此,需要了解如何扩展工作台以包含我们的问候。

当我们深入了解平台用户界面组件时, 我们将详尽地考察可以用来扩展和定制工作台用户界面的方法。现在,让我们从其中一个最简单的工作台扩展 — 视图开始。

可以将工作台窗口看作是用来提供各种可视部件的框架。这些部件属于两个主要类别:视图和编辑器。稍后我们将查看编辑器。视图提供了关于用户正在工作台中使用的一些对象的信息。当用户选择工作台中的不同对象时,视图通常就会更改它们的内容。

Hello world 视图

对于 hello world 插件,我们将实现自己的视图,以便用“Hello World”来向用户问好。

org.eclipse.ui 及其子包中包含用来定义工作台用户界面(UI)API 的公共接口。这些接口中的许多接口都具有缺省实现类, 可以扩展这些类以便对系统提供简单的修改。在 hello world 示例中,我们将扩展工作台视图,以提供一个用来问好的标号。

很重要的一个接口就是 IViewPart, 它定义向工作台添加视图而必须实现的方法。类 ViewPart 提供了此接口的缺省实现。简而言之,视图部件负责创建显示视图所必需的小窗口。

工作台中的标准视图通常显示有关用户已经选择或者正在浏览的对象的一些信息。视图根据工作台中发生的操作来更新它们的内容。在我们的示例中,只是问好,所以我们的视图非常简单。

使用工具来编写插件

可以使用任何想要的 Java IDE 来构建 Eclipse 插件,但是我们将完成使用 Eclipse Java IDE 来构建插件的步骤。如果您尚不熟悉 Eclipse 工作台和 Java IDE,则参阅《Java 开发用户指南》以获取对我们讨论的步骤的进一步的解释。因为我们现在集中讨论代码,而不是工具。但是,有一些入门的 IDE 细节。

设置环境

如果您正在从原始环境开始,则将需要确保您的代码对 org.eclipse.ui 插件具有访问权。通过执行下面的步骤来将此插件以及它需要的任何插件导入运行时工作台实例中。如果工作台实例中已经具有这些插件,则转至“创建插件项目”这一节。

  1. 从资源透视图中,使用文件 > 导入... > 外部插件和段
  2. 连续单击下一步 > 按钮,直到显示称为选择的屏幕为止。此屏幕将包含主机工作台实例中的所有插件的列表。
  3. 选择 org.eclipse.ui,然后单击添加必需的插件按钮。
  4. 单击完成按钮。“导航器”视图应当包含 org.eclipse.ui 以及它需要的所有插件(包括 org.eclipse.swt)。

有关设置主机和运行时工作台实例的完整讨论,参阅《PDE 指南》。

创建插件项目

  1. 需要创建一个项目以进行工作。最简单的方法是打开新建项目... 向导(文件 > 新建 > 项目...)并从插件开发类别中选择插件项目。这将设置编写 Java 代码的项目并给予您缺省插件清单文件(稍后说明)。将 org.eclipse.examples.helloworld 用作项目的名称。缺省情况下,向导还会将 org.eclipse.examples.helloworld 设置为标识。该向导允许您选择为不同种类的插件生成代码,但是我们想使问题简单化。现在,确保在插件代码生成器页面上选择了创建空白插件项目
  2. 当询问您是否想切换到“插件开发”透视图时,回答
  3. 在项目的 src 目录下创建包 org.eclipse.examples.helloworld。为此,双击“包资源管理器”视图中的 org.eclipse.examples.helloworld 项目。这将展开该项目并显示 src 目录。右键单击 src 目录以便显示上下文菜单。使用新建 > 包来创建新包,并将它命名为 org.eclipse.examples.helloworld
  4. 在此包中创建称为 HelloWorldView 的新类。右键单击您在上一个步骤中刚创建的包以显示上下文菜单。使用新建 > 类来创建名为 HelloWorldView 的新类。

编写代码

现在我们准备研究某些代码。以下是 HelloWorldView 中所需的全部内容。 (可以将下面的内容复制到创建的类中。) 

   package org.eclipse.examples.helloworld;

   import org.eclipse.swt.widgets.Composite;
   import org.eclipse.swt.widgets.Label;
   import org.eclipse.swt.SWT;
   import org.eclipse.ui.part.ViewPart;

   public class HelloWorldView extends ViewPart {
      Label label;
      public HelloWorldView() {
      }
public void createPartControl(Composite parent) {
         label = new Label(parent, SWT.WRAP);
         label.setText("Hello World");
      }
      public void setFocus() {
         // set focus to my widget.  For a label, this doesn't
         // make much sense, but for more complex sets of widgets
         // you would decide which one gets the focus.
      }
   }

视图部件创建将在 createPartControl 方法中呈示的小窗口。在此示例中,我们将创建 SWT 标号,并在其中设置“Hello World”文本。

这就是我们需要的全部内容!可以编译新类,但是最好确保正确设置了 .classpath 以便编译代码。

  1. 选择 org.eclipse.examples.helloWorld 项目并打开属性对话框(右键单击项目 org.eclipse.examples.helloWorld > 属性)。
  2. Java 构建路径属性中,选择项目选项卡,并选择项目 org.eclipse.uiorg.eclipse.swt。这些是包含我们导入的类的项目。
  3. 重建项目。

好了,我们已经编译了视图。新视图如下所示:

显示 Hello World 的简单视图

如何运行代码并将此视图添加至工作台?

hello world 插件

需要通知平台我们想要添加视图。这是通过扩展 org.eclipse.ui.views 扩展点完成的。通过提供清单文件 plugin.xml 注册扩展,该清单文件描述插件,包括插件的代码所在的位置以及正在添加的扩展。

(如果仍在继续进行,可将此信息复制到创建项目时生成的 plugin.xml 中。)

   <?xml version="1.0" ?>
<plugin
      name="Hello World Example"
      id="org.eclipse.examples.helloworld"
      version="1.0">
      <requires>
         <import plugin="org.eclipse.ui" />
      </requires>
      <runtime>
         <library name="helloworld.jar" />
      </runtime>
      <extension point="org.eclipse.ui.views">
      <category
            id="org.eclipse.examples.helloworld.hello"
            name="Hello" />
         <view
            id="org.eclipse.examples.helloworld.helloworldview"
            name="Hello Greetings"
            category="org.eclipse.examples.helloworld.hello"
            class="org.eclipse.examples.helloworld.HelloWorldView" />
</extension>
   </plugin>

在此文件中,为插件定义了名称标识版本

还列示了我们必需的插件。由于我们在插件中使用了工作台和 SWT API,因此必须列示 org.eclipse.ui。还必须描述我们的可执行代码所在位置。我们打算将代码封装在 helloworld.jar 中,所以将其注册名。

最后,声明插件正向哪个扩展点进行添加。org.eclipse.ui.views 扩展具有几个不同的配置参数。首先为视图扩展声明类别。在工作台显示视图对话框中,可以使用类别来将相关视图集中在一起。我们定义了自己的类别“Hello”,以便使它显示在它自己的组中。为我们的视图声明了唯一的标识,并指定用来提供视图的实现的的名称。还为视图指定了名称“Hello Greetings”,它将显示在“显示视图”对话框和视图的标题栏中。

插件标识

在插件清单文件中使用了许多标识。个别扩展点通常会定义需要标识的配置参数 (例如,以上用于视图扩展点的类别标识)。我们还要定义插件标识。通常,应该对所有标识都使用 Java 包名前缀,以便确保所有已安装的插件都是唯一的。

在前缀后面使用的特定名称完全由您自己决定。然而,如果插件标识前缀刚好与其中一个包的名称相同,则应该避免在该包中使用类名。 否则,将很难分辨您正在查看标识名还是类名。

还应该避免对不同的扩展配置参数使用相同的标识。在上述清单中,已经使用了公共标识前缀(org.eclipse.examples.helloworld),但是,我们的所有标识都是唯一的。此命名方法可以帮助我们阅读文件并了解哪些标识是相关的。

下一步做什么?

此时,我们已经实现了视图并在插件清单中声明了添加项。 现在需要将插件安装到平台中以便可以运行它。

Copyright IBM Corporation and others 2000, 2003.