为什么isEnabled没有调用处理程序?

时间:2014-07-15 18:39:37

标签: java eclipse-plugin eclipse-rcp

我有工具栏上的按钮命令。

我有可见性按钮的逻辑。

在某些情况下,逻辑不会被eclipse触发。

当我搬到新的Eclipse(luna)

时发生了

这是清单   

  <command
        id="RunObjectCommand"
        name="%RUN_XTOL">
  </command>
 <menuContribution
        allPopups="false"
        locationURI= "toolbar:myView">
     <command
           commandId="RunObjectCommand"
           icon="icons/lrun_obj.gif"                              
           style="push">
     </command>
  </menuContribution>
  </extension
  <extension
     point="org.eclipse.ui.handlers">
  <handler
        class="RunObjectHandler"
        commandId="RunObjectCommand">
  </handler>
  </extension>

一直没有打电话的处理程序

  public class RunObjectHandler extends AbstractActionHandler {
  @Override
    public Object execute(ExecutionEvent event) throws ExecutionException {
       .............
    }

   @Override
    public boolean isEnabled() { 
    }
}

也许我需要在清单中添加一些逻辑?

1 个答案:

答案 0 :(得分:3)

Eclipse Luna不会像以前那样经常更新工具栏。

您可以使用以下方式更新处理程序:

IEventBroker eventBroker = (IEventBroker)PlatformUI.getWorkbench().getService(IEventBroker.class);

eventBroker.send(UIEvents.REQUEST_ENABLEMENT_UPDATE_TOPIC, UIEvents.ALL_ELEMENT_ID);
{p> IEventBrokerorg.eclipse.e4.core.services.events.IEventBroker插件中为org.eclipse.e4.core.servicesUIEvents插件中org.eclipse.e4.ui.workbench.UIEventsorg.eclipse.e4.ui.workbench。此代码是Eclipse Luna的新代码。