Eclipse的月神:经办人@CanExecute方法不叫

问题描述:

我在与在Eclipse RCP月神命令处理的一个问题。Eclipse的月神:经办人@CanExecute方法不叫

在我E4应用模式,我定义一些命令和相关处理程序只能在特定情况下启用 。出于这个原因,在我处理的POJO,我实现 方法与@CanExecute注解,我检查所需要的条件。

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

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

尤其是,对于菜单项,在@CanExecute方法仅在应用程序启动调用了几次,但从来没有以后。

对于工具栏项目而言,仅在活动上下文更改(例如更改活动部件或打开新shell)时才调用@CanExecute方法。

在开普勒的行为是完全不同的(如预期工作):

  • 菜单项,在@CanExecute方法菜单中显示
  • 工具栏项目每次被调用时,有一个定时器,每400ms调用@CanExecute方法

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

谢谢!

这是Eclipse月神的设计更改中的bug 427465描述,也436755

你可以在工具栏@CanExecute方法运行使用:

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

'eventBroker' 是IEventBroker

+0

谢谢您的回答。这个解决方案也适用于菜单项吗? –

+0

我看不到主菜单出现问题@CanExecute方法 –

+0

我想我找到了菜单项的问题。它与Unity面板有关(我在Ubuntu下开发)。如果我用UBUNTU_MENUPROXY环境变量的空值运行我的应用程序,则@CanExecute方法会被正确调用。否则,我有我在我的帖子中描述的问题。 –