# Class DragSourceDragEvent

java.lang.Object
java.util.EventObject
java.awt.dnd.DragSourceEvent
java.awt.dnd.DragSourceDragEvent

All Implemented Interfaces:
  `Serializable`

public class DragSourceDragEvent extends DragSourceEvent
The `DragSourceDragEvent` is delivered from the `DragSourceContextPeer`, via the `DragSourceContext`, to the `DragSourceListener` registered with that `DragSourceContext` and with its associated `DragSource`.

The `DragSourceDragEvent` reports the target drop action and the user drop action that reflect the current state of the drag operation.

Target drop action is one of `DnDConstants` that represents the drop action selected by the current drop target if this drop action is supported by the drag source or `DnDConstants.ACTION_NONE` if this drop action is not supported by the drag source.

User drop action depends on the drop actions supported by the drag source and the drop action selected by the user. The user can select a drop action by pressing modifier keys during the drag operation:

      Ctrl + Shift -> ACTION_LINK
      Ctrl         -> ACTION_COPY
      Shift        -> ACTION_MOVE

If the user selects a drop action, the user drop action is one of `DnDConstants` that represents the selected drop action if this drop action is supported by the drag source or `DnDConstants.ACTION_NONE` if this drop action is not supported by the drag source.

If the user doesn't select a drop action, the set of `DnDConstants` that represents the set of drop actions supported by the drag source is searched for `DnDConstants.ACTION_MOVE`, then for `DnDConstants.ACTION_COPY`, then for `DnDConstants.ACTION_LINK` and the user drop action is the first constant found. If no constant is found the user drop action is `DnDConstants.ACTION_NONE`.

Since:
  1.2
See Also:
  - Serialized Form

- ## Field Summary

  ### Fields declared in class EventObject

  `source`
  Modifier and Type
  Field
  Description
  `protected Object`
  `source`
  The object on which the Event initially occurred.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `DragSourceDragEvent(DragSourceContext dsc, int dropAction, int action, int modifiers)`
  Constructs a `DragSourceDragEvent`.
  `DragSourceDragEvent(DragSourceContext dsc, int dropAction, int action, int modifiers, int x, int y)`
  Constructs a `DragSourceDragEvent` given the specified `DragSourceContext`, user drop action, target drop action, modifiers and coordinates.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `int`
  `getDropAction()`
  This method returns the logical intersection of the target drop action and the set of drop actions supported by the drag source.
  `int`
  `getGestureModifiers()`
  This method returns an `int` representing the current state of the input device modifiers associated with the user's gesture.
  `int`
  `getGestureModifiersEx()`
  This method returns an `int` representing the current state of the input device extended modifiers associated with the user's gesture.
  `int`
  `getTargetActions()`
  This method returns the target drop action.
  `int`
  `getUserAction()`
  This method returns the user drop action.

  ### Methods declared in class DragSourceEvent

  `getDragSourceContext, getLocation, getX, getY`
  Modifier and Type
  Method
  Description
  `DragSourceContext`
  `getDragSourceContext()`
  This method returns the `DragSourceContext` that originated the event.
  `Point`
  `getLocation()`
  This method returns a `Point` indicating the cursor location in screen coordinates at the moment this event occurred, or `null` if the cursor location is not specified for this event.
  `int`
  `getX()`
  This method returns the horizontal coordinate of the cursor location in screen coordinates at the moment this event occurred, or zero if the cursor location is not specified for this event.
  `int`
  `getY()`
  This method returns the vertical coordinate of the cursor location in screen coordinates at the moment this event occurred, or zero if the cursor location is not specified for this event.

  ### Methods declared in class EventObject

  `getSource, toString`
  Modifier and Type
  Method
  Description
  `Object`
  `getSource()`
  The object on which the Event initially occurred.
  `String`
  `toString()`
  Returns a String representation of this EventObject.

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  Creates and returns a copy of this object.
  `boolean`
  `equals(Object obj)`
  Indicates whether some other object is "equal to" this one.
  `protected void`
  `finalize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Finalization is deprecated and subject to removal in a future release.
  `final Class<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `int`
  `hashCode()`
  Returns a hash code value for this object.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `final void`
  `wait()`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
  `final void`
  `wait(long timeoutMillis)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  `final void`
  `wait(long timeoutMillis, int nanos)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

