我在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
}
}
答案 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()));
}
}