Eclipse Luna RCP のコマンド ハンドラーに問題があります。
私の E4 アプリケーション モデルでは、特定の状況下でのみ有効にする必要があるいくつかのコマンドと関連するハンドラーを定義しました。このため、私のハンドラー POJO では@CanExecute、必要な条件をチェックする場所でアノテーションが付けられたメソッドを実装しました。
また、これらのコマンドに関連付けられたメニューとツールバーの項目も定義しました。
問題は、@CanExecuteメソッドが適切に呼び出されず、その結果、メニューとツールバーの項目が適切に有効化/無効化されないことです。
特に、メニュー項目の場合、@CanExecuteメソッドはアプリケーションの起動時に数回だけ呼び出され、その後は呼び出されません。
代わりに、ツールバー項目の場合、@CanExecuteメソッドはアクティブなコンテキストが変更された場合にのみ呼び出されます (たとえば、アクティブなパーツを変更したり、新しいシェルを開いたりする場合)。
Kepler では、動作がまったく異なります (期待どおりに動作しました)。
- メニュー項目の場合、
@CanExecuteメニューが表示されるたびにメソッドが呼び出されました @CanExecuteツールバー項目の場合、 400 ミリ秒ごとにメソッドを呼び出すタイマーがありました
これは Luna の既知のバグですか? 期待される動作を実現するための回避策を知っていますか?
ありがとう!