因此,我有兩個命令,它們由PLAY_COMMAND_ID
和STOP_COMMAND_ID
標識。每個命令分別具有playHandler
和stopHandler
(這些擴展AbstractHandler
類)。這段代碼在激活/禁用命令Eclipse插件開發的IHandler激活方面有什麼問題
這些命令在我的視圖的按鈕樣式的工具欄中貢獻。基本上我想要的是最初PLAY_COMMAND
是活躍的,但STOP_COMMAND
不是。當點擊PLAY_COMMAND
時,它將激活STOP_COMMAND
,然後自行關閉(PLAY_COMMAND
)。反之亦然STOP_COMMAND
點擊。
所以我所做的就是這樣。起初,它起作用了(我點擊了播放按鈕,然後停止按鈕被激活,播放按鈕被禁用,我點擊了停止按鈕,然後播放按鈕被激活,停止按鈕被禁用,但是當我點擊播放按鈕時再次,當停止按鈕被激活時,播放按鈕仍然有效)。那麼,什麼是錯在這裏我的代碼:
private AbstractHandler playHandler, stopHandler, pauseHandler, stepHandler;
private IHandlerActivation playActivation, stopActivation, pauseActivation, stepActivation;
private void createHandlers(){
final IHandlerService handlerService = (IHandlerService)getSite().getService(IHandlerService.class);
playHandler = new AbstractHandler() {
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
handlerService.deactivateHandler(playActivation);
if(stopActivation == null){
stopActivation = handlerService.activateHandler(STOP_COMMAND_ID, stopHandler);
} else {
handlerService.activateHandler(stopActivation);
}
return null;
}
};
stopHandler = new AbstractHandler() {
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
handlerService.deactivateHandler(stopActivation);
handlerService.activateHandler(playActivation);
return null;
}
};
playActivation = handlerService.activateHandler(PLAY_COMMAND_ID, playHandler);
}
}
的createHandlers()
方法被稱爲在createPartControl(Composite parent)
方法之我見到底。