我需要更改命令id的默认处理程序。例如,RestartWorkbenchHandler的命令id是org.eclipse.ui.file.restart。因此,当我们给出命令是org.eclipse.ui.file.restart时,它将调用RestartWorkbenchHandler。 现在我想限制不要调用RestartWorkbenchHandler而应该在我给org.eclipse.ui.file.restart时调用我自己的Handler。我该怎么做?
由于 巴努•
答案 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());