两个eclipse插件如何使用相同的首选项存储?

时间:2010-04-22 09:18:37

标签: eclipse eclipse-plugin preferences eclipse-pde

我有两个插件,比如com.site.plugin.core和com.site.plugin.ui。
我想将核心部分与UI部分分开,所以在插件com.site.plugin.ui中我创建了Preferences页面,我在其中定义了一些首选项,com.site.plugin.core应该使用它们。我在Eclipse site查看文章,但它已经过时了,链接的bug也没有提供太多信息 那么可以使用标准的Eclipse机制来实现这一点,或者我需要通过包org.eclipse.core.runtime.preferences使用直接的低级API吗?

3 个答案:

答案 0 :(得分:5)

我认为UI取决于Core而不是其他。在这种情况下,您可以在UI插件的首选项页面中使用Core的首选项存储,如下所示:

IPreferenceStore store = CorePluginActivator.getDefault().getPreferenceStore();
setPreferenceStore(store);

通过这种方式,首选项页面将值存储在Core插件中。 Core插件可以使用这些值,而不依赖于UI插件。

答案 1 :(得分:2)

您还可以使用首选项服务访问其他插件中的首选项:

String pref = Platform.getPreferencesService().getString(
    "org.myplugin.preferences.page", "pref name",
    "default value if pref not found", null);

答案 2 :(得分:1)

每个插件都可以找到Prefs商店。这是获取prefs商店的一种方法 插件的激活类是ActivatorA。

IPreferenceStore store = ActivatorA.getDefault().getPreferenceStore();

如果你想让另一个插件引用同一个商店,也许你可以 在ActivatorA上暴露一些api,以便它到达那里,例如。

public IPreferenceStore getSharedPrefs() {
    return ActivatorA.getDefault().getPreferenceStore();
}

第二个插件会通过执行此操作找到共享存储

IPreferenceStore sharedPrefs = ActivatorA.getSharedPrefs();
祝你好运。