2013-02-05 47 views
1

Eclipse插件開發新手。我們正在開發一個自定義插件,在MyEclipse 10中有一個構建器,我相信它是Eclipse Indigo。隱藏項目自然時的操作

無論如何,我使用Builder嚮導生成的示例代碼,對其進行了修改,並使其工作。現在我試圖讓「切換自然」行爲更多地是「添加自然」或「移除自然」,取決於自然是否存在。

我已在在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搜索在線搜索到的內容拼湊在一起。由於缺乏知識,我確信我正在做一些非常愚蠢的事情,但任何指導都將受到高度讚賞。

回答

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(開普勒)中測試了一個類似的代碼。

+0

它只用了9個月,但遲到比從未更好:) – CodeChimp