2011-06-08 17 views
0

我需要更改命令ID的默認處理程序。例如RestartWorkbenchHandler的命令ID是org.eclipse.ui.file.restart。所以當我們給出的命令是org.eclipse.ui.file.restart時,它會調用RestartWorkbenchHandler。 現在我要限制不是召RestartWorkbenchHandler相反,它應該叫我自己的處理程序時,我給org.eclipse.ui.file.restart。我怎麼做?更改命令ID默認處理程序

由於 巴努•

回答

2

即處理程序作爲該命令的默認處理(優先級== 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()); 
+1

嗨保羅感謝information.I想問你一個問題。我的項目,它不是rcp應用程序。它是eclipe工作臺應用程序。在那種情況下,我該怎麼做?我如何添加您提供的代碼? – user414967 2011-06-08 13:26:05

+0

在IDE 1)你最好不要殺我的**文件>重新啓動** :-)和2),你將不得不使用plugin.xml的方法,因爲你不提供'ActionBarAdvisor' – 2011-06-08 13:31:44

+0

那裏,我們需要在重新啓動之前添加一個確認消息框。這是要求。 – user414967 2011-06-08 13:38:18