- ## Constructor Details

  - ### DragSourceDragEvent

    public DragSourceDragEvent(DragSourceContext dsc, int dropAction, int action, int modifiers)
    Constructs a `DragSourceDragEvent`. This class is typically instantiated by the `DragSourceContextPeer` rather than directly by client code. The coordinates for this `DragSourceDragEvent` are not specified, so `getLocation` will return `null` for this event.

    The arguments `dropAction` and `action` should be one of `DnDConstants` that represents a single action. The argument `modifiers` should be either a bitwise mask of old `java.awt.event.InputEvent.*_MASK` constants or a bitwise mask of extended `java.awt.event.InputEvent.*_DOWN_MASK` constants. This constructor does not throw any exception for invalid `dropAction`, `action` and `modifiers`.

    Parameters:
      `dsc` - the `DragSourceContext` that is to manage notifications for this event.
      `dropAction` - the user drop action.
      `action` - the target drop action.
      `modifiers` - the modifier keys down during event (shift, ctrl, alt, meta) Either extended _DOWN_MASK or old _MASK modifiers should be used, but both models should not be mixed in one event. Use of the extended modifiers is preferred.
    Throws:
      `IllegalArgumentException` - if `dsc` is `null`.
    See Also:
      - `InputEvent`
      - `DragSourceEvent.getLocation()`

  - ### DragSourceDragEvent

    public DragSourceDragEvent(DragSourceContext dsc, int dropAction, int action, int modifiers, int x, int y)
    Constructs a `DragSourceDragEvent` given the specified `DragSourceContext`, user drop action, target drop action, modifiers and coordinates.

    The arguments `dropAction` and `action` should be one of `DnDConstants` that represents a single action. The argument `modifiers` should be either a bitwise mask of old `java.awt.event.InputEvent.*_MASK` constants or a bitwise mask of extended `java.awt.event.InputEvent.*_DOWN_MASK` constants. This constructor does not throw any exception for invalid `dropAction`, `action` and `modifiers`.

    Parameters:
      `dsc` - the `DragSourceContext` associated with this event.
      `dropAction` - the user drop action.
      `action` - the target drop action.
      `modifiers` - the modifier keys down during event (shift, ctrl, alt, meta) Either extended _DOWN_MASK or old _MASK modifiers should be used, but both models should not be mixed in one event. Use of the extended modifiers is preferred.
      `x` - the horizontal coordinate for the cursor location
      `y` - the vertical coordinate for the cursor location
    Throws:
      `IllegalArgumentException` - if `dsc` is `null`.
    Since:
      1.4
    See Also:
      - `InputEvent`

- ## Method Details

  - ### getTargetActions

    public int getTargetActions()
    This method returns the target drop action.
    Returns:
      the target drop action.

  - ### getGestureModifiers

    public int getGestureModifiers()
    This method returns an `int` representing the current state of the input device modifiers associated with the user's gesture. Typically these would be mouse buttons or keyboard modifiers.

    If the `modifiers` passed to the constructor are invalid, this method returns them unchanged.

    Returns:
      the current state of the input device modifiers

  - ### getGestureModifiersEx

    public int getGestureModifiersEx()
    This method returns an `int` representing the current state of the input device extended modifiers associated with the user's gesture. See `InputEvent.getModifiersEx()`

    If the `modifiers` passed to the constructor are invalid, this method returns them unchanged.

    Returns:
      the current state of the input device extended modifiers
    Since:
      1.4

  - ### getUserAction

    public int getUserAction()
    This method returns the user drop action.
    Returns:
      the user drop action.

  - ### getDropAction

    public int getDropAction()
    This method returns the logical intersection of the target drop action and the set of drop actions supported by the drag source.
    Returns:
      the logical intersection of the target drop action and the set of drop actions supported by the drag source.