Klasse DropHandler

java.lang.Object
com.sun.jna.platform.dnd.DropHandler
Alle implementierten Schnittstellen:
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);
 
  • Accept drops where the action is the default (i.e. no modifiers) but the intersection of source and target actions is not the default. Doing so allows the source to adjust the cursor appropriately.
  • Refuse drops where the user modifiers request an action that is not supported (this works for all cases except when the drag source is not a DragHandler and the user explicitly requests a MOVE operation; this is indistinguishable from a drag with no modifiers unless we have access to the key modifiers, which DragHandler provides).
  • Drops may be refused based on data flavor, location, intended drop action, or any combination of those, by overriding canDrop(java.awt.dnd.DropTargetEvent, int, java.awt.Point).
  • Custom decoration of the drop area may be performed in paintDropTarget(DropTargetEvent, int, Point) or by providing a DropTargetPainter.
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.
Autor:
twall
Siehe auch:
  • Konstruktordetails

    • 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.
      Parameter:
      c - target component
      acceptedActions - accepted actions
    • DropHandler

      public DropHandler(Component c, int acceptedActions, DataFlavor[] acceptedFlavors)
      Enable handling of drops, indicating what actions and flavors are acceptable.
      Parameter:
      c - The component to receive drops
      acceptedActions - Allowed actions for drops
      acceptedFlavors - Allowed data flavors for drops
      Siehe auch:
    • 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.
      Parameter:
      c - The component to receive drops
      acceptedActions - Allowed actions for drops
      acceptedFlavors - Allowed data flavors for drops
      painter - Painter to handle drop target feedback
      Siehe auch:
  • Methodendetails

    • getDropTarget

      protected DropTarget getDropTarget()
    • isActive

      public boolean isActive()
      Gibt zurück:
      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.
      Parameter:
      active - whether this handler should accept 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.
      Parameter:
      dataFlavors - currently available flavors
      Gibt zurück:
      currently acceptable actions.
      Siehe auch:
    • 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.
      Parameter:
      e - DropTargetEvent
      Gibt zurück:
      effective drop action
      Siehe auch:
    • 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).
      Parameter:
      dropAction - requested action.
      Gibt zurück:
      whether any modifiers are active.
    • acceptOrReject

      protected int acceptOrReject(DropTargetDragEvent e)
      Accept or reject the drag represented by the given event. Returns the action determined by getDropAction(DropTargetEvent).
      Parameter:
      e - event
      Gibt zurück:
      resulting action
    • dragEnter

      public void dragEnter(DropTargetDragEvent e)
      Angegeben von:
      dragEnter in Schnittstelle DropTargetListener
    • dragOver

      public void dragOver(DropTargetDragEvent e)
      Angegeben von:
      dragOver in Schnittstelle DropTargetListener
    • dragExit

      public void dragExit(DropTargetEvent e)
      Angegeben von:
      dragExit in Schnittstelle DropTargetListener
    • dropActionChanged

      public void dropActionChanged(DropTargetDragEvent e)
      Angegeben von:
      dropActionChanged in Schnittstelle 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.
      Angegeben von:
      drop in Schnittstelle 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.
      Parameter:
      flavors - list of transfer flavors to check
      Gibt zurück:
      whether any of the given flavors are supported
    • 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.

      Parameter:
      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.
      Parameter:
      e - event
      action - requested action
      location - requested drop location
      Gibt zurück:
      whether the drop is supported
    • 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.
      Parameter:
      e - event
      action - requested drop type
      Löst aus:
      UnsupportedFlavorException - dropped item has no supported flavors
      IOException - data access failure