/**
 * 
 */
package org.eclipse.epf.diagramming.base.actions;

import org.eclipse.gef.Request;
import org.eclipse.gmf.runtime.diagram.ui.actions.DiagramAction;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPart;

/**
 * @author Shashidhar Kannoori
 *
 */
public class OrientationAction extends DiagramAction {
	
	public OrientationAction(IWorkbenchPage workbenchPage, String orienation) {
		super(workbenchPage);
		setId(orienation);
	}
	
	public OrientationAction(IWorkbenchPart workbenchpart, String oriientation) {
		super(workbenchpart);
		setId(oriientation);
	}
	/**
	 * @param workbenchPage
	 */
	public OrientationAction(IWorkbenchPage workbenchPage) {
		super(workbenchPage);
	}

	/**
	 * @param workbenchpart
	 */
	public OrientationAction(IWorkbenchPart workbenchpart) {
		super(workbenchpart);
	}

	/* (non-Javadoc)
	 * @see org.eclipse.gmf.runtime.diagram.ui.actions.DiagramAction#createTargetRequest()
	 */
	protected Request createTargetRequest() {
		return new OrientationRequest(getId());
	}

	/* (non-Javadoc)
	 * @see org.eclipse.gmf.runtime.diagram.ui.actions.DiagramAction#isSelectionListener()
	 */
	protected boolean isSelectionListener() {
		return true;
	}
	
}
