use of org.eclipse.wst.xsd.ui.internal.adt.editor.ContextMenuParticipant in project webtools.sourceediting by eclipse.
the class DesignViewContextMenuProvider method buildContextMenu.
/**
* @see org.eclipse.gef.ui.parts.ContextMenuProvider#buildContextMenu(org.eclipse.jface.action.IMenuManager,
* org.eclipse.gef.EditPartViewer)
*/
public void buildContextMenu(IMenuManager menu) {
IMenuManager currentMenu = menu;
EditorModeManager manager = (EditorModeManager) editor.getAdapter(EditorModeManager.class);
ContextMenuParticipant contextMenuParticipant = manager != null ? manager.getCurrentMode().getContextMenuParticipant() : null;
menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
ActionRegistry registry = getEditorActionRegistry();
ISelection selection = selectionProvider.getSelection();
if (selection != null) {
Object selectedObject = ((StructuredSelection) selection).getFirstElement();
// Convert editparts to model objects as selections
if (selectedObject instanceof EditPart) {
selectedObject = ((EditPart) selectedObject).getModel();
}
if (selectedObject instanceof IActionProvider) {
IActionProvider actionProvider = (IActionProvider) selectedObject;
String[] actions = actionProvider.getActions(null);
for (int i = 0; i < actions.length; i++) {
String id = actions[i];
if (contextMenuParticipant == null || contextMenuParticipant.isApplicable(selectedObject, id)) {
if (id.startsWith(BaseSelectionAction.SUBMENU_START_ID)) {
String text = id.substring(BaseSelectionAction.SUBMENU_START_ID.length());
IMenuManager subMenu = new MenuManager(text);
currentMenu.add(subMenu);
currentMenu = subMenu;
} else if (id.startsWith(BaseSelectionAction.SUBMENU_END_ID)) {
currentMenu = getParentMenu(menu, currentMenu);
} else if (id.equals(BaseSelectionAction.SEPARATOR_ID)) {
currentMenu.add(new Separator());
} else {
IAction action = registry.getAction(id);
if (action != null) {
action.isEnabled();
currentMenu.add(action);
}
}
}
}
menu.add(new Separator());
// $NON-NLS-1$
IMenuManager subMenu = new MenuManager(Messages._UI_REFACTOR_CONTEXT_MENU, IXSDRefactorConstants.REFACTOR_CONTEXT_MENU_ID);
menu.add(subMenu);
menu.add(new Separator());
// $NON-NLS-1$
menu.add(new Separator("search-slot"));
menu.add(new Separator());
// $NON-NLS-1$
menu.add(new Separator("endDesignMenu-slot"));
menu.add(new Separator());
}
}
menu.add(new Separator());
}
Aggregations