Search in sources :

Example 1 with ContextMenuParticipant

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());
}
Also used : IAction(org.eclipse.jface.action.IAction) IActionProvider(org.eclipse.wst.xsd.ui.internal.adt.design.editparts.model.IActionProvider) StructuredSelection(org.eclipse.jface.viewers.StructuredSelection) EditPart(org.eclipse.gef.EditPart) ActionRegistry(org.eclipse.gef.ui.actions.ActionRegistry) ISelection(org.eclipse.jface.viewers.ISelection) MenuManager(org.eclipse.jface.action.MenuManager) IMenuManager(org.eclipse.jface.action.IMenuManager) IMenuManager(org.eclipse.jface.action.IMenuManager) ContextMenuParticipant(org.eclipse.wst.xsd.ui.internal.adt.editor.ContextMenuParticipant) Separator(org.eclipse.jface.action.Separator) EditorModeManager(org.eclipse.wst.xsd.ui.internal.adt.editor.EditorModeManager)

Aggregations

EditPart (org.eclipse.gef.EditPart)1 ActionRegistry (org.eclipse.gef.ui.actions.ActionRegistry)1 IAction (org.eclipse.jface.action.IAction)1 IMenuManager (org.eclipse.jface.action.IMenuManager)1 MenuManager (org.eclipse.jface.action.MenuManager)1 Separator (org.eclipse.jface.action.Separator)1 ISelection (org.eclipse.jface.viewers.ISelection)1 StructuredSelection (org.eclipse.jface.viewers.StructuredSelection)1 IActionProvider (org.eclipse.wst.xsd.ui.internal.adt.design.editparts.model.IActionProvider)1 ContextMenuParticipant (org.eclipse.wst.xsd.ui.internal.adt.editor.ContextMenuParticipant)1 EditorModeManager (org.eclipse.wst.xsd.ui.internal.adt.editor.EditorModeManager)1