blob: 7b9193f3156f89068236d24d9f08f715e25468d6 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2010 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.gef.requests;
import org.eclipse.draw2d.geometry.Dimension;
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.gef.RequestConstants;
/**
* A Request to create a new object.
*/
public class CreateRequest extends org.eclipse.gef.Request implements
DropRequest {
private Object newObject;
private Dimension size;
private Point location;
private int flags = 0;
private static final int SNAP_TO = 1;
private CreationFactory creationFactory;
/**
* Creates a CreateRequest with the default type.
*/
public CreateRequest() {
setType(RequestConstants.REQ_CREATE);
}
/**
* Creates a CreateRequest with the given type.
*
* @param type
* The type of request.
*/
public CreateRequest(Object type) {
setType(type);
}
/**
* Returns the CreationFactory for this request.
*
* @return the CreationFactory
*/
protected CreationFactory getFactory() {
return creationFactory;
}
/**
* Returns the location of the object to be created.
*
* @return the location
*/
public Point getLocation() {
return location;
}
/**
* Gets the new object from the factory and returns that object.
*
* @return the new object
*/
public Object getNewObject() {
if (newObject == null) {
if (getFactory() == null) {
throw new IllegalArgumentException(
"CreateRequest has unspecified CreationFactory"); //$NON-NLS-1$
}
newObject = getFactory().getNewObject();
}
return newObject;
}
/**
* Returns the type of the new object.
*
* @return the type of the new object
*/
public Object getNewObjectType() {
if (getFactory() == null) {
throw new IllegalArgumentException(
"CreateRequest has unspecified CreationFactory"); //$NON-NLS-1$
}
return getFactory().getObjectType();
}
/**
* Returns the size of the object to be created.
*
* @return the size
*/
public Dimension getSize() {
return size;
}
/**
* Returns <code>true</code> if snap-to is enabled
*
* @since 3.7
* @return <code>true</code> if the request is for a creation with snap-to
* enabled
*/
public boolean isSnapToEnabled() {
return (flags & SNAP_TO) != 0;
}
/**
* Sets the factory to be used when creating the new object.
*
* @param factory
* the factory
*/
public void setFactory(CreationFactory factory) {
creationFactory = factory;
}
/**
* Sets the location where the new object will be placed.
*
* @param location
* the location
*/
public void setLocation(Point location) {
this.location = location;
}
/**
* Sets the size of the new object.
*
* @param size
* the size
*/
public void setSize(Dimension size) {
this.size = size;
}
/**
* Used to set whether snap-to is being performed.
*
* @since 3.7
* @param value
* <code>true</code> if the request is for a creation with
* snap-to enabled
*/
public void setSnapToEnabled(boolean value) {
flags = value ? (flags | SNAP_TO) : (flags & ~SNAP_TO);
}
}