PropertyTester:如何在右键单击确定项目类型?

时间:2011-08-14 09:56:45

标签: eclipse-plugin popup

我可以使用

检查我想要的项目类型
<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;
    }

}

我很擅长使用房产测试人员,我真的很感激如果有人可以指导我,我的错误在哪里。

1 个答案:

答案 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;