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

标签 java eclipse command menuitem e4

我遇到了一个问题:

即:

我在e4xmi中添加了一个名为“saveCommand”的“命令”;

我在 e4xmi 中使用“saveCommand”添加了一个名为“save”的“已处理菜单项”;

我在 e4xmi 中添加了一个名为“save”的“已处理工具项”,使用“saveCommand”;

在“saveCommand”中,它使用“saveHandler”来控制两个保存按钮的操作: 代码是:

@CanExecute
public boolean canExecute() {

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

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

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

最佳答案

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

@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 值发生变化时,您都需要调用此函数。

关于java - 两个处理的项目在e4中使用相同的命令,一个被触发,另一个不被触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48533922/

相关文章:

java - 正则表达式用于匹配没有特定模式的数字

java - java .getresource() 命令的资源在哪里?

linux - gdb 命令 "until"如何能够跳过循环?

bash - 获取物理键盘布局

java.lang.IllegalStateException : failed to get surface 错误

java - 在动态 JPanel 中添加 JScrollPane

java - 如何比较多个字符串数组?

java - 缺少构建路径条目

c++ - Eclipse CDT - 使用现有代码的新 Makefile 项目 - 更改全局默认构建目标

java - 从 Java 调用 Powershell 会无限执行