Eclipse plugin Eclipse:在一个插件中,如何访问另一个插件首选项存储?

Eclipse plugin Eclipse:在一个插件中,如何访问另一个插件首选项存储?,eclipse-plugin,Eclipse Plugin,我有一个Eclipse插件,在插件的首选项页面中有一个复选框。 此复选框用于启用和禁用从该插件启动的编辑器 但是,问题是,我还希望能够通过更改上述首选项页面中复选框的值的操作,从另一个插件启用和禁用此“编辑器启动” 问题是,如何从另一个插件访问本地首选项存储 我试过像 View myView = (View) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView("ViewID"); 但是这个

我有一个Eclipse插件,在插件的首选项页面中有一个复选框。 此复选框用于启用和禁用从该插件启动的编辑器

但是,问题是,我还希望能够通过更改上述首选项页面中复选框的值的操作,从另一个插件启用和禁用此“编辑器启动”

问题是,如何从另一个插件访问本地首选项存储

我试过像

View myView = (View) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView("ViewID");
但是这个“
myView
”看起来总是空的。。还有,既然视图是我想要的插件,我该怎么处理它呢

Platform.getBundle('bundleName')...  
这里也是一样,想要插件,而不是对应于is的包

无论我尝试什么,似乎都不管用。
有人有什么想法吗?

这就是服务跟踪器的使用:

ServiceTracker tracker = new ServiceTracker(ToolkitPlugin.getDefault().getBundle().getBundleContext(),
                                            IProxyService.class.getName(), null);
tracker.open();
proxyService = (IProxyService) tracker.getService();
proxyService.addProxyChangeListener(this);
这可能行得通

每个插件都可以找到Prefs存储。这是为activator类为ActivatorA的插件获取prefs存储的一种方法

IPreferenceStore=ActivatorA.getDefault().getPreferenceStore()

如果你想让另一个插件引用同一个商店,也许你可以在ActivatorA上公开一些api,让它达到目的,例如

公共IPreferenceStore getSharedPrefs(){ 返回ActivatorA.getDefault().getPreferenceStore(); }

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

IPreferenceStore sharedPrefs=ActivatorA.getSharedPrefs()


祝你好运。

或者看看这个答案:

有两种方法:

  • 请参阅

  • 使用.getPluginPreferences()。例如,有一个插件类“com.xxx.TestPlugin”,它扩展了org.eclipse.ui.plugin.AbstractUIPlugin.plugin,以便访问TestPlugin的首选项。插件代码可能如下所示:

  • 要访问TestPlugin的首选项,代码可以是:

    TestPlugin.getDefault().getPluginPreferences().getDefaultBoolean(TestPlugin.PREF_TEST);
    
    TestPlugin.getDefault().getPluginPreferences().getDefaultBoolean(TestPlugin.PREF_TEST);