/*******************************************************************************
* Copyright (c) 2010-2015 Henshin developers. 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:
* TU Berlin, University of Luxembourg, SES S.A.
*******************************************************************************/
package de.tub.tfs.muvitor.actions;
import org.eclipse.gef.editparts.ZoomManager;
import org.eclipse.gef.ui.actions.ActionBarContributor;
import org.eclipse.gef.ui.actions.DeleteRetargetAction;
import org.eclipse.gef.ui.actions.GEFActionConstants;
import org.eclipse.gef.ui.actions.RedoRetargetAction;
import org.eclipse.gef.ui.actions.UndoRetargetAction;
import org.eclipse.gef.ui.actions.ZoomComboContributionItem;
import org.eclipse.gef.ui.actions.ZoomInRetargetAction;
import org.eclipse.gef.ui.actions.ZoomOutRetargetAction;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.ui.IWorkbenchActionConstants;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.actions.ActionFactory;
import org.eclipse.ui.actions.RetargetAction;
/**
* Contributor class to build up the editor's menu and tool bar. Some standard
* actions are put on the ActionBar by this. Usually you will not need to
* subclass this.
*
* <p>
* In the rare case that you really need an additional RetargetAction for all
* the Muvitor's views, it must be built in {@link #buildActions()} and
* contributed in {@link #contributeToMenu(IMenuManager)} or
* {@link #contributeToMenu(IMenuManager)} in subclasses.
*
* @author Tony Modica
*/
public class MuvitorActionBarContributor extends ActionBarContributor {
/*
* (non-Javadoc)
* @see
* org.eclipse.ui.part.EditorActionBarContributor#contributeToMenu(org.eclipse
* .jface.action.IMenuManager)
*/
@Override
public void contributeToMenu(final IMenuManager menuManager) {
super.contributeToMenu(menuManager);
// add a "View" menu after "Edit"
final MenuManager viewMenu = new MenuManager("View");
viewMenu.add(getAction(GEFActionConstants.ZOOM_IN));
viewMenu.add(getAction(GEFActionConstants.ZOOM_OUT));
menuManager.insertAfter(IWorkbenchActionConstants.M_EDIT, viewMenu);
}
/*
* (non-Javadoc)
* @see
* org.eclipse.ui.part.EditorActionBarContributor#contributeToToolBar(org
* .eclipse.jface.action.IToolBarManager)
*/
@Override
public void contributeToToolBar(final IToolBarManager toolBarManager) {
super.contributeToToolBar(toolBarManager);
toolBarManager.add(getAction(ActionFactory.REVERT.getId()));
toolBarManager.add(new Separator());
toolBarManager.add(getAction(ActionFactory.UNDO.getId()));
toolBarManager.add(getAction(ActionFactory.REDO.getId()));
toolBarManager.add(new Separator());
toolBarManager.add(getAction(ActionFactory.COPY.getId()));
toolBarManager.add(getAction(ActionFactory.CUT.getId()));
toolBarManager.add(getAction(ActionFactory.PASTE.getId()));
toolBarManager.add(new Separator());
toolBarManager.add(getAction(ActionFactory.DELETE.getId()));
toolBarManager.add(new Separator());
toolBarManager.add(getAction(GEFActionConstants.ZOOM_IN));
toolBarManager.add(getAction(GEFActionConstants.ZOOM_OUT));
final String[] zoomStrings = new String[] { ZoomManager.FIT_ALL, ZoomManager.FIT_HEIGHT,
ZoomManager.FIT_WIDTH };
toolBarManager.add(new ZoomComboContributionItem(getPage(), zoomStrings));
}
/*
* (non-Javadoc)
* @see org.eclipse.gef.ui.actions.ActionBarContributor#buildActions()
*/
@Override
protected void buildActions() {
addRetargetAction(new UndoRetargetAction());
addRetargetAction(new RedoRetargetAction());
addRetargetAction(new DeleteRetargetAction());
final IWorkbenchWindow iww = getPage().getWorkbenchWindow();
addRetargetAction((RetargetAction) ActionFactory.REVERT.create(iww));
addRetargetAction((RetargetAction) ActionFactory.COPY.create(iww));
addRetargetAction((RetargetAction) ActionFactory.CUT.create(iww));
addRetargetAction((RetargetAction) ActionFactory.PASTE.create(iww));
addRetargetAction(new ZoomInRetargetAction());
addRetargetAction(new ZoomOutRetargetAction());
}
/**
* Only IDs which were not already added directly or indirectly using
* {@link #addGlobalActionKey(String)} need to be added.
*/
/*
* (non-Javadoc)
* @see
* org.eclipse.gef.ui.actions.ActionBarContributor#declareGlobalActionKeys()
*/
@Override
protected void declareGlobalActionKeys() {
// addRetargetAction does declare global action keys
}
}