通过为视图和编辑器(也称为部件)提供简单的 API,组件框架允许嵌套和组成现有部件。组件框架 API 允许客户机实例化任意的 SWT 组合体中的部件,通过使部件与其站点的本地接口通信而不是访问全局对象来增强坚固性和防泄露能力,允许客户机扩展可从某个站点获取的一组接口,并提供了一个框架以便客户机使用可用于视图和编辑器的相同 API 来创建它们自己的可重用组件。组件框架还允许通过原子操作来构造和破坏部件,并允许现有的部件使用新的站点接口。
这个简单的示例提供一个视图,该视图设置其名称、标题、工具提示和图像,并演示了如何使用组件框架来编写编辑器或视图。该示例显示了使用组件 API 的源代码。新的部件可以在其构造函数中获取自变量,且不需要实现任何特定接口,也不需要继承任何特定基类。
/**
* Sample view that sets its name, tooltip, image, and content description.
The view
* uses a custom image supplied by its plug-in.
*
* @since 3.1
*/
public class NameViewNew {
/**
* Component constructor. Do not invoke directly.
*/
public NameViewNew(Composite parent, INameable name, IPluginImages
images) {
name.setName("Name View (New)");
name.setContentDescription("content description");
name.setTooltip("This is a tooltip");
name.setImage(images.getImage("icons/sample.gif"));
// Create some bogus view contents
Label content = new Label(parent, SWT.NONE);
content.setText("View contents go here");
}
}
注意,给视图的构造函数提供的自变量已经知道其上下文。例如,不需要将视图属于哪个插件告知
IPluginImages 接口。同样地,这些接口是防泄漏的。在此示例中,INameable 实现自动分配和解除分配视图的图像,因此视图本身不需要实现除去方法。
值到注意的是,用于视图和编辑器的 API 完全相同。换句话说,如果我们选择了向
org.eclipse.ui.editors 扩展点注册 NameViewNew 类,则它还可以用作编辑器而无需作进一步的修改。