我希望从我的RCP应用程序中删除"File", "Edit", "Source", "Refactor"等菜单。我可以使用hideActionSet()
吗?还是应该做什么?
我希望从我的RCP应用程序中删除"File", "Edit", "Source", "Refactor"等菜单。我可以使用hideActionSet()
吗?还是应该做什么?
没错,在你的 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");
}
}
}
WorkbenchWindow workbenchWin = (WorkbenchWindow)PlatformUI.getWorkbench().getActiveWorkbenchWindow();
MenuManager menuManager = workbenchWin.getMenuManager();
IContributionItem[] items = menuManager.getItems();
for(IContributionItem item : items) {
item.setVisible(false);
}