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
Iconwith transparency to represent the item being dragged (restricted to theWindowof 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 intConvenience to referenceDnDConstants.ACTION_COPY.static final floatDefault transparency for ghosting.protected static final intConvenience to referenceDnDConstants.ACTION_LINK.static final DimensionDefault maximum size for ghosted images.protected static final intConvenience to referenceDnDConstants.ACTION_MOVE.protected static final intConvenience to referenceDnDConstants.ACTION_NONE.static final intgetModifiers()returns this value when the current modifiers state is unknown.static final TransferablegetTransferable(DropTargetDragEvent)returns this value when the currentTransferableis unknown. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedDragHandler(Component dragSource, int actions) Enable drags from the given component, supporting the actions in the given action mask. -
Method Summary
Modifier and TypeMethodDescriptionprotected intPick a different drop action if the target doesn't support the current one and there are no modifiers.protected booleanOverride to control whether a drag is started.protected ImagecreateDragImage(Icon icon) Create an image from the given icon.protected GhostedDragImagecreateGhostedDragImage(JComponent dragSource, Point screen, Icon dragIcon, Point dragIconOffset) Create a ghosted drag image.voidvoidvoidvoidCalled when a user drag gesture is recognized.voidvoidprotected voidOverride to perform any decoration of the target at the start of a drag, if desired.voidprotected intgetAcceptableDropAction(int targetActions) Returns the first available action supported by source and target.protected CursorgetCursorForAction(int actualAction) protected IcongetDragIcon(DragGestureEvent e, Point srcOffset) Override this to provide a custom image.protected intGet the currently requested drop action.protected abstract TransferableOverride to provide an appropriateTransferablerepresenting the data being dragged.static TransferableUsed to communicate the currentTransferableduring a drag, if available.protected IconscaleDragIcon(Icon dragIcon, Point offset) Reduce the size of the given drag icon, if appropriate.protected voidsetModifiers(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 currentTransferableis 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 currentTransferableduring 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 appropriateTransferablerepresenting the data being dragged. -
getDragIcon
Override this to provide a custom image. TheIconreturned 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:
dragGestureRecognizedin 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:
dragDropEndin interfaceDragSourceListener
-
dragEnter
- Specified by:
dragEnterin interfaceDragSourceListener
-
dragMouseMoved
- Specified by:
dragMouseMovedin interfaceDragSourceMotionListener
-
dragOver
- Specified by:
dragOverin interfaceDragSourceListener
-
dragExit
- Specified by:
dragExitin interfaceDragSourceListener
-
dropActionChanged
- Specified by:
dropActionChangedin interfaceDragSourceListener
-