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

时间:2012-08-02 08:57:39

标签: eclipse-rcp

我想从我的RCP应用程序中删除文件,编辑,源,重构等菜单 我可以使用hideActionSet()吗?或者我该怎么办?

2 个答案:

答案 0 :(得分:4)

这是对的;在 ApplicationWorkbenchWindowAdvisor 中,覆盖 postWindowOpen()

棘手的一点通常是找出你要删除的动作集的名称,但是你可以使用旧备用ALT-SHIFT-F2('插件菜单间谍'的默认键绑定)并点击一个您要删除的菜单项。

请注意,如果禁用该菜单项,间谍将不会向您提供任何信息。

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");
        }
    }
}

答案 1 :(得分:0)

虽然问题已经过去了:

Lars Vogel's tutorial about 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);
}