我正在使用menuContribution
+command
以及.<visibleWhen>
plugin.xml
假设XYZ
我的项目结构中有一个特定文件夹“”,其中包含子文件夹“ xyz1
”“ xyz2
”。
我希望我的弹出菜单条目仅在右键单击时可见XYZ
,xyz1
并且xyz2
仅在文件夹中可见。
任何做同样事情的投入都会非常有帮助。
谢谢,阿巴斯
我正在使用menuContribution
+command
以及.<visibleWhen>
plugin.xml
假设XYZ
我的项目结构中有一个特定文件夹“”,其中包含子文件夹“ xyz1
”“ xyz2
”。
我希望我的弹出菜单条目仅在右键单击时可见XYZ
,xyz1
并且xyz2
仅在文件夹中可见。
任何做同样事情的投入都会非常有帮助。
谢谢,阿巴斯
<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;
}
}
您应该能够定义自己的 PropertyTester,或者使用预定义的,例如ResourcePropertyTester
,它将资源的路径作为参数。