【问题标题】:Menu visibility菜单可见性
【发布时间】:2011-09-10 20:18:56
【问题描述】:

我使用属性测试器创建了具有可见性表达式的菜单,如下所示:

        <menu
              label="Recent projects">
           <visibleWhen
                 checkEnabled="false">
              <test
                    property="VisibilityTester">
              </test>
           </visibleWhen>
        </menu>

它是有效的。但是属性测试器类中的方法“test()”,平台并不是每次都在需要的时候调用。结果,有时这个菜单在它必须不可见时是可见的,反之亦然。

当需要刷新此类菜单的状态时,如何强制平台以编程方式调用这些方法?

【问题讨论】:

    标签: eclipse-plugin eclipse-rcp


    【解决方案1】:

    平台核心表达式提供 2 种方法来为评估提供信息。第一个是贡献ISourceProviders,然后可以在 with 元素中使用。 ISourceProviders 是事件驱动的,随着系统的变化更新系统。

    另一种方法是使用属性测试器。它们的重量要轻得多,提供了一种测试属性的方法,而将其作为变量提供是没有意义的。但正如您所发现的,它们不是事件驱动的,也不会强制系统更新。但是您可以使用 API 来请求他们重新评估,org.eclipse.ui.services.IEvaluationService.requestEvaluation(String)

    IEvaluationService srv = (IEvaluationService) workbench.getService(IEvaluationService.class);
    srv.requestEvaluation("org.eclipse.core.resources.persistentProperty");
    

    【讨论】:

    • 非常感谢!哪种方法更可取?
    • 源提供程序对于应用程序的当前状态很有用。即活动窗口、部件和编辑器,或当前登录的用户。属性测试器适用于源变量或选择的属性(如资源的持久性属性)、编辑器输入或不容易呈现为一组简单变量的应用程序状态。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-03
    • 2023-04-06
    • 1970-01-01
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多