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

时间:2014-06-25 16:16:37

标签: eclipse-rcp handler e4 canexecute eclipse-luna

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

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

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

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

特别是,对于菜单项,@CanExecute方法仅在应用程序启动时调用几次,但在此之后从不调用。

对于工具栏项,只有当活动上下文发生更改时(例如,更改活动部件或打开新shell时)才会调用@CanExecute方法。

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

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

这是Luna中的已知错误吗?您知道任何可能的解决方法来实现预期的行为吗?

谢谢!

1 个答案:

答案 0 :(得分:7)

这是臭虫427465中描述的Eclipse Luna中的设计更改,也是436755

您可以使用以下命令运行工具栏@CanExecute方法:

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

' eventBroker'是IEventBroker

相关问题