Java Eclipse插件:基于当前选择启用操作

Java Eclipse插件:基于当前选择启用操作,java,eclipse-plugin,Java,Eclipse Plugin,我使用org.eclipse.ui.popupMenus扩展点添加一个子菜单,其操作绑定到以下类: public class MyAction implements IObjectActionDelegate { private Logic logic = Logic.getInstance(); // Singleton public void setActivePart(IAction a, IWorkbenchPart targetPart) {

我使用org.eclipse.ui.popupMenus扩展点添加一个子菜单,其操作绑定到以下类:

  public class MyAction implements IObjectActionDelegate {

     private Logic logic = Logic.getInstance(); // Singleton

     public void setActivePart(IAction a, IWorkbenchPart targetPart) {
        // Nothing here
     }

     public void run(IAction a) {      
        // Do something...
     }

     public void selectionChanged(IAction a, ISelection s) {
        a.setEnabled(logic.isEnabled(s));
     }
  }
此操作在大多数情况下都能正常工作(包括在
selectionChanged()
中调用
a.setEnabled()
)。 我的问题是在第一次调用我的操作时。
selectionChanged
方法仅在显示菜单项后调用(而不是在用户进行选择时),这意味着对
a.setEnabled()
的调用不会产生任何影响


关于如何让我的操作在第一次被调用之前就接收到
selectionChanged()
通知,有什么想法吗?

第一次和之后的话让我想知道同步问题。如果推迟了
Logic.getInstance()
的初始化,您可能会看到,

Eclipse使用所谓的延迟插件激活,因此它首先尽可能多地从plugin.xml派生,并且您观察到的行为在API中有详细的文档记录

不,这与Eclipse处理插件的方式有关。幸运的是,没有同步!