我在"文件"菜单中创建了菜单项作为命令。对于此命令,有一个实现IHandler
接口的处理程序。此处理程序包含 isEnabled
方法。我正在尝试使用此方法启用/禁用我的菜单项,但是当我单击"文件"菜单时,该方法仅被调用一次。当单击第二次、第三次等次时,即使我之前更改了页面的状态(打开/关闭编辑器),也不会再次调用 isEnabled
方法。
我该怎么办?也许此方法不适用于控件菜单项?
你在org.eclipse.core.commands.AbstractHandler
子类吗? 应使用 setBaseEnabled(boolean)
更新处理程序的状态(这将更新命令)。
只有在处理程序中更改启用状态才有效,只要您还触发了HandlerEvent
。 通常更容易调用setBaseEnabled(boolean)
这将为您触发事件。
如果您尝试启用/禁用菜单,则应使用核心表达式。我已经在这个答案中解释了如何做到这一点:
Eclipse RCP 菜单和操作:配置还是编码?
您感兴趣的部分从以下部分开始:
用于激活/停用菜单[...]
我希望这就是你要找的。