blob: f16ee1b8622651939e8cddecbdeb657ce0c7b321 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 2009, 2012 - 2015 Profactor GbmH, fortiss GmbH
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Gerhard Ebenhofer, Alois Zoitl
* - initial API and implementation and/or initial documentation
*******************************************************************************/
package org.eclipse.fordiac.ide.gef;
import org.eclipse.gef.ContextMenuProvider;
import org.eclipse.gef.EditPartViewer;
import org.eclipse.gef.editparts.ZoomManager;
import org.eclipse.gef.ui.actions.ActionRegistry;
import org.eclipse.gef.ui.actions.GEFActionConstants;
import org.eclipse.gef.ui.actions.ZoomInAction;
import org.eclipse.gef.ui.actions.ZoomOutAction;
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;
/**
* The Class ZoomUndoRedoContextMenuProvider.
*
* @author Gerhard Ebenhofer (gerhard.ebenhofer@profactor.at)
*/
public class ZoomUndoRedoContextMenuProvider extends ContextMenuProvider {
private final ZoomManager zoomManager;
private final ActionRegistry registry;
/**
* Instantiates a new zoom undo redo context menu provider.
*
* @param viewer the viewer
* @param zoomManager the zoom manager
* @param registry the registry
*/
public ZoomUndoRedoContextMenuProvider(final EditPartViewer viewer, final ZoomManager zoomManager,
final ActionRegistry registry) {
super(viewer);
this.zoomManager = zoomManager;
this.registry = registry;
}
public ActionRegistry getRegistry() {
return registry;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.gef.ContextMenuProvider#buildContextMenu(org.eclipse.jface
* .action.IMenuManager)
*/
@Override
public void buildContextMenu(final IMenuManager menu) {
GEFActionConstants.addStandardActionGroups(menu);
menu.appendToGroup(GEFActionConstants.GROUP_VIEW, new GraphZoomInAction(zoomManager));
menu.appendToGroup(GEFActionConstants.GROUP_VIEW, new GraphZoomOutAction(zoomManager));
IAction action;
action = registry.getAction(ActionFactory.UNDO.getId());
menu.appendToGroup(GEFActionConstants.GROUP_UNDO, action);
action = registry.getAction(ActionFactory.REDO.getId());
menu.appendToGroup(GEFActionConstants.GROUP_UNDO, action);
// Alignment Actions
MenuManager submenu = new MenuManager("&Align");
action = registry.getAction(GEFActionConstants.ALIGN_LEFT);
if ((action != null) && action.isEnabled()) {
submenu.add(action);
}
action = registry.getAction(GEFActionConstants.ALIGN_CENTER);
if ((action != null) && action.isEnabled()) {
submenu.add(action);
}
action = registry.getAction(GEFActionConstants.ALIGN_RIGHT);
if ((action != null) && action.isEnabled()) {
submenu.add(action);
}
submenu.add(new Separator());
action = registry.getAction(GEFActionConstants.ALIGN_TOP);
if ((action != null) && action.isEnabled()) {
submenu.add(action);
}
action = registry.getAction(GEFActionConstants.ALIGN_MIDDLE);
if ((action != null) && action.isEnabled()) {
submenu.add(action);
}
action = registry.getAction(GEFActionConstants.ALIGN_BOTTOM);
if ((action != null) && action.isEnabled()) {
submenu.add(action);
}
if (!submenu.isEmpty()) {
menu.appendToGroup(GEFActionConstants.GROUP_REST, submenu);
}
action = registry.getAction(ActionFactory.PRINT.getId());
if ((action != null) && action.isEnabled()) {
menu.appendToGroup(GEFActionConstants.GROUP_REST, action);
}
}
private static final class GraphZoomInAction extends ZoomInAction {
public GraphZoomInAction(final ZoomManager zoomManager) {
super(zoomManager);
}
@Override
public boolean isEnabled() {
return zoomManager.canZoomIn();
}
}
private static final class GraphZoomOutAction extends ZoomOutAction {
public GraphZoomOutAction(final ZoomManager zoomManager) {
super(zoomManager);
}
@Override
public boolean isEnabled() {
return zoomManager.canZoomOut();
}
}
}