2017-05-08 57 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)选择要更新的项目。