/*******************************************************************************
 * Copyright (c) 2007, 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.swt.dnd;

import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;

/**
 * This class provides default implementations to display a drag source
 * effect during a drag and drop operation. The current implementation
 * does not provide any visual feedback.
 *
 * <p>The drag source effect has the same API as the
 * <code>DragSourceAdapter</code> so that it can provide custom visual
 * feedback when a <code>DragSourceEvent</code> occurs.
 * </p>
 *
 * <p>Classes that wish to provide their own drag source effect such as
 * displaying a default source image during a drag can extend the <code>DragSourceEffect</code>
 * class, override the <code>DragSourceAdapter.dragStart</code> method and set
 * the field <code>DragSourceEvent.image</code> with their own image.
 * The image should be disposed when <code>DragSourceAdapter.dragFinished</code> is called.
 * </p>
 *
 * @see DragSourceAdapter
 * @see DragSourceEvent
 * @see <a href="http://www.eclipse.org/swt/">Sample code and further information</a>
 *
 * @since 3.3
 */
public class DragSourceEffect extends DragSourceAdapter {
	Control control = null;

	/**
	 * Creates a new <code>DragSourceEffect</code> to handle drag effect from the specified <code>Control</code>.
	 *
	 * @param control the <code>Control</code> that the user clicks on to initiate the drag
	 *
	 * @exception IllegalArgumentException <ul>
	 *    <li>ERROR_NULL_ARGUMENT - if the control is null</li>
	 * </ul>
	 */
	public DragSourceEffect(Control control) {
		if (control == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
		this.control = control;
	}

	/**
	 * Returns the Control which is registered for this DragSourceEffect.  This is the control that the
	 * user clicks in to initiate dragging.
	 *
	 * @return the Control which is registered for this DragSourceEffect
	 */
	public Control getControl() {
		return control;
	}
}
