JNA API 4.0.0

com.sun.jna.platform.dnd
Class DropHandler

java.lang.Object
  extended by com.sun.jna.platform.dnd.DropHandler
All Implemented Interfaces:
DropTargetListener, EventListener

public abstract class DropHandler
extends Object
implements DropTargetListener

Provides simplified drop handling for a component. Usage:


 int actions = DnDConstants.MOVE_OR_COPY;
 Component component = ...;
 DropHandler handler = new DropHandler(component, actions);
 

The method getDropAction(DropTargetEvent) follows these steps to determine the appropriate action (if any). Override drop(DropTargetDropEvent, int) to handle the drop. You should invoke DropTargetDropEvent.dropComplete(boolean) as soon as the Transferable data is obtained, to avoid making the DnD operation look suspended.

Author:
twall
See Also:
DragHandler

Constructor Summary
DropHandler(Component c, int acceptedActions)
          Create a handler that allows the given set of actions.
DropHandler(Component c, int acceptedActions, DataFlavor[] acceptedFlavors)
          Enable handling of drops, indicating what actions and flavors are acceptable.
DropHandler(Component c, int acceptedActions, DataFlavor[] acceptedFlavors, DropTargetPainter painter)
          Enable handling of drops, indicating what actions and flavors are acceptable, and providing a painter for drop target feedback.
 
Method Summary
protected  int acceptOrReject(DropTargetDragEvent e)
          Accept or reject the drag represented by the given event.
protected  boolean canDrop(DropTargetEvent e, int action, Point location)
          Indicate whether the given drop action is acceptable at the given location.
 void dragEnter(DropTargetDragEvent e)
           
 void dragExit(DropTargetEvent e)
           
 void dragOver(DropTargetDragEvent e)
           
 void drop(DropTargetDropEvent e)
          Indicates the user has initiated a drop.
protected abstract  void drop(DropTargetDropEvent e, int action)
          Handle an incoming drop with the given action.
 void dropActionChanged(DropTargetDragEvent e)
           
protected  int getDropAction(DropTargetEvent e)
          Calculate the effective action.
protected  int getDropAction(DropTargetEvent e, int currentAction, int sourceActions, int acceptedActions)
           
protected  int getDropActionsForFlavors(DataFlavor[] dataFlavors)
          Indicate the actions available for the given list of data flavors.
protected  DropTarget getDropTarget()
           
 boolean isActive()
          Whether this drop target is active.
protected  boolean isSupported(DataFlavor[] flavors)
          Return whether any of the flavors in the given list are accepted.
protected  boolean modifiersActive(int dropAction)
          Returns whether there are key modifiers active , or false if they can't be determined.
protected  void paintDropTarget(DropTargetEvent e, int action, Point location)
          Update the appearance of the target component.
 void setActive(boolean active)
          Set whether this handler (and thus its drop target) will accept any drops.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DropHandler

public DropHandler(Component c,
                   int acceptedActions)
Create a handler that allows the given set of actions. If using this constructor, you will need to override isSupported(java.awt.datatransfer.DataFlavor[]) to indicate which data flavors are allowed.


DropHandler

public DropHandler(Component c,
                   int acceptedActions,
                   DataFlavor[] acceptedFlavors)
Enable handling of drops, indicating what actions and flavors are acceptable.

Parameters:
c - The component to receive drops
acceptedActions - Allowed actions for drops
acceptedFlavors - Allowed data flavors for drops
See Also:
isSupported(java.awt.datatransfer.DataFlavor[])

DropHandler

public DropHandler(Component c,
                   int acceptedActions,
                   DataFlavor[] acceptedFlavors,
                   DropTargetPainter painter)
Enable handling of drops, indicating what actions and flavors are acceptable, and providing a painter for drop target feedback.

Parameters:
c - The component to receive drops
acceptedActions - Allowed actions for drops
acceptedFlavors - Allowed data flavors for drops
painter - Painter to handle drop target feedback
See Also:
paintDropTarget(java.awt.dnd.DropTargetEvent, int, java.awt.Point)
Method Detail

getDropTarget

protected DropTarget getDropTarget()

isActive

