最终,我想将自己的自定义自然添加到(特别是)Android项目中。为此,我想添加到android项目的配置菜单:添加Shush Nature和Remove Shush Nature。但是,我似乎无法对Android或Java项目执行此操作。
我认为android项目(根据他们的.project)具有性质:com.android.ide.eclipse.adt.AndroidNature
。
因此我创建了两个定义:
<extension
point="org.eclipse.core.expressions.definitions">
<definition
id="test.androidProjectNature">
<with variable="selection">
<iterate operator="or" ifEmpty="false">
<test
property="org.eclipse.core.resources.projectNature"
value="com.android.ide.eclipse.adt.AndroidNature">
</test>
</iterate>
</with>
</definition>
<definition
id="test.shushProject">
<with variable="selection">
<iterate operator="or" ifEmpty="false">
<test
property="org.eclipse.core.resources.projectNature"
value="mobi.shush.plugin.nature">
</test>
</iterate>
</with>
</definition>
据推测,定义test.androidProjectNature
将测试项目是否为Android项目,test.shushProject
将测试项目是否具有我的自定义性质。
我的问题是我无法做出以下命令:
<extension
point="org.eclipse.ui.menus">
<menuContribution
locationURI="popup:org.eclipse.ui.projectConfigure?after=additions">
<command
commandId="Shush-Plugin.addRemoveShushNature"
label="Disable Shush Nature"
style="push">
<visibleWhen>
<reference
definitionId="test.shushProject">
</reference>
</visibleWhen>
</command>
<command
commandId="Shush-Plugin.addRemoveShushNature"
label="Enable Shush Nature"
style="push">
<visibleWhen>
<reference
definitionId="test.androidProjectNature">
</reference>
</visibleWhen>
</command>
</menuContribution>
启用Shush Nature会出现在使用 New&gt;创建的项目上项目(不是java项目)。在我看来,这个问题与android没有直接关系,因为即使我在org.eclipse.jdt.core.javanature
添加一个检查,这也不会出现在java项目中。另一方面,构建器和自然的默认扩展示例似乎将两个菜单添加到由 New&gt;创建的项目中(再次)。项目。
答案 0 :(得分:0)
好吧,这似乎是一个演员问题左右。
整个想法是使用<adapt>
来检查IProject实例。
<extension
point="org.eclipse.core.expressions.definitions">
<definition
id="test.androidProjectNature">
<with variable="selection">
<iterate operator="or" ifEmpty="false">
<adapt type="org.eclipse.core.resources.IProject">
<test
property="org.eclipse.core.resources.projectNature"
value="com.android.ide.eclipse.adt.AndroidNature">
</test>
</adapt>
</iterate>
</with>
</definition>
<definition
id="test.shushProject">
<with variable="selection">
<iterate operator="or" ifEmpty="false">
<adapt type="org.eclipse.core.resources.IProject">
<test
property="org.eclipse.core.resources.projectNature"
value="com.shush.plugin.nature">
</test>
</adapt>
</iterate>
</with>
</definition>