2012-10-27 38 views
0

我已經創建了我的插件蝕menucontribution rightclicking具有特定性質的項目,只有當它應該顯示:rightclicking時visibleWhen menuContribution顯示了錯誤

<menuContribution 
     allPopups="false" 
     locationURI="popup:org.eclipse.ui.popup.any?after=additions"> 
    <menu 
      icon="ico/full/obj16/icon-logo-composer.png" 
      id="com.dubture.composer.lib.ui.menu" 
      label="Composer"> 
     <visibleWhen 
       checkEnabled="false"> 
      <iterate> 
       <adapt 
        type="org.eclipse.core.resources.IProject"> 
       <and> 
        <test 
          property="org.eclipse.core.resources.projectNature" 
          value="com.dubture.composer.core.composerNature"> 
        </test> 
       </and> 
       </adapt> 
      </iterate> 
     </visibleWhen> 
    </menu> 
    </menuContribution> 

的visibleWhen條件似乎只是工作一個專案。菜單僅在項目具有指定性質時才顯示。

然而,當我用鼠標右鍵單擊其他地方(在項目資源管理器或裏面的問題在一些空白區域,例如查看),該菜單項就會顯示出來,儘管adapt條件。

任何人都知道如何限制它右鍵點擊項目?

回答

0

test屬性由PropertyTester

,如果你把你的menucontribution到popup:org.eclipse.ui.popup.any?after=additions,我相信它會顯示無處不在,你應該限制popup:org.eclipse.ui.navigator.ProjectExplorer#PopupMenu除非另有要求

這個片段中使用命令,但我想你可以嘗試混合你的要求,看看它是否工作

<menuContribution locationURI="popup:org.eclipse.ui.navigator.ProjectExplorer#PopupMenu"> 
<command 
     commandId="COMMANDID" 
     icon="icons/icon.png" 
     label="LABEL" 
     style="push"> 
    <visibleWhen 
      checkEnabled="false"> 
     <iterate 
      ifEmpty="false" 
      operator="and"> 
      <instanceof 
       value="org.eclipse.core.resources.IProject"> 
      </instanceof> 
     </iterate> 
    </visibleWhen> 
</command> 
</menuContribution> 
+0

不幸的是,這是行不通的。當我將locationURI更改爲'popup:org.eclipse.ui.navigator.ProjectExplorer#PopupMenu'時,菜單條目完全不顯示。我嘗試了各種各樣的變體,例如'popup:org.eclipse.ui.navigator.ProjectExplorer?after = additions',但它不會顯示出來。 我想添加菜單項到PHP瀏覽器,也許'彈出:org.eclipse.ui.navigator.ProjectExplorer'不適用於PHP瀏覽器? – pulse00

+0

請嘗試使用特定的PHP瀏覽器locationURI(如果它不同於我提到的彈出窗口:org.eclipse.ui.navigator.ProjectExplorer#PopupMenu) –