菜单可见性

时间:2011-06-08 12:32:27

标签: eclipse-plugin eclipse-rcp

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

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

它是有效的。但是属性测试器类中的方法“test()”,平台在每次必要时都不会调用。结果,有时这个菜单在看不到它时是可见的,相反。

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

1 个答案:

答案 0 :(得分:1)

平台核心表达式提供了两种方法来为评估提供信息。第一个是贡献ISourceProviders,然后可以在 with 元素中使用。ISourceProvidersorg.eclipse.ui.services.IEvaluationService.requestEvaluation(String)是事件驱动的,在系统更改时更新系统。

另一种方法是使用属性测试人员。它们的重量要轻得多,提供了一种测试属性的方法,它提供变量是没有意义的。但正如您所发现的那样,它们不是事件驱动的,也不会强制更新系统。但是您可以使用API​​来请求重新评估,IEvaluationService srv = (IEvaluationService) workbench.getService(IEvaluationService.class); srv.requestEvaluation("org.eclipse.core.resources.persistentProperty");

{{1}}