Java 在e4中,两个已处理项使用相同的命令,一个是triggerd,另一个不是

Java 在e4中,两个已处理项使用相同的命令,一个是triggerd,另一个不是,java,eclipse,command,menuitem,e4,Java,Eclipse,Command,Menuitem,E4,我遇到了一个问题: 即: 我在e4xmi中添加了一个名为saveCommand的命令 我在e4xmi中添加了一个名为save-use-saveCommand的已处理菜单项 我在e4xmi中添加了一个名为save-use-saveCommand的已处理工具项 在saveCommand中,它使用saveHandler控制两个保存按钮操作: 代码是: @CanExecute public boolean canExecute() { if (caseNameValidatePass) {

我遇到了一个问题:

即:

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

我在e4xmi中添加了一个名为save-use-saveCommand的已处理菜单项

我在e4xmi中添加了一个名为save-use-saveCommand的已处理工具项

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

@CanExecute
public boolean canExecute() {

    if (caseNameValidatePass) {
        return true;
    }
    return false;
}
但现在的问题是: 当canExecute函数返回true时,启用“保存菜单”按钮, 但“保存工具”按钮仍处于禁用状态

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

@CanExecute在每次显示菜单项时都会被调用,但对于工具项,您可能需要请求使用UIEvents运行它。请求启用更新主题事件:

选择器可以是UIEvents.ALL_ELEMENT_ID以更新所有工具项,也可以是org.eclipse.e4.ui.workbench.selector的实现以选择要更新的特定项


无论您的caseNameValidatePass值何时更改,您都需要调用此选项。

谢谢您的建议,这似乎是解决此问题的一个好方法。我们今天将尝试一下。非常感谢!非常感谢格雷格!它很有用!
@Inject 
IEventBroker eventBroker;

eventBroker.send(UIEvents.REQUEST_ENABLEMENT_UPDATE_TOPIC, selector);