public class DragSourceContext extends Objectimplements DragSourceListener , DragSourceMotionListener , Serializable
DragSourceContext class is responsible for managing the initiator side of the Drag and Drop protocol. In particular, it is responsible for managing drag event notifications to the
DragSourceListeners and
DragSourceMotionListeners, and providing the
Transferable representing the source data for the drag operation.
Note that the DragSourceContext itself implements the DragSourceListener and DragSourceMotionListener interfaces. This is to allow the platform peer (the DragSourceContextPeer instance) created by the DragSource to notify the DragSourceContext of state changes in the ongoing operation. This allows the DragSourceContext object to interpose itself between the platform and the listeners provided by the initiator of the drag operation.
By default, DragSourceContext sets the cursor as appropriate for the current state of the drag and drop operation. For example, if the user has chosen the move action, and the pointer is over a target that accepts the move action, the default move cursor is shown. When the pointer is over an area that does not accept the transfer, the default "no drop" cursor is shown.
This default handling mechanism is disabled when a custom cursor is set by the setCursor(java.awt.Cursor) method. When the default handling is disabled, it becomes the responsibility of the developer to keep the cursor up to date, by listening to the DragSource events and calling the setCursor() method. Alternatively, you can provide custom cursor behavior by providing custom implementations of the DragSource and the DragSourceContext classes.
DragSourceListener,
DragSourceMotionListener,
DnDConstants,
Serialized Form
| Modifier and Type | Field and Description |
|---|---|
protected static int |
CHANGED
An
int used by updateCurrentCursor() indicating that the user operation has changed.
|
protected static int |
DEFAULT
An
int used by updateCurrentCursor() indicating that the
Cursor should change to the default (no drop)
Cursor.
|
protected static int |
ENTER
An
int used by updateCurrentCursor() indicating that the
Cursor has entered a
DropTarget.
|
protected static int |
OVER
An
int used by updateCurrentCursor() indicating that the
Cursor is over a
DropTarget.
|
| Constructor and Description |
|---|
DragSourceContext(java
Called from
DragSource, this constructor creates a new
DragSourceContext given the
DragSourceContextPeer for this Drag, the
DragGestureEvent that triggered the Drag, the initial
Cursor to use for the Drag, an (optional)
Image to display while the Drag is taking place, the offset of the
Image origin from the hotspot at the instant of the triggering event, the
Transferable subject data, and the
DragSourceListener to use during the Drag and Drop operation.
|
| Modifier and Type | Method and Description |
|---|---|
void |
addDragSourceListener(DragSourceListener
Add a
DragSourceListener to this
DragSourceContext if one has not already been added.
|
void |
dragDropEnd(DragSourceDropEvent
Calls
dragDropEnd on the
DragSourceListeners registered with this
DragSourceContext and with the associated
DragSource, and passes them the specified
DragSourceDropEvent.
|
void |
dragEnter(DragSourceDragEvent
Calls
dragEnter on the
DragSourceListeners registered with this
DragSourceContext and with the associated
DragSource, and passes them the specified
DragSourceDragEvent.
|
void |
dragExit(DragSourceEvent
Calls
dragExit on the
DragSourceListeners registered with this
DragSourceContext and with the associated
DragSource, and passes them the specified
DragSourceEvent.
|
void |
dragMouseMoved(DragSourceDragEvent
Calls
dragMouseMoved on the
DragSourceMotionListeners registered with the
DragSource associated with this
DragSourceContext, and them passes the specified
DragSourceDragEvent.
|
void |
dragOver(DragSourceDragEvent
Calls
dragOver on the
DragSourceListeners registered with this
DragSourceContext and with the associated
DragSource, and passes them the specified
DragSourceDragEvent.
|
void |
dropActionChanged(DragSourceDragEvent
Calls
dropActionChanged on the
DragSourceListeners registered with this
DragSourceContext and with the associated
DragSource, and passes them the specified
DragSourceDragEvent.
|
Component |
getComponent()
Returns the
Component associated with this
DragSourceContext.
|
Cursor |
getCursor()
Returns the current drag
Cursor.
|
DragSource |
getDragSource()
Returns the
DragSource that instantiated this
DragSourceContext.
|
int |
getSourceActions()
Returns a bitwise mask of
DnDConstants that represent the set of drop actions supported by the drag source for the drag operation associated with this
DragSourceContext.
|
Transferable |
getTransferable()
Returns the
Transferable associated with this
DragSourceContext.
|
DragGestureEvent |
getTrigger()
Returns the
DragGestureEvent that initially triggered the drag.
|
void |
removeDragSourceListener(DragSourceListener
Removes the specified
DragSourceListener from this
DragSourceContext.
|
void |
setCursor(Cursor
Sets the cursor for this drag operation to the specified
Cursor.
|
void |
transferablesFlavorsChanged()
Notifies the peer that the
Transferable's
DataFlavors have changed.
|
protected void |
updateCurrentCursor(int sourceAct, int targetAct, int status)
If the default drag cursor behavior is active, this method sets the default drag cursor for the specified actions supported by the drag source, the drop target action, and status, otherwise this method does nothing.
|
protected static final int DEFAULT
int used by updateCurrentCursor() indicating that the
Cursor should change to the default (no drop)
Cursor.
protected static final int ENTER
int used by updateCurrentCursor() indicating that the
Cursor has entered a
DropTarget.
protected static final int OVER
int used by updateCurrentCursor() indicating that the
Cursor is over a
DropTarget.
protected static final int CHANGED
int used by updateCurrentCursor() indicating that the user operation has changed.
public DragSourceContext(java.awt .dnd .peer .DragSourceContextPeer dscp, DragGestureEvent trigger, Cursor dragCursor, Image dragImage, Point offset, Transferable t, DragSourceListener dsl)
DragSource, this constructor creates a new
DragSourceContext given the
DragSourceContextPeer for this Drag, the
DragGestureEvent that triggered the Drag, the initial
Cursor to use for the Drag, an (optional)
Image to display while the Drag is taking place, the offset of the
Image origin from the hotspot at the instant of the triggering event, the
Transferable subject data, and the
DragSourceListener to use during the Drag and Drop operation.
DragSourceContextPeer is
null
NullPointerException is thrown.
DragGestureEvent is
null
NullPointerException is thrown.
Cursor is
null no exception is thrown and the default drag cursor behavior is activated for this drag operation.
Image is
null no exception is thrown.
Image is not
null and the offset is
null
NullPointerException is thrown.
Transferable is
null
NullPointerException is thrown.
DragSourceListener is
null no exception is thrown.
dscp - the
DragSourceContextPeer for this drag
trigger - the triggering event
dragCursor - the initial
Cursor for this drag operation or
null for the default cursor handling; see
class level documentation for more details on the cursor handling mechanism during drag and drop
dragImage - the
Image to drag (or
null)
offset - the offset of the image origin from the hotspot at the instant of the triggering event
t - the
Transferable
dsl - the
DragSourceListener
IllegalArgumentException - if the
Component associated with the trigger event is
null.
IllegalArgumentException - if the
DragSource for the trigger event is
null.
IllegalArgumentException - if the drag action for the trigger event is
DnDConstants.ACTION_NONE.
IllegalArgumentException - if the source actions for the
DragGestureRecognizer associated with the trigger event are equal to
DnDConstants.ACTION_NONE.
NullPointerException - if dscp, trigger, or t are null, or if dragImage is non-null and offset is null
public DragSourcegetDragSource()
DragSource that instantiated this
DragSourceContext.
DragSource that instantiated this
DragSourceContext
public ComponentgetComponent()
Component associated with this
DragSourceContext.
Component that started the drag
public DragGestureEventgetTrigger()
DragGestureEvent that initially triggered the drag.
public int getSourceActions()
DnDConstants that represent the set of drop actions supported by the drag source for the drag operation associated with this
DragSourceContext.
public void setCursor(Cursorc)
Cursor. If the specified
Cursor is
null, the default drag cursor behavior is activated for this drag operation, otherwise it is deactivated.
c - the initial
Cursor for this drag operation, or
null for the default cursor handling; see
class level documentation for more details on the cursor handling during drag and drop
public CursorgetCursor()
Cursor.
Cursor
public void addDragSourceListener(DragSourceListenerdsl) throws TooManyListenersException
DragSourceListener to this
DragSourceContext if one has not already been added. If a
DragSourceListener already exists, this method throws a
TooManyListenersException.
dsl - the
DragSourceListener to add. Note that while
null is not prohibited, it is not acceptable as a parameter.
TooManyListenersException - if a
DragSourceListener has already been added
public void removeDragSourceListener(DragSourceListenerdsl)
DragSourceListener from this
DragSourceContext.
dsl - the
DragSourceListener to remove; note that while
null is not prohibited, it is not acceptable as a parameter
public void transferablesFlavorsChanged()
Transferable's
DataFlavors have changed.
public void dragEnter(DragSourceDragEventdsde)
dragEnter on the
DragSourceListeners registered with this
DragSourceContext and with the associated
DragSource, and passes them the specified
DragSourceDragEvent.
dragEnter in interface
DragSourceListener
dsde - the
DragSourceDragEvent
public void dragOver(DragSourceDragEventdsde)
dragOver on the
DragSourceListeners registered with this
DragSourceContext and with the associated
DragSource, and passes them the specified
DragSourceDragEvent.
dragOver in interface
DragSourceListener
dsde - the
DragSourceDragEvent
public void dragExit(DragSourceEventdse)
dragExit on the
DragSourceListeners registered with this
DragSourceContext and with the associated
DragSource, and passes them the specified
DragSourceEvent.
dragExit in interface
DragSourceListener
dse - the
DragSourceEvent
public void dropActionChanged(DragSourceDragEventdsde)
dropActionChanged on the
DragSourceListeners registered with this
DragSourceContext and with the associated
DragSource, and passes them the specified
DragSourceDragEvent.
dropActionChanged in interface
DragSourceListener
dsde - the
DragSourceDragEvent
public void dragDropEnd(DragSourceDropEventdsde)
dragDropEnd on the
DragSourceListeners registered with this
DragSourceContext and with the associated
DragSource, and passes them the specified
DragSourceDropEvent.
dragDropEnd in interface
DragSourceListener
dsde - the
DragSourceDropEvent
public void dragMouseMoved(DragSourceDragEventdsde)
dragMouseMoved on the
DragSourceMotionListeners registered with the
DragSource associated with this
DragSourceContext, and them passes the specified
DragSourceDragEvent.
dragMouseMoved in interface
DragSourceMotionListener
dsde - the
DragSourceDragEvent
public TransferablegetTransferable()
Transferable associated with this
DragSourceContext.
Transferable
protected void updateCurrentCursor(int sourceAct,
int targetAct,
int status)
sourceAct - the actions supported by the drag source
targetAct - the drop target action
status - one of the fields
DEFAULT,
ENTER,
OVER,
CHANGED