/*******************************************************************************
* Copyright (c) 2008 Conselleria de Infraestructuras y Transporte, Generalitat
* de la Comunitat Valenciana . 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: Francisco Javier Cano Muñoz (Prodevelop) - initial api implementation
*
******************************************************************************/
package org.eclipse.papyrus.uml.diagram.common.actions;
import org.eclipse.gmf.runtime.common.core.service.IProvider;
import org.eclipse.gmf.runtime.common.ui.services.action.contributionitem.AbstractContributionItemProvider;
import org.eclipse.gmf.runtime.common.ui.util.IWorkbenchPartDescriptor;
import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.ui.IWorkbenchPage;
/**
* Provides the text for the menu group, and the actions contained inside
*
* @author <a href="mailto:fjcano@prodevelop.es">Francisco Javier Cano Muñoz</a>
*
*/
public class MoveCompartmentObjectItemProvider extends AbstractContributionItemProvider implements IProvider {
/** The Constant MENU_CREATE_DIAGRAM. */
public static final String MENU_CREATE_DIAGRAM = "menu_order_within_compartment"; //$NON-NLS-1$
/**
* It creates the menu with the list of actions.
*/
@Override
protected IMenuManager createMenuManager(String menuId, IWorkbenchPartDescriptor partDescriptor) {
if(!MENU_CREATE_DIAGRAM.equals(menuId)) {
return super.createMenuManager(menuId, partDescriptor);
}
MenuManager menuManager = new MenuManager("Compartment Order");
MenuBuilder builder = new MenuBuilder(partDescriptor);
builder.buildMenu(menuManager);
menuManager.addMenuListener(builder);
return menuManager;
}
/**
* The Class MenuBuilder.
*/
private class MenuBuilder implements IMenuListener {
/** The my workbench part. */
private final IWorkbenchPartDescriptor myWorkbenchPart;
/**
* Instantiates a new menu builder.
*
* @param workbenchPart
* the workbench part
*/
public MenuBuilder(IWorkbenchPartDescriptor workbenchPart) {
myWorkbenchPart = workbenchPart;
}
/**
* Create the menu before showing.
*/
public void menuAboutToShow(IMenuManager manager) {
buildMenu(manager);
}
/**
* Builds the menu.
*
* @param manager
* the manager
*/
public void buildMenu(IMenuManager manager) {
manager.removeAll();
// Define actions
MoveCompartmentObjectAction actionTop, actionBottom, actionUp, actionDown;
// Create the actions
actionTop = new MoveCompartmentObjectAction(getWorkbenchPage(), MoveCompartmentObjectAction.MOVE_TOP);
actionUp = new MoveCompartmentObjectAction(getWorkbenchPage(), MoveCompartmentObjectAction.MOVE_UP);
actionDown = new MoveCompartmentObjectAction(getWorkbenchPage(), MoveCompartmentObjectAction.MOVE_DOWN);
actionBottom = new MoveCompartmentObjectAction(getWorkbenchPage(), MoveCompartmentObjectAction.MOVE_BOTTOM);
// Initialize the actions
actionTop.init();
actionUp.init();
actionDown.init();
actionBottom.init();
// Add them to the menu
manager.add(actionTop);
manager.add(actionUp);
manager.add(actionDown);
manager.add(actionBottom);
}
/**
* Gets the workbench page.
*
* @return the workbench page
*/
private IWorkbenchPage getWorkbenchPage() {
return myWorkbenchPart.getPartPage();
}
}
}