/******************************************************************************* * Copyright (c) 2000, 2009, 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.swt.dnd; import java.awt.datatransfer.Clipboard; import java.awt.dnd.DragSourceListener; import java.awt.dnd.DropTargetListener; import org.eclipse.swt.SWT; import org.eclipse.swt.SWTError; import org.eclipse.swt.SWTException; /** * Class DND contains all the constants used in defining a DragSource or a * DropTarget. * * @see <a href="http://www.eclipse.org/swt/">Sample code and further * information</a> */ public class DND { /** * The transfer mechanism for data that is being cut and then pasted or * copied and then pasted (value is 1). * * @see Clipboard * * @since 3.1 */ public final static int CLIPBOARD = 1 << 0; /** * The transfer mechanism for clients that use the selection mechanism * (value is 2). * * @see Clipboard * * @since 3.1 */ public final static int SELECTION_CLIPBOARD = 1 << 1; /** * Drag and Drop Operation: no drag/drop operation performed (value is 0). */ public final static int DROP_NONE = 0; /** * Drag and Drop Operation: a copy of the data in the drag source is added * to the drop target (value is 1 << 0). */ public final static int DROP_COPY = 1 << 0; /** * Drag and Drop Operation: a copy of the data is added to the drop target * and the original data is removed from the drag source (value is 1 * << 1). */ public final static int DROP_MOVE = 1 << 1; /** * Drag and Drop Operation: the drop target makes a link to the data in the * drag source (value is 1 << 2). */ public final static int DROP_LINK = 1 << 2; /** * Drag and Drop Operation: the drop target moves the data and the drag * source removes any references to the data and updates its display. This * is not available on all platforms and is only used when a non-SWT * application is the drop target. In this case, the SWT drag source is * informed in the dragFinished event that the drop target has moved the * data. (value is 1 << 3). * * @see DragSourceListener#dragFinished */ public final static int DROP_TARGET_MOVE = 1 << 3; /** * Drag and Drop Operation: During a dragEnter event or a * dragOperationChanged, if no modifier keys are pressed, the operation is * set to DROP_DEFAULT. The application can choose what the default * operation should be by setting a new value in the operation field. If no * value is choosen, the default operation for the platform will be selected * (value is 1 << 4). * * @see DropTargetListener#dragEnter * @see DropTargetListener#dragOperationChanged * @since 2.0 */ public final static int DROP_DEFAULT = 1 << 4; /** * DragSource Event: the drop has successfully completed or has been * terminated (such as hitting the ESC key); perform cleanup such as * removing data on a move operation (value is 2000). */ public static final int DragEnd = 2000; /** * DragSource Event: the data to be dropped is required from the drag source * (value is 2001). */ public static final int DragSetData = 2001; /** * DropTarget Event: the cursor has entered the drop target boundaries * (value is 2002). */ public static final int DragEnter = 2002; /** * DropTarget Event: the cursor has left the drop target boundaries OR the * drop operation has been cancelled (such as by hitting ECS) OR the drop is * about to happen (user has released the mouse button over this target) * (value is 2003). */ public static final int DragLeave = 2003; /** * DropTarget Event: the cursor is over the drop target (value is 2004). */ public static final int DragOver = 2004; /** * DropTarget Event: the operation being performed has changed usually due * to the user changing the selected modifier keys while dragging (value is * 2005). */ public static final int DragOperationChanged = 2005; /** * DropTarget Event: the data has been dropped (value is 2006). */ public static final int Drop = 2006; /** * DropTarget Event: the drop target is given a last chance to modify the * drop (value is 2007). */ public static final int DropAccept = 2007; /** * DragSource Event: a drag is about to begin (value is 2008). */ public static final int DragStart = 2008; /** * DropTarget drag under effect: No effect is shown (value is 0). */ public static final int FEEDBACK_NONE = 0; /** * DropTarget drag under effect: The item under the cursor is selected; * applies to tables and trees (value is 1). */ public static final int FEEDBACK_SELECT = 1; /** * DropTarget drag under effect: An insertion mark is shown before the item * under the cursor; applies to tables and trees (value is 2). */ public static final int FEEDBACK_INSERT_BEFORE = 2; /** * DropTarget drag under effect: An insertion mark is shown after the item * under the cursor; applies to tables and trees (value is 4). */ public static final int FEEDBACK_INSERT_AFTER = 4; /** * DropTarget drag under effect: The widget is scrolled up or down to allow * the user to drop on items that are not currently visible; applies to * tables and trees (value is 8). */ public static final int FEEDBACK_SCROLL = 8; /** * DropTarget drag under effect: The item currently under the cursor is * expanded to allow the user to select a drop target from a sub item; * applies to trees (value is 16). */ public static final int FEEDBACK_EXPAND = 16; /** * Error code: drag source can not be initialized (value is 2000). */ public static final int ERROR_CANNOT_INIT_DRAG = 2000; /** * Error code: drop target cannot be initialized (value is 2001). */ public static final int ERROR_CANNOT_INIT_DROP = 2001; /** * Error code: Data can not be set on system clipboard (value is 2002). */ public static final int ERROR_CANNOT_SET_CLIPBOARD = 2002; /** * Error code: Data does not have correct format for type (value is 2003). * * @since 3.1 */ public static final int ERROR_INVALID_DATA = 2003; /** * DropTarget Key: The string constant for looking up the drop target for a * control using <code>getData(String)</code>. When a drop target is created * for a control, it is stored as a property in the control using * <code>setData(String, Object)</code>. * * @since 3.4 */ public static final String DROP_TARGET_KEY = "DropTarget"; //$NON-NLS-1$ /** * DragSource Key: The string constant for looking up the drag source for a * control using <code>getData(String)</code>. When a drag source is created * for a control, it is stored as a property in the control using * <code>setData(String, Object)</code>. * * @since 3.4 */ public static final String DRAG_SOURCE_KEY = "DragSource"; //$NON-NLS-1$ static final String INIT_DRAG_MESSAGE = "Cannot initialize Drag"; //$NON-NLS-1$ static final String INIT_DROP_MESSAGE = "Cannot initialize Drop"; //$NON-NLS-1$ static final String CANNOT_SET_CLIPBOARD_MESSAGE = "Cannot set data in clipboard"; //$NON-NLS-1$ static final String INVALID_DATA_MESSAGE = "Data does not have correct format for type"; //$NON-NLS-1$ /** * Throws an appropriate exception based on the passed in error code. * * @param code * the DND error code */ public static void error(int code) { error(code, 0); } /** * Throws an appropriate exception based on the passed in error code. The * <code>hresult</code> argument should be either 0, or the platform * specific error code. * <p> * In DND, errors are reported by throwing one of three exceptions: * <dl> * <dd>java.lang.IllegalArgumentException</dd> * <dt>thrown whenever one of the API methods is invoked with an illegal * argument</dt> * <dd>org.eclipse.swt.SWTException (extends java.lang.RuntimeException)</dd> * <dt>thrown whenever a recoverable error happens internally in SWT</dt> * <dd>org.eclipse.swt.SWTError (extends java.lang.Error)</dd> * <dt>thrown whenever a <b>non-recoverable</b> error happens internally in * SWT</dt> * </dl> * This method provides the logic which maps between error codes and one of * the above exceptions. * </p> * * @param code * the DND error code. * @param hresult * the platform specific error code. * * @see SWTError * @see SWTException * @see IllegalArgumentException */ public static void error(int code, int hresult) { switch (code) { /* OS Failure/Limit (fatal, may occur only on some platforms) */ case DND.ERROR_CANNOT_INIT_DRAG: { String msg = DND.INIT_DRAG_MESSAGE; if (hresult != 0) msg += " result = " + hresult; //$NON-NLS-1$ throw new SWTError(code, msg); } case DND.ERROR_CANNOT_INIT_DROP: { String msg = DND.INIT_DROP_MESSAGE; if (hresult != 0) msg += " result = " + hresult; //$NON-NLS-1$ throw new SWTError(code, msg); } case DND.ERROR_CANNOT_SET_CLIPBOARD: { String msg = DND.CANNOT_SET_CLIPBOARD_MESSAGE; if (hresult != 0) msg += " result = " + hresult; //$NON-NLS-1$ throw new SWTError(code, msg); } case DND.ERROR_INVALID_DATA: { String msg = DND.INVALID_DATA_MESSAGE; if (hresult != 0) msg += " result = " + hresult; //$NON-NLS-1$ throw new SWTException(code, msg); } } /* Unknown/Undefined Error */ SWT.error(code); } }