blob: 3e239190d895a508941412f336a5990f31be1152 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2005 Sybase, Inc. and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Sybase, Inc. - initial API and implementation
*******************************************************************************/
package org.eclipse.jst.jsf.facesconfig.ui.pageflow;
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.IAction;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jst.jsf.facesconfig.ui.FacesConfigEditor;
import org.eclipse.jst.jsf.facesconfig.ui.pageflow.action.ShowPropertyViewAction;
import org.eclipse.ui.actions.ActionFactory;
/**
* This is the context menu provider for pageflow editor.
*
*/
public class PageflowEditorContextMenuProvider extends ContextMenuProvider {
/** the action registry */
private final ActionRegistry actionRegistry;
/**
* Creates a new PageflowEditorContextMenuProvider instance.
*
* @param viewer -
* the editor viewer
* @param actionRegistry -
* action registry of the editor
*/
public PageflowEditorContextMenuProvider(EditPartViewer viewer,
ActionRegistry actionRegistry) {
super(viewer);
this.actionRegistry = actionRegistry;
}
/*
* (non-Javadoc)
*
* @see ContextMenuProvider#buildContextMenu(IMenuManager)
*/
public void buildContextMenu(IMenuManager menuManager) {
// add GEF menu groups, such as undo, edit, save, etc.
GEFActionConstants.addStandardActionGroups(menuManager);
// add typical undo/redo commands
appendActionToUndoGroup(menuManager, ActionFactory.UNDO.getId());
appendActionToUndoGroup(menuManager, ActionFactory.REDO.getId());
// add edit commands, including copy, paste, delete
appendActionToEditGroup(menuManager, ActionFactory.COPY.getId());
appendActionToEditGroup(menuManager, ActionFactory.PASTE.getId());
appendActionToEditGroup(menuManager, ActionFactory.DELETE.getId());
// Add Open Editor Action
appendActionToEditGroup(menuManager, FacesConfigEditor.EDITOR_ID);
// append the save submenu
appendActionToSaveGroup(menuManager, ActionFactory.SAVE.getId());
// append the alignment submenu, including top, bottom, middle, left,
// right and center.
appendAlignmentSubmenu(menuManager);
appendShowViewSubmenu(menuManager);
}
/**
* Appends the alignment subment.
*
* @param menuManager
* manager of workbench
*/
private void appendShowViewSubmenu(IMenuManager menuManager) {
// Show View Actions
MenuManager submenu = new MenuManager(
PageflowMessages.Pageflow_Contextmenu_ShowView_Label);
IAction action = getActionRegistry().getAction(
ShowPropertyViewAction.SHOW_PROPERTY_VIEW);
if (null != action && action.isEnabled()) {
submenu.add(action);
}
// action = getActionRegistry().getAction(
// ShowPaletteViewAction.SHOW_PALETTE_VIEW);
// if (null != action && action.isEnabled()) {
// submenu.add(action);
// }
if (!submenu.isEmpty()) {
menuManager.appendToGroup(GEFActionConstants.GROUP_REST, submenu);
}
}
/**
* Appends the alignment subment.
*
* @param menuManager
* manager of workbench
*/
private void appendAlignmentSubmenu(IMenuManager menuManager) {
// Alignment Actions
MenuManager submenu = new MenuManager(
PageflowMessages.Pageflow_Contextmenu_Align_Label);
IAction action = getActionRegistry().getAction(
GEFActionConstants.ALIGN_LEFT);
if (null != action && action.isEnabled()) {
submenu.add(action);
}
action = getActionRegistry().getAction(GEFActionConstants.ALIGN_CENTER);
if (null != action && action.isEnabled()) {
submenu.add(action);
}
action = getActionRegistry().getAction(GEFActionConstants.ALIGN_RIGHT);
if (null != action && action.isEnabled()) {
submenu.add(action);
}
action = getActionRegistry().getAction(GEFActionConstants.ALIGN_TOP);
if (null != action && action.isEnabled()) {
submenu.add(action);
}
action = getActionRegistry().getAction(GEFActionConstants.ALIGN_MIDDLE);
if (null != action && action.isEnabled()) {
submenu.add(action);
}
action = getActionRegistry().getAction(GEFActionConstants.ALIGN_BOTTOM);
if (null != action && action.isEnabled()) {
submenu.add(action);
}
if (!submenu.isEmpty()) {
menuManager.appendToGroup(GEFActionConstants.GROUP_EDIT, submenu);
}
}
/**
* Returns the action registry.
*
* @return - the action registry
*/
protected ActionRegistry getActionRegistry() {
return actionRegistry;
}
/**
* Appends the specified action to the specified menu group
*
* @param menu -
* menu manager
* @param actionId -
* action's ID
* @param menuGroup -
* menu group name
*/
// TODO: dead code
// private void appendActionToMenu(IMenuManager menu, String actionId,
// String menuGroup) {
// IAction action = getActionRegistry().getAction(actionId);
// if (null != action && action.isEnabled()) {
// menu.appendToGroup(menuGroup, action);
// }
// }
/**
* Appends the specified action to the 'Undo' menu group
*
* @param menu -
* menu manager
* @param actionId -
* action's ID
*/
private void appendActionToUndoGroup(IMenuManager menu, String actionId) {
IAction action = getActionRegistry().getAction(actionId);
if (null != action && action.isEnabled()) {
menu.appendToGroup(GEFActionConstants.GROUP_UNDO, action);
}
}
/**
* Appends the specified action to the 'edit' menu group
*
* @param menu -
* menu manager
* @param actionId -
* action's ID
*/
private void appendActionToEditGroup(IMenuManager menu, String actionId) {
IAction action = getActionRegistry().getAction(actionId);
if (null != action && action.isEnabled()) {
menu.appendToGroup(GEFActionConstants.GROUP_EDIT, action);
}
}
/**
* Appends the specified action to the 'add' menu group
*
* @param menu -
* menu manager
* @param actionId -
* action's ID
*/
// TODO: dead code
// private void appendActionToAddGroup(IMenuManager menu, String actionId) {
// IAction action = getActionRegistry().getAction(actionId);
// if (null != action && action.isEnabled()) {
// menu.appendToGroup(GEFActionConstants.GROUP_ADD, action);
// }
// }
/**
* Appends the specified action to the 'save' menu group
*
* @param menu -
* menu manager
* @param actionId -
* action's ID
*/
private void appendActionToSaveGroup(IMenuManager menu, String actionId) {
IAction action = getActionRegistry().getAction(actionId);
if (null != action && action.isEnabled()) {
menu.appendToGroup(GEFActionConstants.GROUP_SAVE, action);
}
}
}