Eclipse RCP动态菜单分配使用CoreExpression隐藏和取消隐藏

Eclipse RCP动态菜单分配使用CoreExpression隐藏和取消隐藏,eclipse,eclipse-plugin,eclipse-rcp,rcp,Eclipse,Eclipse Plugin,Eclipse Rcp,Rcp,我目前正在尝试在Eclipse RCP应用程序中为MenuContribution添加一个visibleWhen条件。我们的应用程序有不同的版本,我们通过IClientConfiguration界面/服务将它们区分开来,该界面/服务或多或少作为功能切换 根据witchapp-$version的不同,产品被称为配置的不同实现将成为应用的一部分 然而。。进入当前情况:我们有一个菜单,它是在一个公共片段.e4xmi中定义的,我想根据配置隐藏一个菜单。为此,我添加了切换isAdminManual()。我

我目前正在尝试在Eclipse RCP应用程序中为MenuContribution添加一个
visibleWhen
条件。我们的应用程序有不同的版本,我们通过
IClientConfiguration
界面/服务将它们区分开来,该界面/服务或多或少作为功能切换

根据witch
app-$version的不同,产品
被称为配置的不同实现将成为应用的一部分

然而。。进入当前情况:我们有一个菜单,它是在一个公共
片段.e4xmi
中定义的,我想根据配置隐藏一个菜单。为此,我添加了切换
isAdminManual()
。我希望我能创建一个CoreExpression并(以某种方式)使用该服务的返回值。但不幸的是,我现在还不能让它工作

我尝试了以下几点: fragment.e4xmi:


plugin.xml


Startapp.java

@PostConstruct
公共void init(IEclipseContext上下文){
context.set(com.example.client.configuration.adminimenuactive,
configuration.isAdminManual().toString());
}

当前的行为是,无论加载哪种配置,都不会显示菜单。我尝试过是否将变量添加到
IEclipseContext
中,这在应用程序的启动阶段很早就发生了。目前我不知道出了什么问题。

您可以使用“命令式表达式”,而不是在fragment.e4xmi中使用核心表达式。您可以通过在片段编辑器中更改“Visible When Expression”来实现这一点

命令式表达式指定一个Java类,该类被直接调用,从而更容易访问代码。调用标记为
@Evaluate
的方法来计算表达式。可能是这样的:

@Evaluate
公共布尔求值(@Named(“com.example.client.configuration.adminMenuActive”)字符串处于活动状态)
{
返回布尔值.valueOf(活动);
}
使用它可以更容易地看到正在发生的事情