我可以使用
检查我想要的项目类型<instanceof value="org.eclipse.core.resources.IProject"/>
<test property="org.eclipse.core.resources.projectNature"
value="org.eclipse.wst.jsdt.core.jsNature"/>
在我的弹出菜单命令中,然后相应地显示我的菜单项。但是,有一些复杂的条件需要检查,因此我被要求使用Property Tester。下面是plugin.xml提取:
<with variable="selection">
<test forcePluginActivation="true"
property="testWizard.propertyTester.checkFolder"/>
<extension
point="org.eclipse.core.expressions.propertyTesters">
<propertyTester
class="testwizard.wizards.MyPropTester"
id="MyPropTester"
namespace="testWizard.propertyTester"
properties="checkFolder"
type="org.eclipse.core.resources.IProject">
</propertyTester>
</extension>
...和PropertyTester java代码:
package testwizard.wizards;
import org.eclipse.core.internal.propertytester.ResourcePropertyTester;
import org.eclipse.core.resources.IResource;
@SuppressWarnings("restriction")
public class MyPropTester extends ResourcePropertyTester {
@Override
public boolean test(Object receiver, String property, Object[] args,
Object expectedValue) {
IResource res = (IResource) receiver;
if(res instanceof IProject)
{
return true;
}
return false;
}
}
我很擅长使用房产测试人员,我真的很感激如果有人可以指导我,我的错误在哪里。
答案 0 :(得分:2)
找到解决方案:您需要定义之前给定的属性测试器并使用
<test property="org.eclipse.core.resources.projectNature" value="org.eclipse.wst.jsdt.core.jsNature"/>
,
这里的值作为Property Tester类的测试方法中的期望值,然后使用
IProject project=(IProject)receiver;
if(project.hasNature(expectedValue.toString())) return true;