com.archimatetool.editor.diagram.AbstractDiagramEditorContextMenuProvider.java Source code

Java tutorial

Introduction

Here is the source code for com.archimatetool.editor.diagram.AbstractDiagramEditorContextMenuProvider.java

Source

/**
 * This program and the accompanying materials
 * are made available under the terms of the License
 * which accompanies this distribution in the file LICENSE.txt
 */
package com.archimatetool.editor.diagram;

import org.eclipse.gef.ContextMenuProvider;
import org.eclipse.gef.EditPartViewer;
import org.eclipse.gef.ui.actions.ActionRegistry;
import org.eclipse.gef.ui.actions.GEFActionConstants;
import org.eclipse.jface.action.GroupMarker;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.ui.actions.ActionFactory;

import com.archimatetool.editor.diagram.actions.BringForwardAction;
import com.archimatetool.editor.diagram.actions.BringToFrontAction;
import com.archimatetool.editor.diagram.actions.ConnectionRouterAction;
import com.archimatetool.editor.diagram.actions.DefaultEditPartSizeAction;
import com.archimatetool.editor.diagram.actions.ExportAsImageAction;
import com.archimatetool.editor.diagram.actions.ExportAsImageToClipboardAction;
import com.archimatetool.editor.diagram.actions.LockObjectAction;
import com.archimatetool.editor.diagram.actions.SelectElementInTreeAction;
import com.archimatetool.editor.diagram.actions.SendBackwardAction;
import com.archimatetool.editor.diagram.actions.SendToBackAction;

/**
 * Provides a context menu.
 * 
 * @author Phillip Beauvoir
 */
public abstract class AbstractDiagramEditorContextMenuProvider extends ContextMenuProvider {

    public static final String GROUP_UNDO = "group_undo"; //$NON-NLS-1$
    public static final String GROUP_EDIT = "group_edit"; //$NON-NLS-1$
    public static final String GROUP_RENAME = "group_rename"; //$NON-NLS-1$
    public static final String GROUP_EXPORT = "group_export"; //$NON-NLS-1$
    public static final String GROUP_ORDER = "group_order"; //$NON-NLS-1$
    public static final String GROUP_POSITION = "group_position"; //$NON-NLS-1$
    public static final String GROUP_CONNECTIONS = "group_connections"; //$NON-NLS-1$
    public static final String GROUP_PROPERTIES = "group_properties"; //$NON-NLS-1$

    protected ActionRegistry actionRegistry;

    /**
     * Creates a new ContextMenuProvider assoicated with the given viewer
     * and action registry.
     * 
     * @param viewer the viewer
     * @param registry the action registry
     */
    public AbstractDiagramEditorContextMenuProvider(EditPartViewer viewer, ActionRegistry registry) {
        super(viewer);
        actionRegistry = registry;
    }

