【问题标题】:How to call @canExecute method from a class如何从类中调用@canExecute 方法
【发布时间】:2018-08-17 16:38:33
【问题描述】:

我正在开发 eclipse rcp4 应用程序,我遇到了 @canExecute 注释方法的问题。当我发送 broker.send(UIEvents.REQUEST_ENABLEMENT_UPDATE_TOPIC, UIEvents.ALL_ELEMENT_ID); 它将触发所有 canExecute 方法,但我只想限制为某些类。 有人可以帮忙吗

【问题讨论】:

    标签: eclipse-plugin eclipse-rcp rcp e4


    【解决方案1】:

    UIEvents.REQUEST_ENABLEMENT_UPDATE_TOPIC 事件调用的第二个参数可以是实现 org.eclipse.e4.ui.workbench.Selector 的东西。

    因此,例如,仅更新您可以使用的特定元素 ID:

    Selector selector = element -> "element id".equals(element.getElementId());
    
    eventBroker.send(UIEvents.REQUEST_ENABLEMENT_UPDATE_TOPIC, selector);
    

    如果你只想更新单个元素,你可以指定元素 id 作为第二个参数:

    eventBroker.send(UIEvents.REQUEST_ENABLEMENT_UPDATE_TOPIC, "element id");
    

    【讨论】:

    • greg,这些东西记录在哪里,即什么样的对象/数据可以传递给eventBroker.send()method?谢谢
    • @titou10 文档很差,我只记得在开发人员的一个博客中看到过这个,它也包含在 UIEvents.REQUEST_ENABLEMENT_UPDATE_TOPIC 的 JavaDoc 中。您可以指定的内容取决于活动主题
    • @Greg,感谢您的回答,我尝试过,但没有运气。下面是问题的描述。我们正在开发具有多个部分的纯 Eclipse Rcp-4 应用程序,没有。工具栏贡献项。在打开任何部分期间,所有工具栏项目都已注册,如果打开多个部分,则工具栏项目的所有部分都已注册,如果我尝试切换选项卡,则会调用 canExecute 注释方法的所有部分,但我们只需要活动部分应该调用 canExecute 方法。谢谢,
    • 此答案仅适用于当您在代码中执行 UIEvents.REQUEST_ENABLEMENT_UPDATE_TOPIC 并且绝对适用于正确的选择器时。当核心 e4 代码要检查启用时,您无法控制它会做什么。
    • 另请注意,核心 e4 代码对各种事件的启用进行了大量检查。
    猜你喜欢
    • 2011-01-27
    • 2012-12-27
    • 2015-07-12
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多