gishur.gui.inputhandler
Class DragHandler

java.lang.Object
  |
  +--gishur.gui.Painter
        |
        +--gishur.gui.InputHandler
              |
              +--gishur.gui.inputhandler.DragHandler
All Implemented Interfaces:
java.util.EventListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener
Direct Known Subclasses:
EditorXLine, EditorXPoint, EditorXPolyline, EditorXRay, EditorXSegment, ObjectMover, Selector, TranslateHandler, ZoomHandler

public class DragHandler
extends InputHandler
implements java.awt.event.MouseListener, java.awt.event.MouseMotionListener

Inputhandler für grundlegende Operationen von Drag & Drop.


Field Summary
static int ALLOW_INACTIVE_DRAG
          Erlaubt Drag-Operationen, ohne das der Handler vorher aktiviert wurde (dies geschieht durch Rückgabe von true bei becomeActive.
static int CONSUME_NEVER
          Konsumiert nie Mousevents.
static int CONSUME_ONLY_IF_ACTIVE
          Konsumiert Mouseevents nur, wenn der DragHandler aktiv ist.
static int DRAGHANDLER_MODE_MAX_ID
          Größte ID, die von DragHandler für Modi benutzt wird.
 
Fields inherited from class gishur.gui.Painter
_layer, _nofixedborder
 
Constructor Summary
DragHandler()
           
 
Method Summary
 boolean becomeActive(java.awt.event.MouseEvent e)
          Testet, ob der DragHandler aktiv werden soll.
 void clearMode(int mask)
          Einen Modus löschen.
 boolean didRealDrag()
          Liefert true, falls onDrag mindestens einmal aufgerufen wurde, also die Maus nach dem aufnehmen verschoben wurde.
 int getLastMouseX()
          Liefert die X-Koordinate der letzten Mausposition.
 int getLastMouseY()
          Liefert die Y-Koordinate der letzten Mausposition.
protected  void hideCursor()
          Stellt wieder den alten Cursor her.
 boolean isActive()
          Liefert true, falls der Inputhandler aktiv ist.
 boolean isDragging()
          Liefert true, falls gerade ein Drag durchgeführt wird.
 void mouseClicked(java.awt.event.MouseEvent e)
           
 void mouseDragged(java.awt.event.MouseEvent e)
          Maus mit gedrückter Taste bewegt.
 void mouseEntered(java.awt.event.MouseEvent e)
           
 void mouseExited(java.awt.event.MouseEvent e)
           
 void mouseMoved(java.awt.event.MouseEvent e)
           
 void mousePressed(java.awt.event.MouseEvent e)
          Maustaste gedrückt.
 void mouseReleased(java.awt.event.MouseEvent e)
          Maustaste losgelassen.
 void onActivate(java.awt.event.MouseEvent e)
          Wird beim aktivieren des Handlers aufgerufen.
 void onDeactivate(java.awt.event.MouseEvent e)
          Wird beim deaktivieren des Handlers aufgerufen.
 void onDrag(int dx, int dy, java.awt.event.MouseEvent e)
          Wird während des Draggens aufgerufen.
 void onDrop(int dx, int dy, java.awt.event.MouseEvent e)
          Wird beim Loslassen der Maus nach einem Drag-Vorgang aufgerufen.
 void onPickup(java.awt.event.MouseEvent e)
          Wird aufgerufen, falls ein Drag-Vorgang begonnen wird (also nachdem picking true geliefert hat).
 boolean picking(java.awt.event.MouseEvent e)
          Wird aufgerufen, wenn die Mousetaste gedrückt wurde.
 void setMode(int mask)
          Einen Modus setzen.
 void setSpecialCursor(java.awt.Cursor cursor)
          Setzt den speziellen Cursor.
protected  void showCursor()
          Zeigt den HandCursor an und merkt sich den alten Cursor.
 boolean testMode(int mask)
          Testet, ob der Modus mask gesetzt wurde.
 
Methods inherited from class gishur.gui.InputHandler
allButtons, calculateBounds, disable, dispatchEvent, enable, enabled, getComponent, getCursor, maxBounds, onDisable, oneButton, onEnable, setComponent, setCursor, setStatusTip, setToolTip, system_disable, system_enable, update, visible
 
Methods inherited from class gishur.gui.Painter
dirty, enlargeRectangleByPainter, equals, getBounds, getLayer, getPainterString, getPosition, getRegister, getTarget, getTargetClass, getTransformation, getVirtualScreen, hide, linkDirty, makeDirty, onHide, onShow, paint, recalcBounds, removeLinkDirty, setLayer, setRegister, setTarget, show, toString, unRegister
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

ALLOW_INACTIVE_DRAG

public static final int ALLOW_INACTIVE_DRAG
Erlaubt Drag-Operationen, ohne das der Handler vorher aktiviert wurde (dies geschieht durch Rückgabe von true bei becomeActive.

CONSUME_ONLY_IF_ACTIVE

public static final int CONSUME_ONLY_IF_ACTIVE
Konsumiert Mouseevents nur, wenn der DragHandler aktiv ist.

CONSUME_NEVER

public static final int CONSUME_NEVER
Konsumiert nie Mousevents.

DRAGHANDLER_MODE_MAX_ID

public static final int DRAGHANDLER_MODE_MAX_ID
Größte ID, die von DragHandler für Modi benutzt wird. Eigene Modus-ID's sollten größer und Zweierpotenzen sein (sonst gibt's Probleme.
Constructor Detail

DragHandler

public DragHandler()
Method Detail

setMode

public void setMode(int mask)
Einen Modus setzen.
Parameters:
mask - Modus-Maske

clearMode

public void clearMode(int mask)
Einen Modus löschen.
Parameters:
mask - Modus-Maske

testMode

public boolean testMode(int mask)
Testet, ob der Modus mask gesetzt wurde.
Returns:
mask Modusmaske

setSpecialCursor

public void setSpecialCursor(java.awt.Cursor cursor)
Setzt den speziellen Cursor. Standard ist ein Hand-Cursor.
Parameters:
cursor - neuer Cursor

showCursor

protected void showCursor()
Zeigt den HandCursor an und merkt sich den alten Cursor.

hideCursor

protected void hideCursor()
Stellt wieder den alten Cursor her.

isActive

public boolean isActive()
Liefert true, falls der Inputhandler aktiv ist.

isDragging

public boolean isDragging()
Liefert true, falls gerade ein Drag durchgeführt wird.

didRealDrag

public boolean didRealDrag()
Liefert true, falls onDrag mindestens einmal aufgerufen wurde, also die Maus nach dem aufnehmen verschoben wurde. Diese Funktion liefert nur dann einen gültigen Wert, falls sie während des Ereignisses onDrop aufgerufen wird.
Returns:
true, falls richtiger Drag verübt wurde

getLastMouseX

public int getLastMouseX()
Liefert die X-Koordinate der letzten Mausposition.
Returns:
X-Koordinate der letzten Mausposition

getLastMouseY

public int getLastMouseY()
Liefert die Y-Koordinate der letzten Mausposition.
Returns:
Y-Koordinate der letzten Mausposition

onPickup

public void onPickup(java.awt.event.MouseEvent e)
Wird aufgerufen, falls ein Drag-Vorgang begonnen wird (also nachdem picking true geliefert hat).
Parameters:
e - Mausevent

onDrag

public void onDrag(int dx,
                   int dy,
                   java.awt.event.MouseEvent e)
Wird während des Draggens aufgerufen. Seit einem letzten Aufruf von onPickup bzw. onDrag wurde die Maus um dx und dy bewegt.
Parameters:
dx,dy - Vektor, um den verschoben wurde
e - Mausevent

onDrop

public void onDrop(int dx,
                   int dy,
                   java.awt.event.MouseEvent e)
Wird beim Loslassen der Maus nach einem Drag-Vorgang aufgerufen. Seit einem letzten Aufruf von onPickup bzw. onDrag wurde die Maus um dx und dy bewegt.
Parameters:
dx,dy - Vektor, um den verschoben wurde
e - Mausevent

picking

public boolean picking(java.awt.event.MouseEvent e)
Wird aufgerufen, wenn die Mousetaste gedrückt wurde. Liefert picking true zurück, so wird ein Drag-Vorgang begonnen.
Parameters:
e - Mausevent
Returns:
true, falls Drag-Vorgang eingeleitet werden wird

becomeActive

public boolean becomeActive(java.awt.event.MouseEvent e)
Testet, ob der DragHandler aktiv werden soll. Diese Methode wird sehr häufig aufgerufen (bei jeder Mausbewegung!) und sollte daher schnell bearbeitet werden. Wird true zurückgeliefert, so wird der Handler aktiviert und onActivate aufgerufen, wird false geliefert, so wird onDeactivate aufgerufen und der Handler deaktiviert. Nur ein aktivierter Handler kann Drag & Drop Operationen ausführen.
Parameters:
e - Mausevent
Returns:
true, Handler aktiv werden soll.

onActivate

public void onActivate(java.awt.event.MouseEvent e)
Wird beim aktivieren des Handlers aufgerufen.
Parameters:
e - Mausevent

onDeactivate

public void onDeactivate(java.awt.event.MouseEvent e)
Wird beim deaktivieren des Handlers aufgerufen.
Parameters:
e - Mausevent

mousePressed

public void mousePressed(java.awt.event.MouseEvent e)
Maustaste gedrückt.
Specified by:
mousePressed in interface java.awt.event.MouseListener
Parameters:
e - Event

mouseReleased

public void mouseReleased(java.awt.event.MouseEvent e)
Maustaste losgelassen.
Specified by:
mouseReleased in interface java.awt.event.MouseListener
Parameters:
e - Event

mouseDragged

public void mouseDragged(java.awt.event.MouseEvent e)
Maus mit gedrückter Taste bewegt.
Specified by:
mouseDragged in interface java.awt.event.MouseMotionListener
Parameters:
e - Event

mouseMoved

public void mouseMoved(java.awt.event.MouseEvent e)
Specified by:
mouseMoved in interface java.awt.event.MouseMotionListener

mouseEntered

public void mouseEntered(java.awt.event.MouseEvent e)
Specified by:
mouseEntered in interface java.awt.event.MouseListener

mouseExited

public void mouseExited(java.awt.event.MouseEvent e)
Specified by:
mouseExited in interface java.awt.event.MouseListener

mouseClicked

public void mouseClicked(java.awt.event.MouseEvent e)
Specified by:
mouseClicked in interface java.awt.event.MouseListener