我有两个插件,比如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吗?
答案 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();
祝你好运。