JHotDraw 7.4.1

org.jhotdraw.draw.tool
Class SelectionTool

java.lang.Object
  extended by org.jhotdraw.beans.AbstractBean
      extended by org.jhotdraw.draw.tool.AbstractTool
          extended by org.jhotdraw.draw.tool.SelectionTool
All Implemented Interfaces:
java.awt.event.KeyListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.io.Serializable, java.lang.Cloneable, java.util.EventListener, Tool
Direct Known Subclasses:
DelegationSelectionTool

public class SelectionTool
extends AbstractTool

Tool to select and manipulate figures.

A selection tool is in one of three states: 1) area selection, 2) figure dragging, 3) handle manipulation. The different states are handled by different tracker objects: the DefaultSelectAreaTracker, the DefaultDragTracker and the DefaultHandleTracker.

A Figure can be selected by clicking at it. Holding the alt key or the ctrl key down, selects the Figure behind it.


Design Patterns

Strategy
The different behavior states of the selection tool are implemented by trackers.
Context: SelectionTool; State: DragTracker, HandleTracker, SelectAreaTracker.

Chain of responsibility
Mouse and keyboard events of the user occur on the drawing view, and are preprocessed by the DragTracker of a SelectionTool. In turn DragTracker invokes "track" methods on a Handle which in turn changes an aspect of a figure.
Client: SelectionTool; Handler: DragTracker, Handle.


Version:
$Id: SelectionTool.java 604 2010-01-09 12:00:29Z rawcoder $
Author:
Werner Randelshofer
See Also:
Serialized Form

Field Summary
static java.lang.String SELECT_BEHIND_ENABLED_PROPERTY
          Constant for the name of the selectBehindEnabled property.
 
Fields inherited from class org.jhotdraw.draw.tool.AbstractTool
anchor, editor, isWorking, listenerList
 
Fields inherited from class org.jhotdraw.beans.AbstractBean
propertySupport
 
Constructor Summary
SelectionTool()
          Creates a new instance.
 
Method Summary
 void activate(DrawingEditor editor)
          Activates the tool for the given editor.
 void deactivate(DrawingEditor editor)
          Deactivates the tool.
 void draw(java.awt.Graphics2D g)
          Draws the tool.
protected  DragTracker getDragTracker(Figure f)
          Method to get a DragTracker which handles user interaction for dragging the specified figure.
protected  HandleTracker getHandleTracker(Handle handle)
          Method to get a HandleTracker which handles user interaction for the specified handle.
protected  SelectAreaTracker getSelectAreaTracker()
          Method to get a SelectAreaTracker which handles user interaction for selecting an area on the drawing.
 boolean isSelectBehindEnabled()
          Returns the value of the selectBehindEnabled property.
 void keyPressed(java.awt.event.KeyEvent e)
          The Tool uses the InputMap to determine what to do, when a key is pressed.
 void keyReleased(java.awt.event.KeyEvent evt)
           
 void keyTyped(java.awt.event.KeyEvent evt)
           
 void mouseClicked(java.awt.event.MouseEvent evt)
           
 void mouseDragged(java.awt.event.MouseEvent evt)
           
 void mouseEntered(java.awt.event.MouseEvent evt)
           
 void mouseExited(java.awt.event.MouseEvent evt)
           
 void mouseMoved(java.awt.event.MouseEvent evt)
           
 void mousePressed(java.awt.event.MouseEvent evt)
           
 void mouseReleased(java.awt.event.MouseEvent evt)
           
 void setDragTracker(DragTracker newValue)
          Method to set a DragTracker.
 void setHandleTracker(HandleTracker newValue)
          Method to set a HandleTracker.
 void setSelectAreaTracker(SelectAreaTracker newValue)
          Method to set a SelectAreaTracker.
 void setSelectBehindEnabled(boolean newValue)
          Sets the selectBehindEnabled property.
protected  void setTracker(Tool newTracker)
           
 boolean supportsHandleInteraction()
          Returns true, if this tool lets the user interact with handles.
 
Methods inherited from class org.jhotdraw.draw.tool.AbstractTool
addToolListener, addUndoableEditListener, constrainPoint, constrainPoint, createActionMap, createInputMap, editCopy, editCut, editDelete, editDuplicate, editPaste, fireAreaInvalidated, fireAreaInvalidated, fireBoundsInvalidated, fireToolDone, fireToolStarted, getActionMap, getDrawing, getEditor, getInputMap, getToolTipText, getView, isActive, maybeFireBoundsInvalidated, removeToolListener, removeUndoableEditListener, setActionMap, setInputMap, updateCursor, viewToDrawing
 
Methods inherited from class org.jhotdraw.beans.AbstractBean
addPropertyChangeListener, addPropertyChangeListener, clone, firePropertyChange, firePropertyChange, firePropertyChange, getPropertyChangeListeners, removePropertyChangeListener, removePropertyChangeListener
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SELECT_BEHIND_ENABLED_PROPERTY

