我遇到了一个问题:
即:
我在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/