我如何从其他地方访问
Object
的 View
?
(以下代码只是为了勾画我想要做的事情):
public class View extends ViewPart {
public static final String ID = "view";
private static List list;
public View() {
}
@Override
public void createPartControl(Composite parent) {
list = new List(parent, SWT.BORDER);
}
@Override
public void setFocus() {
}
public static void addToList(String string) {
list.add(string);
}
}
现在,我希望能够在应用程序中的任何位置使用
View.addToList("Message")
。
使用以下代码片段,并将
[ID]
替换为您在 plugin.xml
中为视图指定的 id。
IViewPart viewPart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView( [ID] );
id通常是
com.domain.something.viewName
的形式,可以在你的视图贡献下找到。
工作台启动时,
View
以及 ViewPart
都会注册到 ViewRegistry
中。 Workbench
包含所有已注册的视图和编辑器。从工作台注册表获取该视图信息的最简单方法。首先检查是否PlatformUI.getWorkbench().isStarting()
。一旦这个方法返回false
你就可以得到
IViewDescriptor descriptor = PlatformUI.getWorkbench().getViewRegistry().find("view");
工作台启动时,它会注册所有贡献给它的视图和编辑器,但要运行代码,您需要确保工作台正在运行并且您有视图的实例。
要创建
View
的实例,您将使用以下代码
try {
IViewPart view = descriptor.createView();
view.createPartControl();
} catch (CoreException e) {
// TODO something with e
e.printStackTrace();
}
现在你
be able to use View.addToList("Message") anywhere in the application
。