技术开发 频道

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

  【IT168 技术文章】

        引言

  Eclipse Platform 为工具开发提供一组健壮的服务和 API。它使来自完全不同的供应商的工具之间的集成变得平滑,为不同类型的开发工作创建了一个无缝的环境。

  Eclipse Platform 的软件组件之一就是 SWT。尽管 SWT 不是 Platform 的一个核心组件集,但它还是不可或缺的,因为它为产品和插件开发者提供了一组基于 Java 的 GUI 小窗口。SWT 与操作系统无关且非常方便,然而它的底层 JNI 接口将展现本机平台的外观和感觉(look-and-feel)以及性能。

  总体上讲,对于那些想要编写在 Platform 的各种框架中运行良好且视觉上有吸引力的插件的开发者和供应商来说,SWT 提供了一个优秀的解决方案。然而,SWT 与 Java 的 Swing GUI 小窗口之间的互操作性程度相当低,这一点对 SWT 影响很大。例如,Swing 和 SWT 使用完全不同的事件处理机制。这个差异常常会使由 Swing 和 SWT 共同组成的 GUI 不可用。

  为了在 Swing 和 SWT 之间提供一个接口以便提供可接受级别的兼容性,我们已经做了一些工作,比如使开发者能够将 Swing 小窗口嵌入到 SWT 中的 org.eclipse.swt.internal.swt.win32.SWT_AWT 实用程序类。但是,这些方法仍然是实验性的,尚未获得官方支持 — 由此包名内含有“internal”。

  这个拙劣的互操作性对于 Eclipse 项目和工具供应商来说,都是令人遗憾的障碍。目前,大量软件开发和测试工具提供用 Swing 编写的用户界面。将一个带有复杂的 Swing GUI 的现有工具移植到 SWT 需要来自供应商的相当多的时间和投资。尽管 Eclipse Platform 具有了所有先天的优势,但是 Swing 和 SWT 之间拙劣的互操作性导致开发成果不那么吸引人。

  假定的 Swing 编辑器:Ed

  为了模拟真实的各种工具集成的情况,我们来使用一个假定的基于 Swing 的编辑器(名为“Ed”)。下面是 Ed 的一些特征:

  Ed 是基于 Swing 的编辑器。

  Ed 继承了 JFrame。

  Ed 只处理具有特定名称 ThirdParty.java 的 Java 文件上。

  Ed 用一个 JEditorPane和一个 JButton作为私有域。JEditorPane 显示 ThirdParty.java 的所有源代码。 JButton保存源代码。

  Ed 是带有一个 main() 方法的独立的 Java 应用程序。

  Ed 被设计为在命令提示符下运行。它并不知晓 Eclipse Platform Workbench。

  基本概念

  由于 Swing 和 SWT 互操作性的限制,难以获得这二者之间的直接通信(如事件处理)。在既不使用不被支持的 API 也不服从任何插件开发规则的情况下,实现这个目的的一条途径就是避免它们彼此嵌入,取而代之的是让它们拥有独立的 Frame。插件类(或者说 Singleton 实用程序类)将处理它们之间的通信,如 图 1所示。例如,Ed 上的 JButton 可以使一个 SWT Shell 出现,显示已编辑的 ThirdParty.java 的一些特定于 Workbench 的属性(如 Project References)。

0
相关文章