如何访问ViewPart中的对象?

问题描述 投票:0回答:2

我如何从其他地方访问

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")

java swt eclipse-rcp jface
2个回答
1
投票

使用以下代码片段,并将

[ID]
替换为您在
plugin.xml
中为视图指定的 id。

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

id通常是

com.domain.something.viewName
的形式,可以在你的视图贡献下找到。


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

© www.soinside.com 2019 - 2024. All rights reserved.