2012-09-27 28 views
10

我想從Eclipse包資源管理器的上下文菜單中添加一個子菜單項。如何使用org.eclipse.ui.menus將子菜單項添加到Eclipse Package Explorer上下文菜單項中?

菜單條目已經通過另一個插件中的org.eclipse.ui.popupMenus定義,而不是我正在使用的那個。 (該插件被添加到我的插件的依賴項列表中)。在子菜單中還添加了一些項目,但也使用org.eclipse.ui.popupMenus,我正在嘗試通過org.eclipse.ui.menus來完成此操作。

首先,我做了以下內容:

  • 我加入org.eclipse.ui.commands和org.eclipse.ui.menus擴展。
  • 我定義的命令,分別menuContribution這樣的:

enter image description here

這增加了在任何上下文菜單中的項目......所以我不得不更換「org.eclipse.ui.popup .any?after = additions「from locationURI with submenu id我想要我的物品出現在。

我的問題是:如何確定一個正確的locationURI? 我使用的菜單間諜(ALT + SHIFT + F2)和檢查欲向子菜單,我收到以下URI:

菜單:YYY後= ZZZ,其中:

YYY是已經定義的菜單的ID,我想要添加子菜單項 ZZZ是子菜單中的動作的ID,我點擊了(使用間諜)

我嘗試了以下操作,但子菜單項不會出現:

  • 菜單:YYY
  • 彈出[=後添加?] [?=後添加] YYY

請幫助:)

+0

你試過彈出:YYYY?after = ZZZ? – mhussein

+0

是的,我也試過,並沒有幫助。但我已經設法使其工作。我必須定義一個新的菜單貢獻和一個與已定義的菜單具有相同ID和標籤的菜單 - YYY&YYY的標籤,如下所示: <菜單 ID =」 YYY」 標籤= 「YYYs_label」> 這樣,並用替換locationURI: 「彈出:?YYY =之後添加」現在它工作。我不知道這是否是正確的做法,但它是有效的。 – catalina

+0

...並且非常感謝您的關注和幫助我:) – catalina

回答

10

我設法讓它通過定義一個新的菜單貢獻工作,與已經定義的菜單具有相同標識和標籤的菜單。最終的解決方案如下所示:

<extension point="org.eclipse.ui.menus"> 
    <menuContribution 
     locationURI="popup:org.eclipse.ui.navigator.ProjectExplorer#PopupMenu?after=additions"> 
    <menu 
      id="YYY" 
      label="%YYYs_label"> 
    </menu> 
    </menuContribution> 
    <menuContribution 
     locationURI="popup:YYY?after=additions"> 
    <command 
      commandId="example.MyCommandHandlerID" 
      icon="icons/somePhoto.gif" 
      label="MyLabel" 
      style="push"> 
    </command> 
    </menuContribution> 
</extension> 
+2

這是唯一的解決方法。在org.eclipse.ui.actionSets或org.eclipse.ui.popupMenus之類的任何傳統動作擴展之前應用'org.eclipse.ui.menus'貢獻。 –

+0

** Package ** Explorer的上下文菜單的URI是'popup:org.eclipse.jdt.ui.PackageExplorer?after = additions' –

相關問題