blob: 31fbde9f36df83318bf548aa0e697a3537745150 [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2005, 2008 IBM Corporation 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:
* IBM Corporation - initial API and implementation
****************************************************************************/
package org.eclipse.gmf.runtime.diagram.ui.printing.providers;
import org.eclipse.gef.RootEditPart;
import org.eclipse.gmf.runtime.common.core.command.ICommand;
import org.eclipse.gmf.runtime.common.ui.action.global.GlobalActionId;
import org.eclipse.gmf.runtime.common.ui.services.action.global.IGlobalActionContext;
import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint;
import org.eclipse.gmf.runtime.diagram.ui.editparts.IDiagramPreferenceSupport;
import org.eclipse.gmf.runtime.diagram.ui.parts.IDiagramWorkbenchPart;
import org.eclipse.gmf.runtime.diagram.ui.printing.actions.DefaultPrintActionHelper;
import org.eclipse.gmf.runtime.diagram.ui.printing.internal.util.SWTDiagramPrinter;
import org.eclipse.gmf.runtime.diagram.ui.providers.DiagramGlobalActionHandler;
import org.eclipse.ui.IEditorPart;
/**
* Concrete class that implements the <code>IGlobalActionHandler</code>
* interface and provides a command for <code>GlobalActionId.PRINT</code>.
*
* @author tmacdoug
*/
public class DiagramWithPrintGlobalActionHandler
extends DiagramGlobalActionHandler {
/**
* Constructor for DiagramWithPrintGlobalActionHandler.
*/
public DiagramWithPrintGlobalActionHandler() {
super();
}
public ICommand getCommand(IGlobalActionContext cntxt) {
ICommand command = null;
/* Check the action id and create the command */
String actionId = cntxt.getActionId();
if (actionId.equals(GlobalActionId.PRINT)) {
doPrint(cntxt);
} else {
command = super.getCommand(cntxt);
}
return command;
}
/**
* @param cntxt
*/
protected void doPrint(IGlobalActionContext cntxt) {
DefaultPrintActionHelper.doRun((IEditorPart) cntxt.getActivePart(),
new SWTDiagramPrinter(getPreferencesHint((IEditorPart) cntxt
.getActivePart()), getMapMode(cntxt)));
}
/**
* Checks if we will allow a print
*
* @return boolean true
*/
private boolean canPrint() {
return true;
}
public boolean canHandle(IGlobalActionContext cntxt) {
boolean result = false;
/* Check the action id */
String actionId = cntxt.getActionId();
if (actionId.equals(GlobalActionId.PRINT)) {
result = canPrint();
} else {
result = super.canHandle(cntxt);
}
return result;
}
/**
* Gets the preferences hint that is to be used to find the appropriate
* preference store from which to retrieve diagram preference values. The
* preference hint is mapped to a preference store in the preference
* registry <@link DiagramPreferencesRegistry>.
*
* @return the preferences hint
*/
protected PreferencesHint getPreferencesHint(IEditorPart editorPart) {
if (editorPart instanceof IDiagramWorkbenchPart) {
RootEditPart rootEP = ((IDiagramWorkbenchPart) editorPart)
.getDiagramGraphicalViewer().getRootEditPart();
if (rootEP instanceof IDiagramPreferenceSupport) {
return ((IDiagramPreferenceSupport) rootEP)
.getPreferencesHint();
}
}
return PreferencesHint.USE_DEFAULTS;
}
}