过滤项目资源管理器上下文菜单

时间:2015-04-14 05:56:46

标签: eclipse eclipse-plugin eclipse-rcp

我在eclipse项目资源管理器中有不同类型的项目,比如普通的Java项目和自定义项目。我有自定义项目的菜单贡献。在右键单击自定义项目时,我只想显示项目相关菜单,现在它显示所有菜单选项。我尝试通过附加IMenuListener删除菜单,但我不认为它是正确的方法。使用活动似乎是好的,但我没有得到如何使用它来过滤上下文基础上的菜单: 这是我如何删除不需要的菜单,我已将此监听器附加到IMenumanager。但是在第一次右键单击时,所有菜单都会出现

  private final class MenuListener implements IMenuListener2
  {
    @Override
    public void menuAboutToShow(IMenuManager manager)
    {
      ISelection selection = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService().getSelection(IPageLayout.ID_PROJECT_EXPLORER);
      if (selection != null && !selection.isEmpty())
      {
        if (selection instanceof IStructuredSelection)
        {
          Object obj = ((IStructuredSelection) selection).getFirstElement();

          if (applContainerPorjectNatureChecker.apply(obj))
          {
            IContributionItem[] items = manager.getItems();
            for (IContributionItem item : items)
            {
              if (ids.contains(item.getId()))
              {
                item.setVisible(false);
              }
            }
          }
        }
      }
    }

    @Override
    public void menuAboutToHide(IMenuManager manager)
    {
      // TODO:Do Nothing
    }
  }

1 个答案:

答案 0 :(得分:0)

方法menuAboutToShow

public void menuAboutToShow(IMenuManager manager) {
    // Get the selection object
    // if selectedObj instanceof CustumProject {
         // get the list of customProject actions which you want to add
         // Add it like below:
         for (Action action : actionList)
             menuManager.add(action(action.getId()));
     }
}