1

我正在使用menuContribution+command以及.<visibleWhen>plugin.xml

假设XYZ我的项目结构中有一个特定文件夹“”,其中包含子文件夹“ xyz1”“ xyz2”。
我希望我的弹出菜单条目仅在右键单击时可见XYZxyz1并且xyz2仅在文件夹中可见。

任何做同样事情的投入都会非常有帮助。

谢谢,阿巴斯

4

2 回答 2

2
<test   forcePluginActivation="true"
        property="testWizard.propertyTester.checkFolder"
         value="org.eclipse.wst.jsdt.core.jsNature"
 </test>  is the reference to the property tester , which can be defined as

<extension
        point="org.eclipse.core.expressions.propertyTesters">
     <propertyTester          
        class="testwizard.wizards.MyPropTester"
           id="MyPropTesterFolder"
           namespace="testWizard.propertyTester"
           properties="checkFolder"
           type="org.eclipse.core.resources.IFolder">
     </propertyTester>

然后可以测试文件夹的类型及其子文件夹,如下所示

package testwizard.wizards;

import org.eclipse.core.expressions.PropertyTester;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.runtime.CoreException;

public class MyPropTester extends PropertyTester{

    @Override
    public boolean test(Object receiver, String property, Object[] args,
            Object expectedValue) {

        IFolder folder=(IFolder)receiver;
        String folderPath=folder.getProjectRelativePath().toString();
        String arr[]=folderPath.split("/");     
        try {
            if(folder.getProject().hasNature(expectedValue.toString()))
            {
                if(arr[0].equals("XYZ"))
                {
                    return true;
                }
            }
        } catch (CoreException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return false;
    }

}
于 2011-08-14T18:12:07.977 回答
2

您应该能够定义自己的 PropertyTester,或者使用预定义的,例如ResourcePropertyTester,它将资源的路径作为参数。

于 2011-08-13T18:37:33.137 回答