5

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

4

3 回答 3

5

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

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

这样,首选项页面会将值存储在核心插件中。Core 插件可以使用这些值而不依赖于 UI 插件。

于 2011-03-10T04:28:13.230 回答
2

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

String pref = Platform.getPreferencesService().getString(
    "org.myplugin.preferences.page", "pref name",
    "default value if pref not found", null);
于 2011-08-31T09:20:36.310 回答
1

每个插件都可以找到首选项商店。这是为激活器类为 ActivatorA 的插件获取首选项存储的一种方法。

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

如果您希望另一个插件引用同一商店,也许您可​​以在 ActivatorA 上公开一些 api 以使其到达那里,例如

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

第二个插件会通过这样做找到共享存储

IPreferenceStore sharedPrefs = ActivatorA.getSharedPrefs();

祝你好运。

于 2010-05-10T23:19:31.563 回答