代码之家  ›  专栏  ›  技术社区  ›  St.Shadow

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

  •  5
  • St.Shadow  · 技术社区  · 14 年前

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

    3 回复  |  直到 9 年前
        1
  •  5
  •   Brian McCutchon    9 年前

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

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

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

        2
  •  2
  •   Brian McCutchon    9 年前

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

    String pref = Platform.getPreferencesService().getString(
        "org.myplugin.preferences.page", "pref name",
        "default value if pref not found", null);
    
        3
  •  1
  •   bwinspur    14 年前

    每个插件都可以找到prefs存储。这是为 其激活器类为Activatora的插件。

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

    如果您希望另一个插件引用同一个存储,也许您可以 在Activatora上公开一些API,以便它到达那里,例如

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

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

    IPreferenceStore sharedPrefs = ActivatorA.getSharedPrefs();
    

    祝你好运。