2011-06-09 54 views
2

我有一些問題,試圖從我的上下文菜單中刪除一些插件貢獻添加插入點。在大多數情況下,我使用活動,這是有效的,因爲大部分的貢獻都是通過行動完成的。但在其他一些情況下,這些貢獻是彈出菜單的貢獻,我無法成功禁用這些條目。一個例子是Source-> Format菜單。的貢獻是通過插件org.eclipse.wst.sse.ui以下方式進行:刪除從另一個插件貢獻的彈出菜單

<menuContribution 
     locationURI="popup:org.eclipse.ui.popup.any?after=additions"> 
    <menu 
      id="sourceMenuId" 
      label="%Source"> 
     <command 
       commandId="org.eclipse.wst.sse.ui.format" 
       id="sourceFormat" 
       style="push"> 
      <!-- Check to make sure that the handler is enabled before making visible --> 
      <visibleWhen checkEnabled="true" /> 
     </command> 
    </menu> 
</menuContribution> 

我一直在嘗試與模式org.eclipse.wst.sse.ui/sourceFormat與org.eclipse。 wst.sse.ui /.*。他們都在Eclipe HELIOS中工作,但他們不在RAD(Rational Application Developer 8.0.2)中工作。 有沒有其他的方法可以禁用這個彈出菜單的貢獻?這個問題可以與Eclipse版本相關嗎?

回答

0

我遇到了類似的問題(例如:我的視圖中出現的與Eclipse相關的右鍵單擊菜單條目),我可以使用下面的代碼修復它。

解決方案是聲明getSite().setSelectionProvider(viewer);,這是從我的應用程序中丟失。這導致非視圖相關的選擇條目進入並激活菜單條目。希望它能幫助有人在同一個問題上掙扎。

private void hookContextMenu() { 
    MenuManager menuMgr = new MenuManager("#PopupMenu"); //$NON-NLS-1$ 
    .... 

    Menu menu = menuMgr.createContextMenu(viewer.getControl()); 
    viewer.getControl().setMenu(menu); 
    getSite().registerContextMenu(menuMgr, viewer); 

    getSite().setSelectionProvider(viewer); 
}