    /**
     * @see ContextMenuProvider#buildContextMenu(org.eclipse.jface.action.IMenuManager)
     */
    @Override
    public void buildContextMenu(IMenuManager menu) {
        IAction action;

        menu.add(new Separator(GROUP_UNDO));

        action = actionRegistry.getAction(ActionFactory.UNDO.getId());
        menu.appendToGroup(GROUP_UNDO, action);

        action = actionRegistry.getAction(ActionFactory.REDO.getId());
        menu.appendToGroup(GROUP_UNDO, action);

        menu.add(new Separator(GROUP_EDIT));

        action = actionRegistry.getAction(ActionFactory.CUT.getId());
        menu.appendToGroup(GROUP_EDIT, action);

        action = actionRegistry.getAction(ActionFactory.COPY.getId());
        menu.appendToGroup(GROUP_EDIT, action);

        action = actionRegistry.getAction(ActionFactory.PASTE.getId());
        menu.appendToGroup(GROUP_EDIT, action);

        action = actionRegistry.getAction(ActionFactory.DELETE.getId());
        menu.appendToGroup(GROUP_EDIT, action);

        action = actionRegistry.getAction(LockObjectAction.ID);
        if (action.isEnabled()) {
            menu.appendToGroup(GROUP_EDIT, new Separator());
            menu.appendToGroup(GROUP_EDIT, action);
        }

        menu.add(new Separator(GROUP_RENAME));

        action = actionRegistry.getAction(ActionFactory.RENAME.getId());
        menu.appendToGroup(GROUP_RENAME, action);

        // Select Element in Tree
        menu.appendToGroup(GROUP_RENAME, new Separator());
        menu.appendToGroup(GROUP_RENAME, actionRegistry.getAction(SelectElementInTreeAction.ID));

        menu.add(new Separator(GROUP_EXPORT));
        IMenuManager exportMenu = new MenuManager(Messages.AbstractDiagramEditorContextMenuProvider_0,
                "menu_export"); //$NON-NLS-1$
        menu.add(exportMenu);
        exportMenu.add(actionRegistry.getAction(ExportAsImageAction.ID));
        exportMenu.add(actionRegistry.getAction(ExportAsImageToClipboardAction.ID));

        menu.add(new Separator(GROUP_ORDER));
        IMenuManager orderMenu = new MenuManager(Messages.AbstractDiagramEditorContextMenuProvider_1, "menu_order"); //$NON-NLS-1$
        menu.add(orderMenu);
        orderMenu.add(actionRegistry.getAction(BringToFrontAction.ID));
        orderMenu.add(actionRegistry.getAction(BringForwardAction.ID));
        orderMenu.add(actionRegistry.getAction(SendToBackAction.ID));
        orderMenu.add(actionRegistry.getAction(SendBackwardAction.ID));

        menu.add(new GroupMarker(GROUP_POSITION));
        IMenuManager alignmentMenu = new MenuManager(Messages.AbstractDiagramEditorContextMenuProvider_2,
                "menu_position"); //$NON-NLS-1$
        menu.add(alignmentMenu);

        alignmentMenu.add(actionRegistry.getAction(GEFActionConstants.ALIGN_LEFT));
        alignmentMenu.add(actionRegistry.getAction(GEFActionConstants.ALIGN_CENTER));
        alignmentMenu.add(actionRegistry.getAction(GEFActionConstants.ALIGN_RIGHT));

        alignmentMenu.add(new Separator());

        alignmentMenu.add(actionRegistry.getAction(GEFActionConstants.ALIGN_TOP));
        alignmentMenu.add(actionRegistry.getAction(GEFActionConstants.ALIGN_MIDDLE));
        alignmentMenu.add(actionRegistry.getAction(GEFActionConstants.ALIGN_BOTTOM));

        alignmentMenu.add(new Separator());

        alignmentMenu.add(actionRegistry.getAction(GEFActionConstants.MATCH_WIDTH));
        alignmentMenu.add(actionRegistry.getAction(GEFActionConstants.MATCH_HEIGHT));

        alignmentMenu.add(new Separator());
        alignmentMenu.add(actionRegistry.getAction(DefaultEditPartSizeAction.ID));

        menu.add(new Separator(GROUP_CONNECTIONS));
        IMenuManager connectionMenu = new MenuManager(Messages.AbstractDiagramEditorContextMenuProvider_3,
                "menu_connection_router"); //$NON-NLS-1$
        menu.appendToGroup(GROUP_CONNECTIONS, connectionMenu);
        connectionMenu.add(actionRegistry.getAction(ConnectionRouterAction.BendPointConnectionRouterAction.ID));
        connectionMenu.add(actionRegistry.getAction(ConnectionRouterAction.ShortestPathConnectionRouterAction.ID));
        connectionMenu.add(actionRegistry.getAction(ConnectionRouterAction.ManhattanConnectionRouterAction.ID));

        menu.add(new Separator(GROUP_PROPERTIES));
        action = actionRegistry.getAction(ActionFactory.PROPERTIES.getId());
        menu.add(action);
    }
}