com.sun.jna.examples.dnd
Class DragHandler
public abstract
class
DragHandler
extends Object
implements DragSourceListener, DragSourceMotionListener, DragGestureListener
Provides simplified drag handling for a component.
Usage:
int actions = DnDConstants.MOVE_OR_COPY;
Component component = ...;
DragHandler handler = new DragHandler(component, actions);
- Supports painting an arbitrary Icon with transparency to
represent the item being dragged (restricted to the java.awt.Window
of the drag source if the platform doesn't support drag images).
- Disallow starting a drag if the user requests an unsupported action.
- Adjusts the cursor on drags with no modifier for which the default action
is disallowed but where one or more non-default actions are allowed, e.g. a
drag (with no modifiers) to a target which supports "link" should change the
cursor to "link" (prior to 1.6, the JRE behavior is to display a
"not allowed" cursor, even though the action actually depends on how the
drop target responds).
The bug is fixed in java 1.6.
- Disallow drops to targets if the non-default (user-requested) action
is not supported by the target, e.g. the user requests a "copy" when the
target only supports "move". This is generally the responsibility of the
drop handler, which decides whether or not to accept a drag. The DragHandler
provides static modifier state information since the drop handler doesn't
have access to it.
NOTE: Fundamentally, the active action is determined by the drop handler
in DropTargetDragEvent#acceptDrag, but often client code
simply relies on DropTargetDragEvent#getDropAction.
Field Summary |
protected static int | COPY Convenience to reference DnDConstants#ACTION_COPY. |
static int | COPY_MASK Modifier mask for a user-requested copy. |
static float | DEFAULT_GHOST_ALPHA Default transparency for ghosting. |
static int | KEY_MASK Modifier mask for any user-requested action. |
protected static int | LINK Convenience to reference DnDConstants#ACTION_LINK. |
static int | LINK_MASK Modifier mask for a user-requested link. |
static Dimension | MAX_GHOST_SIZE Default maximum size for ghosted images. |
protected static int | MOVE Convenience to reference DnDConstants#ACTION_MOVE. |
static int | MOVE_MASK Modifier mask for a user-requested move. |
protected static int | NONE Convenience to reference DnDConstants#ACTION_NONE. |
static boolean | OSX |
static int | UNKNOWN_MODIFIERS DragHandler returns this value when the current
modifiers state is unknown. |
static Transferable | UNKNOWN_TRANSFERABLE DragHandler returns this value when
the current Transferable is unknown. |
Constructor Summary |
protected | DragHandler(Component dragSource, int actions) Enable drags from the given component, supporting the actions in
the given action mask. |
Method Summary |
static String | actionString(int action) |
protected int | adjustDropAction(DragSourceEvent ev) Pick a different drop action if the target doesn't support the current
one and there are no modifiers. |
protected boolean | canDrag(DragGestureEvent e) Override to control whether a drag is started. |
protected Image | createDragImage(GraphicsConfiguration gc, Icon icon) Create an image from the given icon. |
void | dragDropEnd(DragSourceDropEvent e) |
void | dragEnter(DragSourceDragEvent e) |
void | dragExit(DragSourceEvent e) |
void | dragGestureRecognized(DragGestureEvent e) Called when a user drag gesture is recognized. |
void | dragMouseMoved(DragSourceDragEvent e) |
void | dragOver(DragSourceDragEvent e) |
protected void | dragStarted(DragGestureEvent e) Override to perform any decoration of the target at the start of a drag,
if desired. |
void | dropActionChanged(DragSourceDragEvent e) |
protected int | getAcceptableDropAction(int targetActions) Returns the first available action supported by source and target. |
protected Cursor | getCursorForAction(int actualAction) |
protected Icon | getDragIcon(DragGestureEvent e, Point srcOffset) Override this to provide a custom image. |
protected int | getDropAction(DragSourceEvent ev) Get the currently requested drop action. |
static int | getModifiers() |
static Transferable | getTransferable(DropTargetEvent e) Used to communicate the current Transferable during a drag,
if available. |
protected abstract Transferable | getTransferable(DragGestureEvent e) Override to provide an appropriate Transferable representing
the data being dragged. |
protected Icon | scaleDragIcon(Icon icon, Point imageOffset) Reduce the size of the given drag icon, if appropriate. |
protected void | setModifiers(int mods) Update the modifiers hint. |
protected void | updateCursor(DragSourceEvent ev) |
protected static final int COPY
Convenience to reference DnDConstants#ACTION_COPY.
static final int COPY_MASK
Modifier mask for a user-requested copy.
public static final float DEFAULT_GHOST_ALPHA
Default transparency for ghosting.
static final int KEY_MASK
Modifier mask for any user-requested action.
protected static final int LINK
Convenience to reference DnDConstants#ACTION_LINK.
static final int LINK_MASK
Modifier mask for a user-requested link.
public static final Dimension MAX_GHOST_SIZE
Default maximum size for ghosted images.
protected static final int MOVE
Convenience to reference DnDConstants#ACTION_MOVE.
static final int MOVE_MASK
Modifier mask for a user-requested move.
protected static final int NONE
Convenience to reference DnDConstants#ACTION_NONE.
static final boolean OSX
public static final int UNKNOWN_MODIFIERS
DragHandler returns this value when the current
modifiers state is unknown.
public static final Transferable UNKNOWN_TRANSFERABLE
DragHandler returns this value when
the current Transferable is unknown.
protected DragHandler(Component dragSource, int actions)
Enable drags from the given component, supporting the actions in
the given action mask.
static String actionString(int action)
protected int adjustDropAction(DragSourceEvent ev)
Pick a different drop action if the target doesn't support the current
one and there are no modifiers.
protected boolean canDrag(DragGestureEvent e)
Override to control whether a drag is started. The default
implementation disallows the drag if the user is applying modifiers
and the user-requested action is not supported.
protected Image createDragImage(GraphicsConfiguration gc, Icon icon)
Create an image from the given icon. The image is provided to the
native handler if drag images are supported natively.
public void dragDropEnd(DragSourceDropEvent e)
public void dragEnter(DragSourceDragEvent e)
public void dragExit(DragSourceEvent e)
public void dragGestureRecognized(DragGestureEvent e)
Called when a user drag gesture is recognized. This method is
responsible for initiating the drag operation.
public void dragMouseMoved(DragSourceDragEvent e)
public void dragOver(DragSourceDragEvent e)
protected void dragStarted(DragGestureEvent e)
Override to perform any decoration of the target at the start of a drag,
if desired.
public void dropActionChanged(DragSourceDragEvent e)
protected int getAcceptableDropAction(int targetActions)
Returns the first available action supported by source and target.
protected Cursor getCursorForAction(int actualAction)
protected Icon getDragIcon(DragGestureEvent e, Point srcOffset)
Override this to provide a custom image. The Icon
returned by this method by default is
null
, which results
in no drag image.
Parameters: srcOffset set this to be the offset from the drag source
component's upper left corner to the image's upper left corner.
For example, when dragging a row from a list, the offset would be the
row's bounding rectangle's (x,y) coordinate.
The default value is (0,0), so if unchanged, the image is will
use the same origin as the drag source component.
protected int getDropAction(DragSourceEvent ev)
Get the currently requested drop action.
static int getModifiers()
public static Transferable getTransferable(DropTargetEvent e)
Used to communicate the current Transferable during a drag,
if available. Work around absence of access to the data when dragging
pre-1.5.
protected abstract Transferable getTransferable(DragGestureEvent e)
Override to provide an appropriate Transferable representing
the data being dragged.
protected Icon scaleDragIcon(Icon icon, Point imageOffset)
Reduce the size of the given drag icon, if appropriate. When using
a smaller drag icon, we also need to adjust the cursor offset within
the icon.
protected void setModifiers(int mods)
Update the modifiers hint.
protected void updateCursor(DragSourceEvent ev)
Copyright © 2007-2009 Timothy Wall. All Rights Reserved.