【问题标题】:RAP: How to access Object in ViewPartRAP:如何访问 ViewPart 中的对象
【发布时间】:2014-04-07 22:05:28
【问题描述】:

如何从其他地方访问ObjectView

(以下代码只是为了勾勒出我想要做的事情)

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

【问题讨论】:

  • 等等,你为什么不能只做一个getter函数?
  • @thatidiotguy 因为他知道他不会实例化View :)
  • @RomanC Ohohohohohohohohohohohohohho。你的意思是这将是一个静态类?带成员变量 !?!?!?!
  • @thatidiotguy 无论如何他必须知道小部件何时创建。
  • @JohnSmith 我会重新考虑我的答案。

标签: java swt eclipse-rcp jface


【解决方案1】:

使用以下代码 sn-p,并将 [ID] 替换为您在 plugin.xml 中为您的视图指定的 id。

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

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

【讨论】:

  • [ID] 在我的示例中应该是“视图”吗?我在哪里使用这个sn-p;这个“findView”对我有什么帮助?
  • 如果它与您的 plugin.xml 视图贡献相同,那么确定:)
  • 哦,好的,我明白了。非常感谢您的帮助;)
  • @Knownasilya 如果从其他窗口或视角调用,它将不起作用。
  • @RomanC 由于一次只显示一个透视图,不确定这是否会成为一个大问题,除非您在后台执行某些操作,在这种情况下您仍然在当前透视图中运行,对吧?如果我错了,还有其他方法可以一直有效吗?
【解决方案2】:

ViewViewPart 在工作台启动时注册在 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

【讨论】:

  • 那么如何从注册表中获取视图呢?
  • @Knownasilya 我已经详细描述了这个过程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-03
  • 1970-01-01
  • 2014-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多