3

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

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

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

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

特别是,对于菜单项,这些@CanExecute方法仅在应用程序启动时被调用几次,但在那之后就不再调用了。

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

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

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

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

谢谢!

4

1 回答 1

8

这是在错误427465436755中描述的 Eclipse Luna 中的设计更改

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

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

'eventBroker' 是IEventBroker.

于 2014-06-25T16:25:28.603 回答