Eclipse插件之间的通信

时间:2013-10-31 16:24:17

标签: eclipse plugins communication

我在做一个Eclipse RCP应用程序。我创建了一个新的启动配置和视图。当我运行启动配置时,我得到一组结果,我想将这些结果发送到视图。

在这一刻,我创建了一个包含结果的新事件:

  BundleContext ctx = FrameworkUtil.getBundle(TraditionalLaunchConfigurationDelegate.class).getBundleContext();
  ServiceReference<EventAdmin> ref = ctx.getServiceReference(EventAdmin.class);
  EventAdmin eventAdmin = ctx.getService(ref);
  Map<String, Results> properties = new HashMap<String, Results>();
  properties.put("MUTATIONRESULTS",  //$NON-NLS-1$
                    results);


  Event event = new Event("mutationcommunication/asyncEvent", properties); //$NON-NLS-1$

  eventAdmin.postEvent(event);

视图正在倾听。当启动配置发送事件时,视图会捕获它并显示结果。

问题是它在视图实例化时有效。如果我不手动打开视图,它就不存在,也不会收到任何内容。

解决方案可以以编程方式打开视图,但

PlatformUI.getWorkbench().getViewRegistry().find("ID").createView();

不起作用。

有没有办法将元素发送到视图,如果视图不存在,则创建新实例?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

使用:

PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("id");

显示视图(如果尚未显示,则会创建)。