更改命令ids默认处理程序

时间:2011-06-08 06:32:36

标签: eclipse-rcp

我需要更改命令id的默认处理程序。例如,RestartWorkbenchHandler的命令id是org.eclipse.ui.file.restart。因此,当我们给出命令是org.eclipse.ui.file.restart时,它将调用RestartWorkbenchHandler。 现在我想限制不要调用RestartWorkbenchHandler而应该在我给org.eclipse.ui.file.restart时调用我自己的Handler。我该怎么做?

由于 巴努•

1 个答案:

答案 0 :(得分:2)

该处理程序作为该命令的默认处理程序(priority == 0)提供。但是,AFAIK的ID是 org.eclipse.ui.file.restartWorkbench

您可以通过提供具有更高优先级的另一个处理程序来覆盖它。您可以使用org.eclipse.ui.handlers

  <handler class="org.example.YourResetHandler"
        commandId="org.eclipse.ui.file.restartWorkbench">
     <activeWhen>
        <with variable="activeWorkbenchWindow">
           <instanceof value="org.eclipse.ui.IWorkbenchWindow"/>
        </with>
     </activeWhen>
  </handler>

或者您可以在制作遗留操作时在ActionBarAdvisor中注册另一个处理程序:

    IHandlerService srv = (IHandlerService) window.getService(IHandlerService.class);
    srv.activateHandler(IWorkbenchCommandConstants.FILE_RESTART, new YourRestartHandler());