/******************************************************************************* * Copyright (c) 2000, 2010, 2012 IBM Corporation, Gerhardt Informatics Kft. 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 * Gerhardt Informatics Kft. - GEFGWT port *******************************************************************************/ 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); } }