当选定Eclipse项目或选定项目中的任何文件/文件夹时可见

当选定Eclipse项目或选定项目中的任何文件/文件夹时可见,eclipse,eclipse-plugin,eclipse-rcp,Eclipse,Eclipse Plugin,Eclipse Rcp,我想在用户选择具有project nature customnature的特定项目时显示特定的菜单贡献。用户可以使用project nature customnature选择项目中的任何文件或文件夹,并将显示菜单 目前,我有以下菜单贡献的visibleWhen: 此配置在仅选择项目文件夹时成功显示菜单 请给我一些实现这一目标的指针 只需测试是否适应IResource,而不是IProject: 我使用property tester实现了它,类如下: public class ProjectNa

我想在用户选择具有project nature customnature的特定项目时显示特定的菜单贡献。用户可以使用project nature customnature选择项目中的任何文件或文件夹,并将显示菜单

目前,我有以下菜单贡献的visibleWhen:


此配置在仅选择项目文件夹时成功显示菜单


请给我一些实现这一目标的指针

只需测试是否适应
IResource
,而不是
IProject


我使用property tester实现了它,类如下:

public class ProjectNaturePropertyTester extends PropertyTester {

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

    IResource rsc=(IResource)receiver;
    try {
        IProject project = rsc.getProject();
        if(project.hasNature(CustomNature.NATURE_ID))
           return true;

    } catch (CoreException e) {
        throw new RuntimeException("Problem getting nature from IResource" + e.getMessage() , e);
    }

    return false;
}

}
和plugin.xml

<extension
    point="org.eclipse.core.expressions.propertyTesters">
 <propertyTester
       class="org.example.ui.propertytester.ProjectNaturePropertyTester"
       id="ProjectNaturePropertyTester"
       namespace="org.example.ui.propertytester"
       properties="checkProjectNature"
       type="org.eclipse.core.resources.IResource">
 </propertyTester>

以及使用它

<visibleWhen
             checkEnabled="false">
          <with
                variable="activeMenuSelection">
                <iterate>
                 <adapt
                         type="org.eclipse.core.resources.IResource">
                      <test
                            property="org.example.ui.propertytester.checkProjectNature">
                      </test>
                   </adapt>
             </iterate>
                <count
                      value="1">
                </count>
          </with>
       </visibleWhen>


结果是,在项目中选择文件/文件夹时,菜单项将显示。

Hmm,我昨天尝试了这个,但它对我不起作用。。在我的例子中,当通过更新maven project将项目添加为Java项目性质时,这将使菜单贡献消失。知道为什么吗?不知道。这段代码来自一个Ant插件,它在其中工作。