public boolean isActive()
Whether this drop target is active.


setActive

public void setActive(boolean active)
Set whether this handler (and thus its drop target) will accept any drops.


getDropActionsForFlavors

protected int getDropActionsForFlavors(DataFlavor[] dataFlavors)
Indicate the actions available for the given list of data flavors. Override this method if the acceptable drop actions depend on the currently available DataFlavor. The default returns the accepted actions passed into the constructor.

Parameters:
dataFlavors - currently available flavors
See Also:
getDropAction(DropTargetEvent, int, int, int), canDrop(DropTargetEvent, int, Point)

getDropAction

protected int getDropAction(DropTargetEvent e)
Calculate the effective action. The default implementation checks whether any DataFlavors are supported, and if so, will change the current action from DnDConstants.ACTION_NONE to something in common between the source and destination. Refuse user-requested actions if they are not supported (rather than silently accepting a non-user-requested action, which is the Java's DnD default behavior). The drop action is forced to DnDConstants.ACTION_NONE if there is no supported data flavor.

See Also:
isSupported(DataFlavor[]), getDropActionsForFlavors(java.awt.datatransfer.DataFlavor[]), getDropAction(DropTargetEvent, int, int, int), canDrop(DropTargetEvent, int, Point)

getDropAction

protected int getDropAction(DropTargetEvent e,
                            int currentAction,
                            int sourceActions,
                            int acceptedActions)

modifiersActive

protected boolean modifiersActive(int dropAction)
Returns whether there are key modifiers active , or false if they can't be determined. We use the DragHandler hint, if available, or fall back to whether the drop action is other than the default (move).


acceptOrReject

protected int acceptOrReject(DropTargetDragEvent e)
Accept or reject the drag represented by the given event. Returns the action determined by getDropAction(DropTargetEvent).


dragEnter

public void dragEnter(DropTargetDragEvent e)
Specified by:
dragEnter in interface DropTargetListener

dragOver

public void dragOver(DropTargetDragEvent e)
Specified by:
dragOver in interface DropTargetListener

dragExit

public void dragExit(DropTargetEvent e)
Specified by:
dragExit in interface DropTargetListener

dropActionChanged

public void dropActionChanged(DropTargetDragEvent e)
Specified by:
dropActionChanged in interface DropTargetListener

drop

public void drop(DropTargetDropEvent e)
Indicates the user has initiated a drop. The default performs all standard drop validity checking and handling, then invokes drop(DropTargetDropEvent,int) if the drop looks acceptable.

Specified by:
drop in interface DropTargetListener

isSupported

protected boolean isSupported(DataFlavor[] flavors)
Return whether any of the flavors in the given list are accepted. The list is compared against the accepted list provided in the constructor.


paintDropTarget

protected void paintDropTarget(DropTargetEvent e,
                               int action,
                               Point location)
Update the appearance of the target component. Normally the decoration should be painted only if the event is an instance of DropTargetDragEvent with an action that is not DragHandler.NONE. Otherwise the decoration should be removed or hidden.

For an easy way to highlight the drop target, consider using a single instance of AbstractComponentDecorator and moving it according to the intended drop location.

Parameters:
e - The drop target event
action - The action for the drop
location - The intended drop location, or null if there is none

canDrop

protected boolean canDrop(DropTargetEvent e,
                          int action,
                          Point location)
Indicate whether the given drop action is acceptable at the given location. This method is the last check performed by getDropAction(DropTargetEvent). You may override this method to refuse drops on certain areas within the drop target component. The default always returns true.


drop

protected abstract void drop(DropTargetDropEvent e,
                             int action)
                      throws UnsupportedFlavorException,
                             IOException
Handle an incoming drop with the given action. The action passed in might be different from DropTargetDropEvent.getDropAction(), for instance, if there are no modifiers and the default action is not supported. Calling DropTargetDropEvent.dropComplete(boolean) is recommended as soon as the Transferable data is obtained; this allows the drag source to reset the cursor and any drag images which may be in effect.

Throws:
UnsupportedFlavorException
IOException

JNA API 4.0.0

Copyright © 2007-2013 Timothy Wall. All Rights Reserved.