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