/*******************************************************************************
* MontiCore Language Workbench
* Copyright (c) 2015, 2016, MontiCore, All rights reserved.
*
* This project is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3.0 of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this project. If not, see <http://www.gnu.org/licenses/>.
*******************************************************************************/
package de.monticore.genericgraphics;
import org.eclipse.gef.ui.actions.ActionBarContributor;
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.IToolBarManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.actions.ActionFactory;
import de.monticore.genericgraphics.controller.actions.ExportAsImageAction;
/**
* Generic {@link ActionBarContributor} providing the following functionality:
* <ul>
* <li>Toolbar:
* <ul>
* <li>Adds a {@link ZoomComboContributionItem}</li>
* <li>Adds a undo/redo</li>
* </ul>
* </li>
* <li>Global Action Keys
* <ul>
* <li>adds key for printing</li>
* <li>adds key for "select all"</li>
* </ul>
* </li>
* </ul>
*
* @author Tim Enger
*/
public class GenericActionBarContributor extends ActionBarContributor {
private ExportAsImageAction exportAction;
@Override
protected void buildActions() {
addRetargetAction(new UndoRetargetAction());
addRetargetAction(new RedoRetargetAction());
addRetargetAction(new ZoomInRetargetAction());
addRetargetAction(new ZoomOutRetargetAction());
exportAction = new ExportAsImageAction(null);
addAction(exportAction);
}
@Override
public void contributeToToolBar(IToolBarManager toolBarManager) {
// redo & undo
toolBarManager.add(getAction(ActionFactory.UNDO.getId()));
toolBarManager.add(getAction(ActionFactory.REDO.getId()));
toolBarManager.add(new Separator());
// zoom
toolBarManager.add(getAction(GEFActionConstants.ZOOM_IN));
toolBarManager.add(getAction(GEFActionConstants.ZOOM_OUT));
toolBarManager.add(new ZoomComboContributionItem(getPage()));
toolBarManager.add(new Separator());
// export as image
toolBarManager.add(getAction(ExportAsImageAction.EXPORT_AS_IMAGE_ID));
}
@Override
protected void declareGlobalActionKeys() {
addGlobalActionKey(ActionFactory.PRINT.getId());
addGlobalActionKey(ActionFactory.SELECT_ALL.getId());
}
@Override
public void setActiveEditor(IEditorPart editor) {
// override this so that the exportAction instance can track the
// current editor
super.setActiveEditor(editor);
exportAction.setEditorPart(editor);
}
}