Eclipse plugin 如何从类中调用@canExecute方法

Eclipse plugin 如何从类中调用@canExecute方法,eclipse-plugin,eclipse-rcp,rcp,e4,Eclipse Plugin,Eclipse Rcp,Rcp,E4,我正在开发EclipseRCP4应用程序,我面临@canExecute注释方法的问题。当我发送 发送(UIEvents.REQUEST\u ENABLEMENT\u UPDATE\u主题,UIEvents.ALL\u元素\u ID); 它将触发所有canExecute方法,但我只想限制到某个类。 任何人都可以在这方面提供帮助吗UIEvents.REQUEST\u ENABLEMENT\u UPDATE\u主题的第二个参数可以实现org.eclipse.e4.ui.workbench.Select

我正在开发EclipseRCP4应用程序,我面临@canExecute注释方法的问题。当我发送 发送(UIEvents.REQUEST\u ENABLEMENT\u UPDATE\u主题,UIEvents.ALL\u元素\u ID); 它将触发所有canExecute方法,但我只想限制到某个类。
任何人都可以在这方面提供帮助吗
UIEvents.REQUEST\u ENABLEMENT\u UPDATE\u主题的第二个参数可以实现
org.eclipse.e4.ui.workbench.Selector

例如,要更新特定的元素id,可以使用:

Selector=element->“element id”.equals(element.getElementId());
发送(UIEvents.REQUEST\u ENABLEMENT\u UPDATE\u主题,选择器);
如果只想更新单个元素,只需将元素id指定为第二个参数:

eventBroker.send(UIEvents.REQUEST_ENABLEMENT_UPDATE_主题,“元素id”);

greg,这些东西记录在哪里,即什么样的对象/数据可以传递给
eventBroker.send()
方法?thx@titou10文档很差,我只记得在一个开发人员的博客中看到过这一点,JavaDoc for UIEvents.REQUEST\u ENABLEMENT\u UPDATE\u主题中也介绍了这一点。您可以指定的内容取决于事件topic@Greg,谢谢你的回答,我试过了,但是运气不好。下面是问题的描述。我们正在开发纯EclipseRCP-4应用程序,其中包含多个部分和数量的工具栏贡献项。在打开任何零件的过程中,将注册所有工具栏项目,如果打开多个零件,将注册工具栏项目的所有零件,如果我尝试切换选项卡,将调用canExecute注释方法的所有零件,但我们只需要调用活动零件canExecute方法。谢谢,此答案仅适用于在代码中执行UIEvents.REQUEST\u ENABLEMENT\u UPDATE\u主题时,并且肯定与正确的选择器配合使用。当核心e4代码想要检查启用时,您无法控制它会做什么。还要注意的是,核心e4代码会在各种事件上大量检查启用情况。