2017-05-08 9 views
0

E3では、チェックするハンドラがいくつかあったため、ハンドラはいつチェックするかを判断する必要がありました。私はthis similar questionを見つけましたが、(私は唯一のフレームワークは、それが必要と思われるときは常にチェックされた状態を設定したい一方で、すべてのコマンドを更新)、それははるかに広いですE4でハンドラの状態を確認しました

public class MyHandler extends AbstractHandler implements IElementUpdater { 
    @Override 
    public void updateElement(UIElement element, Map parameters) { 
     element.setChecked(calculateCheckState()); 
    } 
} 

:当時、それは簡単な作業でした。ツールやメニューアイテムはチェックやラジオのアイテムにすることができるので、何とか可能です。

したがって、E4でハンドラのチェック状態を設定するにはどうすればよいですか?

答えて

1

あなたが好きなものを使用して、ハンドラの@CanExecute方法でチェック(選択)状態を設定することができます:メニュー項目@CanExecute方法については

@CanExecute 
public boolean canExecute(MItem item) 
{ 
    item.setSelected(... checked state ....); 

    return true; 
} 

は、メニューが表示されるたびに呼び出されます。

ツールバーの項目の場合、強制的にメソッドを実行するには、IEventBrokerUIEvents.REQUEST_ENABLEMENT_UPDATE_TOPICイベントを使用する必要があります。

eventBroker.send(UIEvents.REQUEST_ENABLEMENT_UPDATE_TOPIC, argument); 

argumentすべての項目を更新する

  • UIEvents.ALL_ELEMENT_IDすることができます。
  • 更新する単一項目のIDです。
  • Selectororg.eclipse.e4.ui.workbench.Selector)を使用して、更新するアイテムを選択します。
関連する問題