从Eclipse RCP应用程序中移除“文件,编辑...等”菜单

3

我希望从我的RCP应用程序中删除"File", "Edit", "Source", "Refactor"等菜单。我可以使用hideActionSet()吗?还是应该做什么?

2个回答

5

没错,在你的 ApplicationWorkbenchWindowAdvisor 中,重写 postWindowOpen() 方法。

通常最棘手的部分是弄清楚你想要移除的操作集的名称,但是你可以使用老掉牙的 ALT-SHIFT-F2(“插件菜单 Spy”的默认键绑定),然后点击你想要删除的菜单项之一。

请注意,如果菜单项被禁用,则 Spy 不会提供任何有关其信息。

public void postWindowOpen() {
    runApplicationWorkbenchDelegate();

    // remove unwanted UI contributions that eclipse makes by default
    IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();

    for (int i = 0; i < windows.length; ++i) {
        IWorkbenchPage page = windows[i].getActivePage();
        if (page != null) {
            // hide generic 'File' commands
            page.hideActionSet("org.eclipse.ui.actionSet.openFiles");

            // hide 'Convert Line Delimiters To...'
            page.hideActionSet("org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo");

            // hide 'Search' commands
            page.hideActionSet("org.eclipse.search.searchActionSet");

            // hide 'Annotation' commands
            page.hideActionSet("org.eclipse.ui.edit.text.actionSet.annotationNavigation");

            // hide 'Forward/Back' type navigation commands
            page.hideActionSet("org.eclipse.ui.edit.text.actionSet.navigation");
        }
    }
}

我想在我的RCP应用程序中删除整个“重构”菜单。如何做到这一点?Alt+Shift+F2仅显示重构操作的ID! - Destructor

1
尽管这个问题旧了: Lars Vogel的Eclipse Activities教程展示了如何在RCP应用中隐藏整个菜单而不是移除单个菜单条目。
编辑: 或者您可以使用附加到工作台窗口的MenuManager来显示或隐藏菜单/贡献。 尝试以下代码以隐藏所有菜单:
WorkbenchWindow workbenchWin = (WorkbenchWindow)PlatformUI.getWorkbench().getActiveWorkbenchWindow();
MenuManager menuManager = workbenchWin.getMenuManager();
IContributionItem[] items = menuManager.getItems();

for(IContributionItem item : items) {
  item.setVisible(false);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接