技术开发 频道

将基于 Swing 的开发工具插入 Eclipse 中

  集成的主要目的是开发一个用 Ed 作为在 Workbench 中找到的任何 ThirdParty.java 的缺省编辑器的插件。

  准备插件项目

  在 Workbench 中,创建一个新的插件项目“org.eclipse.jumpstart.editorintegration”,然后选择 Create plug-in project 向导中的“Create plug-in using a template wizard”选项。单击 Next。选中“Add default instance acces”选项,然后单击 Finish。Workbench 切换到 Plug-in Development Perspective。一个空白的插件清单(manifest)文件以及继承了 AbstractUIPlugin 的插件类 EditorintegrationPlugin 是被自动创建的。还生成了插件类的一个私有静态实例以及 getter 方法。

  插件清单文件编辑器应该是打开的;如果没打开,双击 plugin.xml 启动它。

  该插件需要下面这些库。将它们添加到插件项目的 Java Build Path 下:

  ECLIPSE_HOME/plugins/org.eclipse.core.resources/resources.jar

  ECLIPSE_HOME/plugins/org.eclipse.jdt.core/jdtcore.jar

  ECLIPSE_HOME/plugins/org.eclipse.jdt.ui/jdt.jar

  ECLIPSE_HOME/plugins/org.eclipse.swt/swt.jar

  ECLIPSE_HOME/plugins/org.eclipse.ui/workbench.jar

  插件清单文件

  因为这个插件只处理名为 ThirdParty.java 的 Java 文件,所以我们需要为这些 Java 文件指定一个编辑器。在插件清单文件编辑器中,切换到 Extensions 选项卡,然后添加扩展点“Internal and External Editors”。将 default 设为“true”,将 name 设为“Ed - Swing Editor”,将 filenames 设为“ThirdParty.java”,将 launcher 设为“org.eclipse.jumpstart.editorintegration.EdLauncher”。添加的扩展点的源代码看上去应该如清单 1 所示:

  清单 1. 添加一个扩展点

1 <extension point="org.eclipse.ui.editors">
2 <editor
3    name="Ed - Swing Editor"
4    default="true"
5    icon="icons/thirdparty.gif"
6    filenames="ThirdParty.java"
7    launcher="org.eclipse.jumpstart.editorintegration.EdLauncher"
8    id="org.eclipse.jumpstart.editorintegration.ed">
9 </editor>
10 </extension>
11

  Ed 现在是所有 ThirdParty.java 文件的缺省编辑器,如 图 2所示。

  图 2. Ed 是所有 ThirdParty.java 文件的缺省编辑器

  请注意:一定要包括 icons/thirdparty.gif 文件,它被作为“Open With”菜单中所有 ThirdParty.java 文件的缺省编辑器显示。

  集成 Ed 源代码

  将 Ed 的源代码导入到插件项目中。如何调用 Ed 由您决定。插件类可以包含一个 Ed 私有域以及一个相应的公有 getter 方法:

  清单 2. Ed 作为私有域

1 private Ed ed = null;
2 public Ed getEd()
3 {
4    if (ed == null)
5    {
6       ed = new Ed ();
7    }
8    return ed;
9 }
10

  另外,插件类可以为每个已启动的 ThirdParty.java 文件返回 Ed 的一个单独的实例。您在该插件维护和提供的 Singleton 实用程序类中实现这两种方式中的哪一种都可以。

  编辑器启动程序(launcher)

  因为插件使用扩展点 org.eclipse.ui.editors ,所以它必须为 Eclipse Platform 提供一个清单文件中指定的编辑器启动程序类。

  创建类 org.eclipse.jumpstart.editorintegration.EdLauncher 以实现接口 IEditorLauncher(如果没找到这个接口,请确保 workbench.jar 文件包含在 Project Path 中;请参阅 准备插件项目)。请一定要选中 Wizard 中的“Inherited abstract methods”选项。

  每次双击 ThirdParty.java 文件时,Eclipse Platform 都执行 EdLauncher.open(IFile) 来调用该文件类型的缺省编辑器。Platform 将单击的构件作为 IFile 传送给方法。在这种情况下,IFile 是一个 Java 源文件,因此您可以将它因此您可以将它强制转型为 ICompilationUnit。

  由于 Ed 并不是为了处理 JDT 对象而设计的,所以您必须从 ICompilationUnit 中抽取源代码内容并将它放到 Ed 中以便查看:

  一旦执行了 show() 方法,Ed 就被作为主 Workbench 窗口外部的一个 JFrame 显示(请参见 图 3)。插件记录已编辑的 ThirdParty.java 的项目名称和包名称。当您试图保存 Ed 中所作的更改时,该信息是至关重要的。

  图 3. Swing 编辑器显示在 Workbench 外面

0
相关文章