Eclipse插件开发新手。我们正在开发一个自定义插件,在MyEclipse 10上有一个构建器,我相信它是Eclipse Indigo。
无论如何,我使用了Builder向导生成的示例代码,对其进行了修改,并使其正常工作。现在,我试图将“Toggle Nature”行动更多地视为“添加自然”或“移除自然”,具体取决于是否存在性质。
我在plugin.xml中有以下内容(我更改了一些名称以保护无辜者):
<extension
point="org.eclipse.ui.popupMenus">
<objectContribution
adaptable="true"
id="Sample_Eclipse_Plugin.contribution1"
nameFilter="*"
objectClass="org.eclipse.core.resources.IProject">
<menu
label="Sample"
id="mainSampleMenu"
menubarPath="additions">
<separator
name="group1">
</separator>
</menu>
<action
class="com.sample.eclipse.builder.AddSampleNatureAction"
enablesFor="+"
id="Sample_Eclipse_Plugin.addNatureAction"
label="Add Sample Project Nature"
menubarPath="mainSampleMenu/group1">
<enabledWhen>
<with variable="selection">
<iterate ifEmpty="false" operator="or">
<with variable="projectNature">
<not>
<equals value="Sample_Eclipse_Plugin.sampleNature"/>
</not>
</with>
</iterate>
</with>
</enabledWhen>
</action>
<action
class="com.sample.eclipse.builder.RemoveSampleNatureAction"
enablesFor="+"
id="Sample_Eclipse_Plugin.removeNatureAction"
label="Remove Sample Project Nature"
menubarPath="mainSampleMenu/group1">
<enabledWhen>
<with variable="selection">
<iterate ifEmpty="false" operator="or">
<with variable="projectNature">
<equals value="Sample_Eclipse_Plugin.sampleNature"/>
</with>
</iterate>
</with>
</enabledWhen>
</action>
</objectContribution>
</extension>
弹出菜单显示完美,但我仍然可以同时获得“添加”和“删除”选项。所有这一切都基于Eclipse生成的示例代码,并且我将通过Google搜索在线找到的内容拼凑在一起。我确信由于缺乏知识,我正在做一些非常愚蠢的事情,但任何指导都会受到高度赞赏。
答案 0 :(得分:2)
添加示例项目性质
<enabledWhen>
<with variable="selection">
<iterate ifEmpty="true" operator="and">
<adapt type="org.eclipse.core.resources.IResource">
<not>
<test
property="org.eclipse.core.resources.projectNature"
value="Sample_Eclipse_Plugin.sampleNature" />
</not>
</adapt>
</iterate>
</with>
</enableWhen>
它测试所有(operator="and"
)性质不是sampleNature。
如果所选项目没有性质,则可以添加sampleNature(ifEmpty="true"
)。
删除示例项目性质
<enabledWhen>
<with variable="selection">
<iterate ifEmpty="false" operator="or">
<adapt type="org.eclipse.core.resources.IResource">
<test
property="org.eclipse.core.resources.projectNature"
value="Sample_Eclipse_Plugin.sampleNature" />
</adapt>
</iterate>
</with>
</enableWhen>
它测试(operator="or"
)性质之一是sampleNature。
如果所选项目没有性质,则sampleNature不能(ifEmpty="false"
)被删除。
我在Eclipse 4.3.1(Kepler)中测试过类似的代码。