4

我如何从其他地方访问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")在应用程序的任何地方使用。

4

2 回答 2

1

使用以下代码片段,并替换[ID]为您在plugin.xml.

IViewPart viewPart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView( [ID] );

id 通常采用 的形式,com.domain.something.viewName可以在您的视图贡献下找到。

于 2012-08-31T20:09:16.487 回答
1

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

于 2012-08-31T20:51:51.307 回答