我使用属性测试器创建了具有可见性表达式的菜单,如下所示:
<menu
label="Recent projects">
<visibleWhen
checkEnabled="false">
<test
property="VisibilityTester">
</test>
</visibleWhen>
</menu>
它是有效的。但是属性测试器类中的方法“test()”,平台在每次必要时都不会调用。结果,有时这个菜单在看不到它时是可见的,相反。
如果需要刷新此类菜单的状态,如何强制平台以编程方式调用这些方法?
答案 0 :(得分:1)
平台核心表达式提供了两种方法来为评估提供信息。第一个是贡献ISourceProviders
,然后可以在 with 元素中使用。ISourceProviders
。 org.eclipse.ui.services.IEvaluationService.requestEvaluation(String)
是事件驱动的,在系统更改时更新系统。
另一种方法是使用属性测试人员。它们的重量要轻得多,提供了一种测试属性的方法,它提供变量是没有意义的。但正如您所发现的那样,它们不是事件驱动的,也不会强制更新系统。但是您可以使用API来请求重新评估,IEvaluationService srv = (IEvaluationService) workbench.getService(IEvaluationService.class);
srv.requestEvaluation("org.eclipse.core.resources.persistentProperty");
。
{{1}}