相当于弃用的 Platform.getPlugin(),需要访问 org.eclipse.ui 插件

Equivalent to the deprecated Platform.getPlugin(), need access to org.eclipse.ui plugin

在我需要从 Eclipse 4.5.2 迁移到 Eclipse 4.6.3 的自定义插件中, 我正在使用以下代码访问 org.eclipse.ui 插件

public class myClass extends Wizard {

...

   AbstractUIPlugin plugin = (AbstractUIPlugin) Platform.getPlugin("org.eclipse.ui");
   IDialogSettings settings = plugin.getDialogSettings();
   IDialogSettings section = workbenchSettings.getSection("myWizard");
   if (section == null) {
      section = workbenchSettings.addNewSection("myWizard");
   }
   setDialogSettings(section);

...

}

但从 4.6.0 开始,org.eclipse.core.runtime.compatibility 插件已被删除。所以我不能使用 Platform.getPlugin() 方法。

我发现 here 有人有同样的问题但没有答案。 而且我发现 there 只有当创建者公开单例时我才能访问插件。

所以我有两个问题:

  1. org.eclipse.ui插件单例是否暴露?
  2. 如果是,那么Platform.getPlugin()访问org.eclipse.ui插件相当于什么?

没有 API 等同于 Platform.getPlugin。您可以使用 Platform.getBundleFileLocator.find 获得有关其他插件的有限信息,但这对这里没有帮助。

org.eclipse.ui 插件确实有一个 UIPlugin.getDefault() 方法,但这是在 内部 包中,所以你会破坏 Eclipse API Rules of Engagement 如果你用过。

对于对话框设置,标准做法是在您自己的插件上调用 getDialogSettings,而不是您无法控制的其他插件。