したがって、 と で識別される 2 つのコマンドがありPLAY_COMMAND_ID
ますSTOP_COMMAND_ID
。各コマンドには、それぞれのハンドラがplayHandler
あり、stopHandler
(これらは拡張AbstractHandler
クラスです)。
これらのコマンドは、ビューのツールバーにボタン スタイルで提供されます。基本的に私が欲しいのは、最初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)