我编写了一个插件,它是一些java类的简单验证器。 (附加逻辑验证)
我使用自定义性质来省略向任何项目手动添加构建器。
当我有一个项目“Project”或“Maven”类型的文件夹时 - 可以看到添加/删除[MyNature]按钮。但是对于Java-Projects,ui贡献不可用......
(我需要将它添加到Maven-Projects,它也具有自然的Java-Project ......)
菜单分配定义如下:
<extension
point="org.eclipse.ui.menus">
<menuContribution
locationURI="popup:org.eclipse.ui.projectConfigure?after=additions">
<command
commandId="my.namespace.lazyloadingvalidatorplugin.addRemoveLazyLoadingNature"
label="Remove Lazy Loading Nature"
style="push">
<visibleWhen
checkEnabled="false">
<with
variable="selection">
<count
value="1">
</count>
<iterate>
<and>
<instanceof
value="org.eclipse.core.resources.IProject">
</instanceof>
<test
value="my.namespace.lazyloadingvalidatorplugin.lazyLoadingNature"
property="org.eclipse.core.resources.projectNature">
</test>
</and>
</iterate>
</with>
</visibleWhen>
</command>
<command
commandId="my.namespace.lazyloadingvalidatorplugin.addRemoveLazyLoadingNature"
label="Add Lazy Loading Nature"
style="push">
<visibleWhen
checkEnabled="false">
<with
variable="selection">
<count
value="1">
</count>
<iterate>
<and>
<instanceof
value="org.eclipse.core.resources.IProject">
</instanceof>
<not>
<test
value="my.namespace.lazyloadingvalidatorplugin.lazyLoadingNature"
property="org.eclipse.core.resources.projectNature">
</test>
</not>
</and>
</iterate>
</with>
</visibleWhen>
</command>
</menuContribution>
</extension>
我还尝试使用以下条目将性质添加到pom文件中:
<additionalProjectnatures>
<projectnature>
lazyLoadingNature
</projectnature>
</additionalProjectnatures>
<buildcommands>
<buildcommand>
my.namespace.lazyloadingvalidatorplugin.lazyLoadingBuilder
</buildcommand>
</buildcommands>
没有成功......任何想法有什么不对?
想通了,检查了
<instanceof
value="org.eclipse.core.resources.IProject">
</instanceof>
失败...删除此条件导致同时显示Jave-Nature-Projects的“添加”和“删除”按钮......好吧,可以忍受 - 问题只是为什么和如何做正确的事:):
答案 0 :(得分:0)
使用
<adapt
type="org.eclipse.core.resources.IProject">
</adapt>
而不是instanceof
。视图中显示的对象通常不是“项目”,“文件......”的实际实例,但可以进行“适应”修改。对那些对象。