两个处理的项目在e4中使用相同的命令,一个被触发,另一个未被触发

时间:2018-01-31 03:21:18

标签: java eclipse command menuitem e4

我遇到了一个问题:

那是:

我添加了一个" Command"命名" saveCommand"在e4xmi;

我添加了一个" Handled Menu Item"命名"保存"使用" saveCommand"在e4xmi;

我添加了一个" Handled Tool Item"命名"保存"使用" saveCommand"在e4xmi;

在" saveCommand"它使用" saveHandler"控制两个保存按钮动作: 代码是:

@CanExecute
public boolean canExecute() {

    if (caseNameValidatePass) {
        return true;
    }
    return false;
}

但现在的问题是:  当canExecute函数返回true时,启用保存菜单按钮,  但仍然禁用了保存工具按钮。

让我感到困惑。为什么?有人可以帮忙解答我的困惑吗?非常感谢!

1 个答案:

答案 0 :(得分:1)

每次显示菜单时都会为菜单项调用

@CanExecute,但对于工具项,您可能需要请求使用UIEvents.REQUEST_ENABLEMENT_UPDATE_TOPIC事件运行它:

@Inject 
IEventBroker eventBroker;

eventBroker.send(UIEvents.REQUEST_ENABLEMENT_UPDATE_TOPIC, selector);

selector可以UIEvents.ALL_ELEMENT_ID更新所有工具项或org.eclipse.e4.ui.workbench.Selector的实现,以选择要更新的特定项目。

只要caseNameValidatePass值发生变化,您就需要调用此方法。