隐藏的工作台

工作台提供一组广泛的类和接口以构建复杂的用户界面。幸运的是, 您不需要全部了解它们就可以简单地执行一些任务。首先我们将考察在工作台用户界面及其相应的隐藏结构中所揭示的一些概念。

工作台

我们已经使用术语工作台来不太严格地表示“启动平台时打开的窗口”。让我们再深入一点,考察组成工作台的一些可视组件。

页面上有三个视图和一个编辑器的工作台

在此讨论的余下部分,当使用术语工作台时, 我们指的是工作台窗口(IWorkbenchWindow)。工作台窗口是工作台中的顶级窗口。它是用来保存菜单栏、工具栏、状态行、快捷方式栏和页面的框架。通常,您不需要对工作台窗口进行编程。您只需要知道它在那里。

注意:可以打开多个工作台窗口;但是,每个工作台窗口都是编辑器和视图的独立区域, 所以我们仅将重点放在单个工作台窗口上。

从用户的观点来看,工作台包含视图和编辑器。还有一些其它类用来实现工作台窗口。

页面

在工作台窗口内部,您将发现一个页面(IWorkbenchPage), 它也包含部件。页面是将部件分组的实现机制。通常,您不需要对页面进行编程,但是,您将看到它处于编程和调试的上下文中。

透视图

透视图在工作台页面内提供附加组织层。透视图定义针对给定用户任务的视图、这些视图的布局和可用操作的适当集合。当用户在各任务之间移动时,他们可以在各透视图之间进行切换。从实现的角度看来,用户的活动透视图控制哪些视图显示在工作台页面上并控制这些视图的位置和大小。透视图中的更改不会影响编辑器。

视图和编辑器

视图和编辑器是在了解实现详细信息之前要先了解的一些常见插件编程的位置。在将可视组件添加到工作台中时,您必须决定想要实现视图还是编辑器。您如何决定?

在任何一种情况下,都将根据常见的循环来构建视图或编辑器。

在整个循环内,将从包含工作台页面中触发事件, 以便通知感兴趣的人员,告诉他们视图和编辑器的打开、激活、释放和关闭情况。

似乎很简单?可能是吧!这就是工作台视图和编辑器的优点。它们只是小窗口控制程序,可以根据您的需要来使它更简单或更复杂。当我们先前构建 Hello World 视图时看到了最简单的视图。现在,既然已经解释了这么多将要进行的操作,让我们再次考察它。

   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.
      }
   }

注意,我们不需要实现 dispose() 方法,原因是我们未执行任何操作,只不过是在 createPartControl(parent) 方法中创建了一个标号。如果我们已经分配了任何用户界面资源,例如图像或字体,则在此处将需要除掉它们。由于我们扩展了 ViewPart 类, 因此,我们扩展了 dispose() 的“不执行任何操作”实现。

Copyright IBM Corporation and others 2000, 2003.