2017-01-03 136 views
-1

我在Plugin1中有两个菜单,而在Plugin2中有两个菜单。如何在Eclipse中隐藏上下文菜单?

对于产品1 - >包括Plugin1
对于产品2 - >既包括Plugin1和Plugin2

产品1的罚款。 但是在Product2中,我想隐藏Plugin1的上下文菜单并从Plugin2获取菜单。

目前来自Plugin1和Plugin2的上下文菜单都在Product2中。 Plugin1和Plugin2都对Product2有贡献。请找到下面附加的图像。

因为这是设计问题。截至目前,我想从Plugin1隐藏菜单,因为依赖问题。

有没有什么办法可以隐藏?

Click here for Snapshot

请帮助我。

+0

您能否提供有关该问题的更多详细信息?请尽可能提供一些屏幕截图。 –

+0

你好,我已经更新了我的描述并附上了一个快照。谢谢 – Sunil

回答

0

不确定您是否可以访问产品中的ApplicationWorkbenchWindowAdvisor类的实现2.如果您有访问权限,可以在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 
}