public static final java.lang.String SELECT_BEHIND_ENABLED_PROPERTY
Constant for the name of the selectBehindEnabled property.

See Also:
Constant Field Values
Constructor Detail

SelectionTool

public SelectionTool()
Creates a new instance.

Method Detail

setSelectBehindEnabled

public void setSelectBehindEnabled(boolean newValue)
Sets the selectBehindEnabled property. This is a bound property.

Parameters:
newValue - The new value.

isSelectBehindEnabled

public boolean isSelectBehindEnabled()
Returns the value of the selectBehindEnabled property. This is a bound property.

Returns:
The property value.

activate

public void activate(DrawingEditor editor)
Description copied from interface: Tool
Activates the tool for the given editor. This method is called whenever the user switches to this tool.

Specified by:
activate in interface Tool
Overrides:
activate in class AbstractTool

deactivate

public void deactivate(DrawingEditor editor)
Description copied from interface: Tool
Deactivates the tool. This method is called whenever the user switches to another tool.

Specified by:
deactivate in interface Tool
Overrides:
deactivate in class AbstractTool

keyPressed

public void keyPressed(java.awt.event.KeyEvent e)
Description copied from class: AbstractTool
The Tool uses the InputMap to determine what to do, when a key is pressed. If the corresponding value of the InputMap is a String, the ActionMap of the tool is used, to find the action to be performed. If the corresponding value of the InputMap is a ActionListener, the actionPerformed method of the ActionListener is performed.

Specified by:
keyPressed in interface java.awt.event.KeyListener
Overrides:
keyPressed in class AbstractTool

keyReleased

public void keyReleased(java.awt.event.KeyEvent evt)
Specified by:
keyReleased in interface java.awt.event.KeyListener
Overrides:
keyReleased in class AbstractTool

keyTyped

public void keyTyped(java.awt.event.KeyEvent evt)
Specified by:
keyTyped in interface java.awt.event.KeyListener
Overrides:
keyTyped in class AbstractTool

mouseClicked

public void mouseClicked(java.awt.event.MouseEvent evt)
Specified by:
mouseClicked in interface java.awt.event.MouseListener
Overrides:
mouseClicked in class AbstractTool

mouseDragged

public void mouseDragged(java.awt.event.MouseEvent evt)

mouseEntered

public void mouseEntered(java.awt.event.MouseEvent evt)
Specified by:
mouseEntered in interface java.awt.event.MouseListener
Overrides:
mouseEntered in class AbstractTool

mouseExited

public void mouseExited(java.awt.event.MouseEvent evt)
Specified by:
mouseExited in interface java.awt.event.MouseListener
Overrides:
mouseExited in class AbstractTool

mouseMoved

public void mouseMoved(java.awt.event.MouseEvent evt)
Specified by:
mouseMoved in interface java.awt.event.MouseMotionListener
Overrides:
mouseMoved in class AbstractTool

mouseReleased

public void mouseReleased(java.awt.event.MouseEvent evt)
Specified by:
mouseReleased in interface java.awt.event.MouseListener
Overrides:
mouseReleased in class AbstractTool

draw

public void draw(java.awt.Graphics2D g)
Description copied from interface: Tool
Draws the tool.

Specified by:
draw in interface Tool
Overrides:
draw in class AbstractTool

mousePressed

public void mousePressed(java.awt.event.MouseEvent evt)
Specified by:
mousePressed in interface java.awt.event.MouseListener
Overrides:
mousePressed in class AbstractTool

setTracker

protected void setTracker(Tool newTracker)

getHandleTracker

protected HandleTracker getHandleTracker(Handle handle)
Method to get a HandleTracker which handles user interaction for the specified handle.


getDragTracker

protected DragTracker getDragTracker(Figure f)
Method to get a DragTracker which handles user interaction for dragging the specified figure.


getSelectAreaTracker

protected SelectAreaTracker getSelectAreaTracker()
Method to get a SelectAreaTracker which handles user interaction for selecting an area on the drawing.


setHandleTracker

public void setHandleTracker(HandleTracker newValue)
Method to set a HandleTracker. If you specify null, the SelectionTool uses the DefaultHandleTracker.


setSelectAreaTracker

public void setSelectAreaTracker(SelectAreaTracker newValue)
Method to set a SelectAreaTracker. If you specify null, the SelectionTool uses the DefaultSelectAreaTracker.


setDragTracker

public void setDragTracker(DragTracker newValue)
Method to set a DragTracker. If you specify null, the SelectionTool uses the DefaultDragTracker.


supportsHandleInteraction

public boolean supportsHandleInteraction()
Returns true, if this tool lets the user interact with handles.

Handles may draw differently, if interaction is not possible.

Specified by:
supportsHandleInteraction in interface Tool
Overrides:
supportsHandleInteraction in class AbstractTool
Returns:
True, if this tool supports interaction with the handles.

Copyright 1996-2010 (c) by the authors and contributors of the JHotDraw project.
Some rights reserved.