我正在构建一个eclipse插件,我有一个树形表示,我在其中显示了A类元素的结构(见下文)。
Class A{
List<B> children;
}
Abstract Class B{
...
}
Class C extend B{
...
}
Class D extend B{
...
}
我有一个命令只有当三个中的选定元素是A的实例时才能启动。 这是我正在使用的表达方式。
<extension point="org.eclipse.core.expressions.definitions">
<definition id="SelectionOfA">
<with variable="selection">
<and>
<count value="1"></count>
<iterate ifEmpty="false" operator="or">
<instanceof value="A"></instanceof>
</iterate>
</and>
</with>
</definition>
</extension>
现在我想改善这个条件。我想仅在选择A的实例并且列表子包含至少一个C的实例的元素时才启用该命令。
我尝试保留这个表达式并定义一个新表达式。然后,只有当两个表达式都为真时,我才会启用该命令。我从上面报告的表达式开始,我尝试将标记instanceof
替换为标记with
,iterate
和adapt
而没有取得好成绩。
我该怎么做?
答案 0 :(得分:3)
我会实现一个属性测试器来检查是否满足条件。
这样的事情应该做的工作:
public class YourConditionTester extends PropertyTester {
public boolean test(final Object receiver, final String property, final Object[] args, final Object expectedValue) {
if (property.equals("isA_and_hasC")) {
return (true if your condition is met, otherwise false)
}
return false;
}
}
然后,代替instanceof
使用test
property
设置(例如)到“isA_and_hasC”。
查看here以获取有关属性测试人员的更多信息。