2014-01-14 78 views
1

最終,我想將自己的自定義自然添加到(特別是)Android項目。爲此,我想添加到android項目的配置菜單中:添加Shush Nature和Remove Shush Nature。但是,我似乎無法對Android或Java項目執行此操作。將自定義屬性添加到現有Android項目

我認爲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> 

啓用噓自然是出現在使用新建>項目創建的項目(不是Java項目) 。在我看來,這個問題與android沒有直接關係,因爲事實上,即使我在org.eclipse.jdt.core.javanature上添加了一個支票,它也不會出現在java項目中。在另一個說明中,構建器和自然的默認擴展示例似乎將兩個菜單添加到僅由新建>項目創建的項目(再次)。

+0

非常有趣! – amd

+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> 

相關問題