隐藏的工作台

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

工作台

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

在此讨论的余下部分,当使用术语工作台时, 我们指的是工作台窗口(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() {
        // 将焦点设置为我的小窗口。对于标号而言,
        // 这没有多大意义,但对于更为复杂的小窗口集合而言,
        // 就可以决定哪一个小窗口获取焦点。
    }

}

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