2017-05-08 58 views
0

在E3中,我們有幾個處理程序需要檢查,因此處理程序必須確定何時檢查。當時,這是一個簡單的任務:在E4中更新處理程序的狀態

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

我發現this similar question,但它是更廣泛的(更新所有的命令,而我只是想設置的選中狀態時的框架,似乎有必要)。由於工具和菜單項目可以是檢查或無線電項目,因此必須以某種方式進行。

那麼如何在E4中設置處理程序的檢查狀態?

回答

1

您可以設置檢查(選擇)的狀態在使用類似的處理程序的@CanExecute方法:

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

    return true; 
} 

菜單項的@CanExecute方法被調用每次顯示菜單的時間。

對於工具欄項目,您可能需要使用IEventBrokerUIEvents.REQUEST_ENABLEMENT_UPDATE_TOPIC事件來強制該方法運行。

eventBroker.send(UIEvents.REQUEST_ENABLEMENT_UPDATE_TOPIC, argument); 

argument可以

  • UIEvents.ALL_ELEMENT_ID更新所有項目。
  • 要更新的單個項目的ID。
  • A Selectororg.eclipse.e4.ui.workbench.Selector)選擇要更新的項目。