Eclipse RCP:在透视切换器中有条件地启用/禁用透视



打开透视图显示了用户可以切换到的透视图列表。我的自定义视角也在那里。如果某个条件b不满足,我可以不列出或者用灰色显示吗?

我想到的第二个最好的选择是将其列出,但实际的切换不执行,如果b == false

对我来说最好的方法是使用扩展点org.eclipse.ui.activities,正如greg-449建议的那样,并添加一个propertyTester。为了隐藏与透视图相关的UI元素,而不是来自同一插件的每个UI元素,可以使用isEqualityPattern="true"

<extension point="org.eclipse.ui.activities">
<activity
description="Remove some UI Elements"
id="com.my.plugin.ui.hideUI"
name="HideUI">
<enabledWhen>
<test
forcePluginActivation="false"
property="com.my.plugin.ui.PlanningPropertyTester">
</test>
</enabledWhen>
</activity>
<activityPatternBinding
activityId="com.btc.edm.hidePlanning"
isEqualityPattern="true"
pattern="com.my.plugin.ui/id.of.the.perspective.to.hide">
</activityPatternBinding>
</extension>
<extension
point="org.eclipse.core.expressions.propertyTesters">
<propertyTester
class="com.my.plugin.ui.MyPropertyTester"
id="com.my.plugin.ui.propertyTester"
namespace="com.my.plugin.ui"
properties="MyPropertyTester"
type="java.lang.Object">
</propertyTester>
</extension>

有一个完全限定的类型名是很重要的。

MyPropertyTester类扩展org.eclipse.core.expressions.PropertyTester并覆盖test方法。

public class MyPropertyTester extends PropertyTester {
@Override
public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
if (goodWeather()) {
return true;
return false;
}
}

最新更新