我怎么访问的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]
与您在您的视图中指定的ID plugin.xml
。
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
。