Eclipse RCP插件之间共享数据的方式有多少种?

时间:2017-11-07 11:25:16

标签: eclipse-plugin treeview eclipse-rcp data-sharing

我有一个RCP应用程序和一个RCP插件(A)贡献了一个部分。部件中有一个TreeViewer(包含许多项)。我还定义了一个包含一些菜单项的弹出菜单(在文件.e4xmi中),然后将此菜单注册到TreeViewer。

我正在编写另一个RCP插件(B),它将为弹出菜单提供一个菜单项,并在处理程序中我想要删除TreeViewer中的选定项目。

问题是我无法访问B中Part(A)的数据.A如何将数据(TreeViewer)共享给B?我发现一个解决方案是使用EventBroker,但我想要其他一些。你能给我一些建议或提示吗?谢谢!

2 个答案:

答案 0 :(得分:1)

有很多方法可以做到这一点。对于e4应用程序,最简单的方法是使用包含所有插件可以访问的数据的单例类。

您可以使用以下命令指定类是注射系统的可创建单例:

@Creatable
@Singleton
public class MyDataMananger
{
  ....
}

插件中的类可以注入类:

@Inject
MyDataManager manager;

你也可以

  • 使用OSGi服务并使用ServiceTracker
  • 注入使用ContextFunction创建的类。
  • 只需通过插件的激活器(如ResourcesPlugin.getWorkspace())访问单个类。
  • 定义服务的扩展点

答案 1 :(得分:1)

另一种方法是将您的数据存储在正确的e4上下文中 E4 eclipse上下文的解释可以是found here
此外,如果您可以访问TreeVieewer itsefdl,则可以使用setData(..)方法存储数据

相关问题