Eclipse plugin 菜单可见性

Eclipse plugin 菜单可见性,eclipse-plugin,eclipse-rcp,Eclipse Plugin,Eclipse Rcp,我使用property tester创建了具有可见性表达式的菜单,如下所示: <menu label="Recent projects"> <visibleWhen checkEnabled="false"> <test property="VisibilityTester">

我使用property tester创建了具有可见性表达式的菜单,如下所示:

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

这是工作。但是property tester类中的方法“test()”并不是每次都在必要时调用。因此,有时此菜单在不可见时可见,反之亦然


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

平台核心表达式提供了两种方法来为评估提供信息。第一个是贡献
ISourceProviders
,然后可以在with元素中使用<代码>ISourceProviders是事件驱动的,在系统发生更改时更新系统

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


平台核心表达式提供了两种方法来为评估提供信息。第一个是贡献
ISourceProviders
,然后可以在with元素中使用<代码>ISourceProviders是事件驱动的,在系统发生更改时更新系统

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


非常感谢你!哪种方法更可取?源提供程序对于应用程序的当前状态很有用。i、 e.活动窗口、部件和编辑器,或当前登录的用户。属性测试人员擅长于源变量或选择(如资源的持久属性)、编辑器输入或应用程序状态的属性,这些属性不容易表示为一组简单的变量。非常感谢!哪种方法更可取?源提供程序对于应用程序的当前状态很有用。i、 e.活动窗口、部件和编辑器,或当前登录的用户。属性测试人员擅长于源变量或选择的属性(如资源的持久属性)、编辑器输入或应用程序状态的属性,这些属性不容易表示为一组简单的变量。
IEvaluationService srv = (IEvaluationService) workbench.getService(IEvaluationService.class);
srv.requestEvaluation("org.eclipse.core.resources.persistentProperty");