Eclipse,插件,Java项目,自定义性质

时间:2014-09-16 20:50:35

标签: eclipse eclipse-plugin project

我编写了一个插件,它是一些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的“添加”和“删除”按钮......好吧,可以忍受 - 问题只是为什么如何做正确的事:):

1 个答案:

答案 0 :(得分:0)

使用

<adapt
   type="org.eclipse.core.resources.IProject">
</adapt>

而不是instanceof。视图中显示的对象通常不是“项目”,“文件......”的实际实例,但可以进行“适应”修改。对那些对象。