我有一个RCP应用程序和一个RCP插件(A)贡献了一个部分。部件中有一个TreeViewer(包含许多项)。我还定义了一个包含一些菜单项的弹出菜单(在文件.e4xmi中),然后将此菜单注册到TreeViewer。
我正在编写另一个RCP插件(B),它将为弹出菜单提供一个菜单项,并在处理程序中我想要删除TreeViewer中的选定项目。
问题是我无法访问B中Part(A)的数据.A如何将数据(TreeViewer)共享给B?我发现一个解决方案是使用EventBroker,但我想要其他一些。你能给我一些建议或提示吗?谢谢!
答案 0 :(得分:1)
有很多方法可以做到这一点。对于e4应用程序,最简单的方法是使用包含所有插件可以访问的数据的单例类。
您可以使用以下命令指定类是注射系统的可创建单例:
@Creatable
@Singleton
public class MyDataMananger
{
....
}
插件中的类可以注入类:
@Inject
MyDataManager manager;
你也可以
ServiceTracker
。ContextFunction
创建的类。ResourcesPlugin.getWorkspace()
)访问单个类。答案 1 :(得分:1)
另一种方法是将您的数据存储在正确的e4上下文中
E4 eclipse上下文的解释可以是found here
此外,如果您可以访问TreeVieewer itsefdl,则可以使用setData(..)
方法存储数据