Eclipse Luna:未调用处理程序的@CanExecute方法



我在Eclipse Luna RCP中遇到了一个命令处理程序问题。

在我的E4应用程序模型中,我定义了一些必须启用的命令和相关处理程序只有在某些情况下。因此,在我的处理程序pojo中,我实现了方法用@CanExecute注释,我检查所需的条件。

我还定义了与这些命令相关联的菜单和工具栏项。

问题是我的@CanExecute方法没有被正确调用,因此,菜单和工具栏项没有相应地启用/禁用。

特别地,对于菜单项,@CanExecute方法只在应用程序启动时被调用几次,之后就再也不会调用了。

对于工具栏项,相反,@CanExecute方法仅在活动上下文更改时调用(例如,当更改活动部分或打开新shell时)。

在开普勒中,行为完全不同(并按预期工作):

  • 对于菜单项,每次显示菜单时调用@CanExecute方法
  • 对于工具栏项,有一个计时器每400ms调用一次@CanExecute方法

这是Luna中已知的bug吗?你知道有什么方法可以达到预期的效果吗?

谢谢!

这是Eclipse Luna在bug 427465和436755中描述的设计更改

你可以使用下面的命令来运行@CanExecute方法:

eventBroker.send(UIEvents.REQUEST_ENABLEMENT_UPDATE_TOPIC, UIEvents.ALL_ELEMENT_ID);

'eventBroker'是IEventBroker .

最新更新