Eclipse RCP:存储应该可以从任何地方访问的应用程序数据的位置?

时间:2014-03-31 08:24:02

标签: java eclipse eclipse-rcp jface

我有一个CommonNavigator,其BaseWorkbenchContentProvider实现IMementoAware。因此,当应用程序关闭并启动时,我能够保存和恢复导航器的数据。到目前为止它已经足够了,但现在我已经实现了导航器数据的一些功能,而且我已经意识到即使在加载导航器插件之前我也需要访问数据< / em>(即在导航器视图变为活动状态之前)。

因此,我需要更改方法并需要在应用程序启动时加载数据,将其显示在导航器中并在应用程序关闭时最终保存。我在哪里可以存储数据,以便从任何地方访问?到目前为止,我已经在导航器的内容提供程序中恢复了IMemento,但问题是数据是在导航器视图初始化后才加载的。从应用程序的启动中加载和访问数据的正确方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用以下命令获取可以存储任意数据的位置的路径:

IPath path = Platform.getStateLocation(plugin bundle);

您可以从传递给插件激活器的Bundle获取插件BundleContext或致电:

Bundle bundle = Platform.getBundle("plugin id");

返回的状态位置将位于工作区.metadata/.plugins目录中。

您可以根据需要编写代码以从此位置加载和保存值。