2017-01-03 9 views
-1

Plugin1には2つのメニューがあり、Plugin2には2つのメニューがあります。製品1の場合Eclipseのコンテキストメニューを非表示にするには?

- > Product2についてPlugin1
を付属 - >

Plugin1とplugin2で

の両方を含ま製品1は大丈夫です。 しかしProduct2では、Plugin1からコンテキストメニューを隠し、Plugin2からメニューを取得したかったのです。

現在、Plugin1とPlugin2の両方のコンテキストメニューがProduct2に入っています。 Plugin1とPlugin2の両方がProduct2に寄与しています。以下の添付イメージをご覧ください。

デザイン上の問題ですので、現時点では、依存関係の問題のためにPlugin1からメニューを非表示にしたいと考えていました。

隠す方法はありますか?

Click here for Snapshot

私を助けてください。

+0

問題の詳細を教えてください。可能であれば、いくつかのスクリーンショットを提供してください。 –

+0

こんにちは、私は自分の説明を更新し、スナップを添付しました。ありがとうございました – Sunil

答えて

0

製品2のApplicationWorkbenchWindowAdvisorクラスの実装にアクセスできるかどうかわかりません。アクセス権がある場合は、postWindowOpenメソッドでmenuitemコントロールを追加できます。

@Override 
    public void postWindowOpen() 
    { 
     IMenuManager menuManager = getWindowConfigurer().getActionBarConfigurer().getMenuManager(); 

     for (IContributionItem item : menuManager.getItems()) 
     { 
      if (item instanceof MenuManager) 
      { 
       MenuManager mm = (MenuManager) item; 
       if (mm.getId().equals("file")) // change to your menuName in product 1 
       { 
        mm.remove("org.eclipse.ui.openLocalFile"); // change to your menu item id in product1 
       } 
      } 
     } 
    } 
0

コンテキストメニューの提供にCNFを使用している場合は、この問題を解決するのに役立ちます。

<extension point="org.eclipse.ui.navigator.navigatorContent"> 
    <actionProvider 
     class=".....ActionProvider" 
     id="new_menu1" 
     overrides="menu1"> 
     <enablement> 
      <instanceof value="......" /> 
     </enablement> 
    </actionProvider> 
</extension> 

public class ActionProvider extends CommonActionProvider { 
// empty class 
} 
関連する問題