VASSAL.build.module.map
Class PieceMover

java.lang.Object
  |
  +--VASSAL.build.AbstractBuildable
        |
        +--VASSAL.build.module.map.PieceMover
All Implemented Interfaces:
Buildable, java.util.EventListener, GameComponent, java.awt.event.MouseListener, Sort.Comparator
Direct Known Subclasses:
MineaturesPieceMover

public class PieceMover
extends AbstractBuildable
implements java.awt.event.MouseListener, GameComponent, Sort.Comparator

This is a MouseListener that moves pieces onto a Map window


Inner Class Summary
static class PieceMover.DragHandler
          Implements a psudo-cursor that follows the mouse cursor when user drags gamepieces.
 
Field Summary
static java.lang.String AUTO_REPORT
          The Preferences key for autoreporting moves.
protected  java.awt.Point dragBegin
           
protected  PieceFinder dragTargetSelector
           
protected  PieceFinder dropTargetSelector
           
static java.lang.String ICON_NAME
           
protected  Map map
           
protected  javax.swing.JButton markUnmovedButton
           
protected static java.lang.String OFFMAP
           
protected  PieceVisitorDispatcher selectionProcessor
           
 
Fields inherited from class VASSAL.build.AbstractBuildable
buildComponents
 
Constructor Summary
PieceMover()
           
 
Method Summary
 void addTo(Buildable b)
          Adds this component to its parent.
protected  boolean canHandleEvent(java.awt.event.MouseEvent e)
           
 int compare(java.lang.Object o1, java.lang.Object o2)
          Implement Comparator to sort the contents of the drag buffer before completing the drag.
protected  PieceFinder createDragTargetSelector()
          Returns the PieceFinder instance that will select a GamePiece for processing when the user clicks on the map.
protected  PieceFinder createDropTargetSelector()
          When the user completes a drag-drop operation, the pieces being dragged will either be combined with an existing piece on the map or else placed on the map without stack.
protected  PieceVisitorDispatcher createSelectionProcessor()
          When the user clicks on the map, a piece from the map is selected by the dragTargetSelector.
 java.lang.String[] getAttributeNames()
           
 java.lang.String getAttributeValueString(java.lang.String key)
          Return a String representation of the attribute with the given name.
 Command getRestoreCommand()
          When saving a game, each GameComponent should return a Command that, when executed, restores the GameComponent to its state when the game was saved If this component has no persistent state, return null
protected  void initButton()
           
 boolean isClick(java.awt.Point pt)
          Return true if this point is "close enough" to the point at which the user pressed the mouse to be considered a mouse click (such that no moves are done)
protected  boolean isMultipleSelectionEvent(java.awt.event.MouseEvent e)
           
 Command markMoved(GamePiece p, boolean hasMoved)
           
 void mouseClicked(java.awt.event.MouseEvent e)
           
 void mouseEntered(java.awt.event.MouseEvent e)
           
 void mouseExited(java.awt.event.MouseEvent e)
           
 void mousePressed(java.awt.event.MouseEvent e)
          This listener is used for faking drag-and-drop on Java 1.1 systems
 void mouseReleased(java.awt.event.MouseEvent e)
           
protected  Command movedPiece(GamePiece p, java.awt.Point loc)
          Invoked after a piece has been moved
 Command movePieces(Map map, java.awt.Point p)
          moves pieces in DragBuffer to point p by generating a Command for each element in Dragbuffer
protected  void performDrop(java.awt.Point p)
           
protected  void selectMovablePieces(java.awt.Point point)
          Place the clicked-on piece into the DragBuffer
 void setAttribute(java.lang.String key, java.lang.Object value)
          Sets an attribute value for this component.
 void setup(boolean gameStarting)
          Notify the GameComponent that a game has started/ended
protected  boolean shouldMarkMoved()
           
 
Methods inherited from class VASSAL.build.AbstractBuildable
add, build, getBuildComponents, getBuildElement, getComponents
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

AUTO_REPORT

public static final java.lang.String AUTO_REPORT
The Preferences key for autoreporting moves.

OFFMAP

protected static final java.lang.String OFFMAP

map

protected Map map

dragBegin

protected java.awt.Point dragBegin

markUnmovedButton

protected javax.swing.JButton markUnmovedButton

ICON_NAME

public static final java.lang.String ICON_NAME

dragTargetSelector

protected PieceFinder dragTargetSelector

dropTargetSelector

protected PieceFinder dropTargetSelector

selectionProcessor

protected PieceVisitorDispatcher selectionProcessor
Constructor Detail

PieceMover

public PieceMover()
Method Detail

addTo

