java.lang.Object
furbelow.DragHandler
- All Implemented Interfaces:
DragGestureListener
,DragSourceListener
,DragSourceMotionListener
,EventListener
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 theWindow
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.
DropTargetDragEvent.acceptDrag(int)
, but often client code
simply relies on DropTargetDragEvent.getDropAction()
.-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final int
Convenience to referenceDnDConstants.ACTION_COPY
.static final float
Default transparency for ghosting.protected static final int
Convenience to referenceDnDConstants.ACTION_LINK
.static final Dimension
Default maximum size for ghosted images.protected static final int
Convenience to referenceDnDConstants.ACTION_MOVE
.protected static final int
Convenience to referenceDnDConstants.ACTION_NONE
.static final int
getModifiers()
returns this value when the current modifiers state is unknown.static final Transferable
getTransferable(DropTargetDragEvent)
returns this value when the currentTransferable
is unknown. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
DragHandler
(Component dragSource, int actions) Enable drags from the given component, supporting the actions in the given action mask. -
Method Summary
Modifier and TypeMethodDescriptionprotected int
Pick a different drop action if the target doesn't support the current one and there are no modifiers.protected boolean
Override to control whether a drag is started.protected Image
createDragImage
(Icon icon) Create an image from the given icon.protected GhostedDragImage
createGhostedDragImage
(JComponent dragSource, Point screen, Icon dragIcon, Point dragIconOffset) Create a ghosted drag image.void
void
void
void
Called when a user drag gesture is recognized.void
void
protected void
Override to perform any decoration of the target at the start of a drag, if desired.void
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
Get the currently requested drop action.protected abstract Transferable
Override to provide an appropriateTransferable
representing the data being dragged.static Transferable
Used to communicate the currentTransferable
during a drag, if available.protected Icon
scaleDragIcon
(Icon dragIcon, Point offset) Reduce the size of the given drag icon, if appropriate.protected void
setModifiers
(int mods) Update the modifiers hint.protected void
-
Field Details
-
MAX_GHOST_SIZE
Default maximum size for ghosted images. -
DEFAULT_GHOST_ALPHA
public static final float DEFAULT_GHOST_ALPHADefault transparency for ghosting.- See Also:
-
UNKNOWN_MODIFIERS
public static final int UNKNOWN_MODIFIERSgetModifiers()
returns this value when the current modifiers state is unknown.- See Also:
-
UNKNOWN_TRANSFERABLE
getTransferable(DropTargetDragEvent)
returns this value when the currentTransferable
is unknown. -
MOVE
protected static final int MOVEConvenience to referenceDnDConstants.ACTION_MOVE
.- See Also:
-
COPY
protected static final int COPYConvenience to referenceDnDConstants.ACTION_COPY
.- See Also:
-
LINK
protected static final int LINKConvenience to referenceDnDConstants.ACTION_LINK
.- See Also:
-
NONE
protected static final int NONEConvenience to referenceDnDConstants.ACTION_NONE
.- See Also:
-
-
Constructor Details
-
DragHandler
Enable drags from the given component, supporting the actions in the given action mask.
-
-
Method Details
-
getTransferable
Used to communicate the currentTransferable
during a drag, if available. Work around absence of access to the data when dragging pre-1.5. -
canDrag
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. -
setModifiers
protected void setModifiers(int mods) Update the modifiers hint. -
getTransferable
Override to provide an appropriateTransferable
representing the data being dragged. -
getDragIcon
Override this to provide a custom image. TheIcon
returned by this method by default isnull
, 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.
-
dragStarted
Override to perform any decoration of the target at the start of a drag, if desired. -
dragGestureRecognized
Called when a user drag gesture is recognized. This method is responsible for initiating the drag operation.- Specified by:
dragGestureRecognized
in interfaceDragGestureListener
-
scaleDragIcon
Reduce the size of the given drag icon, if appropriate. When using a smaller drag icon, we also need to adjust the offset. -
createGhostedDragImage
protected GhostedDragImage createGhostedDragImage(JComponent dragSource, Point screen, Icon dragIcon, Point dragIconOffset) Create a ghosted drag image. -
createDragImage
Create an image from the given icon. The image is provided to the native handler if drag images are supported natively. -
getCursorForAction
-
getAcceptableDropAction
protected int getAcceptableDropAction(int targetActions) Returns the first available action supported by source and target. -
getDropAction
Get the currently requested drop action. -
adjustDropAction
Pick a different drop action if the target doesn't support the current one and there are no modifiers. -
updateCursor
-
dragDropEnd
- Specified by:
dragDropEnd
in interfaceDragSourceListener
-
dragEnter
- Specified by:
dragEnter
in interfaceDragSourceListener
-
dragMouseMoved
- Specified by:
dragMouseMoved
in interfaceDragSourceMotionListener
-
dragOver
- Specified by:
dragOver
in interfaceDragSourceListener
-
dragExit
- Specified by:
dragExit
in interfaceDragSourceListener
-
dropActionChanged
- Specified by:
dropActionChanged
in interfaceDragSourceListener
-