Class PieceMover.AbstractDragHandler

java.lang.Object
VASSAL.build.module.map.PieceMover.AbstractDragHandler
All Implemented Interfaces:
DragGestureListener, DragSourceListener, DragSourceMotionListener, DropTargetListener, EventListener
Direct Known Subclasses:
PieceMover.DragHandler, PieceMover.DragHandlerNoImage
Enclosing class:
PieceMover

public abstract static class PieceMover.AbstractDragHandler extends Object implements DragGestureListener, DragSourceListener, DragSourceMotionListener, DropTargetListener
Common functionality for DragHandler for cases with and without drag image support.

NOTE: DragSource.isDragImageSupported() returns false for j2sdk1.4.2_02 on Windows 2000

Author:
Pieter Geerkens
  • Field Details

    • dragCursor

      protected JLabel dragCursor
    • dragPieceOffCenterZoom

      protected double dragPieceOffCenterZoom
    • dragCursorZoom

      protected double dragCursorZoom
    • lastDragLocation

      protected Point lastDragLocation
  • Constructor Details

    • AbstractDragHandler

      public AbstractDragHandler()
  • Method Details

    • getTheDragHandler

      public static PieceMover.AbstractDragHandler getTheDragHandler()
      returns the singleton DragHandler instance
    • setTheDragHandler

      public static void setTheDragHandler(PieceMover.AbstractDragHandler myHandler)
    • getOffsetMult

      protected abstract int getOffsetMult()
      Returns:
      platform-dependent offset multiplier
    • getDeviceScale

      protected abstract double getDeviceScale(DragGestureEvent dge)
      Parameters:
      dge - DG event
      Returns:
      platform-dependent device scale
    • makeDropTarget

      public static DropTarget makeDropTarget(Component theComponent, int dndContants, DropTargetListener dropTargetListener)
      Creates a new DropTarget and hooks us into the beginning of a DropTargetListener chain. DropTarget events are not multicast; there can be only one "true" listener.
    • removeDropTarget

      public static void removeDropTarget(Component theComponent)
      Removes a dropTarget component
      Parameters:
      theComponent - component to remove
    • getListener

      protected DropTargetListener getListener(DropTargetEvent e)
      Parameters:
      e - DropTargetEvent
      Returns:
      associated DropTargetListener
    • moveDragCursor

      protected void moveDragCursor(int dragX, int dragY)
      Moves the drag cursor on the current draw window
      Parameters:
      dragX - x position
      dragY - y position
    • removeDragCursor

      protected void removeDragCursor()
      Removes the drag cursor from the current draw window
    • setDrawWinToOwnerOf

      public void setDrawWinToOwnerOf(Component newDropWin)
      creates or moves cursor object to given window. Called when drag operation begins in a window or the cursor is dragged over a new drop-target window
      Parameters:
      newDropWin - window component to be our new draw window.
    • makeDragCursor

      protected void makeDragCursor(double zoom)
      Installs the cursor image into our dragCursor JLabel. Sets current zoom. Should be called at beginning of drag and whenever zoom changes. INPUT: DragBuffer.getBuffer OUTPUT: dragCursorZoom cursorOffCenterX cursorOffCenterY boundingBox
      Parameters:
      zoom - DragBuffer.getBuffer
    • dragGestureRecognized

      public void dragGestureRecognized(DragGestureEvent dge)
      DRAG GESTURE LISTENER INTERFACE EVENT uses SCALED, DRAG-SOURCE coordinate system. ("component coordinates") PIECE uses SCALED, OWNER (arbitrary) coordinate system ("map coordinates") Fires after user begins moving the mouse several pixels over a map. This method will be overridden, but called as a super(), by the Drag Gesture extension that is used, which will either be PieceMover.DragHandler if DragImage is supported by the JRE, or PieceMover.DragHandlerNoImage if not. Either one will have called dragGestureRecognizedPrep(java.awt.dnd.DragGestureEvent), immediately below, before it calls this method.
      Specified by:
      dragGestureRecognized in interface DragGestureListener
    • dragGestureRecognizedPrep

      protected Point dragGestureRecognizedPrep(DragGestureEvent dge)
      Sets things up at the beginning of a drag-and-drop operation:
      - Screen out any immovable pieces
      - Account for any offsets on in the window
      - Sets dragWin to our source window
      Parameters:
      dge - dg event
      Returns:
      mousePosition if we processed, or null if we bailed.
    • beginDragging

      protected void beginDragging(DragGestureEvent dge)
      The the Drag Gesture Recognizer that we're officially beginning a drag.
      Parameters:
      dge - DG event
    • dragDropEnd

      public void dragDropEnd(DragSourceDropEvent e)
      DRAG SOURCE LISTENER INTERFACE
      Specified by:
      dragDropEnd in interface DragSourceListener
      Parameters:
      e -
    • dragEnter

      public void dragEnter(DragSourceDragEvent e)
      Specified by:
      dragEnter in interface DragSourceListener
    • dragExit

      public void dragExit(DragSourceEvent e)
      Specified by:
      dragExit in interface DragSourceListener
    • dragOver

      public void dragOver(DragSourceDragEvent e)
      Specified by:
      dragOver in interface DragSourceListener
    • dropActionChanged

      public void dropActionChanged(DragSourceDragEvent e)
      Specified by:
      dropActionChanged in interface DragSourceListener
    • dragMouseMoved

      public abstract void dragMouseMoved(DragSourceDragEvent e)
      DRAG SOURCE MOTION LISTENER INTERFACE EVENT uses UNSCALED, SCREEN coordinate system Moves cursor after mouse. Used to check for real mouse movement. Warning: dragMouseMoved fires 8 times for each point on development system (Win2k)
      Specified by:
      dragMouseMoved in interface DragSourceMotionListener
    • dragEnter

      public void dragEnter(DropTargetDragEvent e)
      DROP TARGET INTERFACE EVENT uses UNSCALED, DROP-TARGET coordinate system dragEnter - switches current drawWin when mouse enters a new DropTarget
      Specified by:
      dragEnter in interface DropTargetListener
    • drop

      public void drop(DropTargetDropEvent e)
      DROP TARGET INTERFACE EVENT uses UNSCALED, DROP-TARGET coordinate system drop() - Last event of the drop operation. We adjust the drop point for off-center drag, remove the cursor, and pass the event along listener chain.
      Specified by:
      drop in interface DropTargetListener
    • dragExit

      public void dragExit(DropTargetEvent e)
      ineffectual. Passes event along listener chain
      Specified by:
      dragExit in interface DropTargetListener
    • dragOver

      public void dragOver(DropTargetDragEvent e)
      ineffectual. Passes event along listener chain
      Specified by:
      dragOver in interface DropTargetListener
    • dropActionChanged

      public void dropActionChanged(DropTargetDragEvent e)
      ineffectual. Passes event along listener chain
      Specified by:
      dropActionChanged in interface DropTargetListener