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

时间:2018-02-08 08:58:41

标签: eclipse-plugin eclipse-rcp deprecated

在我需要从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相当于什么?

1 个答案:

答案 0 :(得分:4)

void ColaMachine::addMoney(int money) { //This part doesnt seem to modify the actual value //Whenever It goes back to the main game loop it doesnt change. _money += money; 没有等效的API。您可以使用Platform.getPluginPlatform.getBundle获取有关其他插件的有限信息,但这对此没有帮助。

FileLocator.find插件确实有org.eclipse.ui方法,但这是在内部包中,因此如果您使用它,则会破坏Eclipse API Rules of Engagement。< / p>

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