public void addTo(Buildable b)
Description copied from interface: Buildable
Adds this component to its parent. In order to make Buildable objects extensible, the child is reponsible for adding itself to the parent. That way, Buildable subcomponents can be defined in an extension package without needing to modify the containing class.

createDropTargetSelector

protected PieceFinder createDropTargetSelector()
When the user completes a drag-drop operation, the pieces being dragged will either be combined with an existing piece on the map or else placed on the map without stack. This method returns a PieceFinder instance that determines which GamePiece (if any) to combine the being-dragged pieces with.
Returns:
 

createSelectionProcessor

protected PieceVisitorDispatcher createSelectionProcessor()
When the user clicks on the map, a piece from the map is selected by the dragTargetSelector. What happens to that piece is determined by the PieceVisitorDispatcher instance returned by this method.
Returns:
 
See Also:
createDragTargetSelector()

createDragTargetSelector

protected PieceFinder createDragTargetSelector()
Returns the PieceFinder instance that will select a GamePiece for processing when the user clicks on the map.
Returns:
 

setup

public void setup(boolean gameStarting)
Description copied from interface: GameComponent
Notify the GameComponent that a game has started/ended
Specified by:
setup in interface GameComponent
Following copied from interface: VASSAL.build.module.GameComponent
Parameters:
gameStarting - if true, a game is starting. If false, then a game is ending

getRestoreCommand

public Command getRestoreCommand()
Description copied from interface: GameComponent
When saving a game, each GameComponent should return a Command that, when executed, restores the GameComponent to its state when the game was saved If this component has no persistent state, return null
Specified by:
getRestoreCommand in interface GameComponent

initButton

protected void initButton()

getAttributeNames

public java.lang.String[] getAttributeNames()
Overrides:
getAttributeNames in class AbstractBuildable
Following copied from class: VASSAL.build.AbstractBuildable
Returns:
a list of all attribute names for this component

getAttributeValueString

public java.lang.String getAttributeValueString(java.lang.String key)
Description copied from class: AbstractBuildable
Return a String representation of the attribute with the given name. When initializing a module, this String value will be passed to AbstractBuildable.setAttribute(java.lang.String, java.lang.Object).
Overrides:
getAttributeValueString in class AbstractBuildable
Following copied from class: VASSAL.build.AbstractBuildable
Parameters:
key - the name of the attribute. Will be one of those listed in AbstractBuildable.getAttributeNames()

setAttribute

public void setAttribute(java.lang.String key,
                         java.lang.Object value)
Description copied from class: AbstractBuildable
Sets an attribute value for this component. The key parameter will be one of those listed in AbstractBuildable.getAttributeNames(). If the value parameter is a String, it will be the value returned by AbstractBuildable.getAttributeValueString(java.lang.String) for the same key. If the implementing class extends AbstractConfigurable, then value will be an instance of the corresponding Class listed in AbstractConfigurable.getAttributeTypes()
Overrides:
setAttribute in class AbstractBuildable
Following copied from class: VASSAL.build.AbstractBuildable
Parameters:
key - the name of the attribute. Will be one of those listed in AbstractBuildable.getAttributeNames()

isMultipleSelectionEvent

protected boolean isMultipleSelectionEvent(java.awt.event.MouseEvent e)

movedPiece

protected Command movedPiece(GamePiece p,
                             java.awt.Point loc)
Invoked after a piece has been moved

markMoved

public Command markMoved(GamePiece p,
                         boolean hasMoved)

shouldMarkMoved

protected boolean shouldMarkMoved()

movePieces

public Command movePieces(Map map,
                          java.awt.Point p)
moves pieces in DragBuffer to point p by generating a Command for each element in Dragbuffer
Parameters:
map - Map
p - Point mouse released

mousePressed

public void mousePressed(java.awt.event.MouseEvent e)
This listener is used for faking drag-and-drop on Java 1.1 systems
Specified by:
mousePressed in interface java.awt.event.MouseListener
Parameters:
e -  

selectMovablePieces

protected void selectMovablePieces(java.awt.Point point)
Place the clicked-on piece into the DragBuffer

canHandleEvent

protected boolean canHandleEvent(java.awt.event.MouseEvent e)

isClick

public boolean isClick(java.awt.Point pt)
Return true if this point is "close enough" to the point at which the user pressed the mouse to be considered a mouse click (such that no moves are done)

mouseReleased

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

performDrop

protected void performDrop(java.awt.Point p)

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

compare

public int compare(java.lang.Object o1,
                   java.lang.Object o2)
Implement Comparator to sort the contents of the drag buffer before completing the drag. This sorts the contents to be in the same order as the pieces were in their original parent stack.
Specified by:
compare in interface Sort.Comparator