JHotDraw 7.3.1

org.jhotdraw.draw
Interface Tool

All Superinterfaces:
java.util.EventListener, java.awt.event.KeyListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener
All Known Subinterfaces:
DragTracker, HandleTracker, SelectAreaTracker
All Known Implementing Classes:
AbstractTool, BezierTool, BidirectionalConnectionTool, ConnectionTool, CreationTool, DefaultDragTracker, DefaultHandleTracker, DefaultSelectAreaTracker, DelegationSelectionTool, DnDTracker, ImageTool, PathTool, PathTool, SelectionTool, SVGCreateFromFileTool, TextAreaCreationTool, TextAreaEditingTool, TextCreationTool, TextEditingTool

public interface Tool
extends java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.event.KeyListener

A tool defines a mode of a DrawingEditor. All input events targeted to the active DrawingView of the drawing editor are forwarded to its current tool.

Tools inform listeners when they are done with an interaction by calling the ToolListener's toolDone() method. The Tools are created once and reused. They are initialized/deinitialized with activate()/deactivate().

Tools are used for user interaction. Unlike figures, a tool works with the user interface coordinates of the DrawingView. The user interface coordinates are expressed in integer pixels.

A Tool forwards UndoableEdit events to the Drawing object onto which it is performing changes.

If a tool does not handle a specific keyboard event, it looks up the InputMap of the drawing editor and then invokes the corresponding action in the ActionMap of the drawing editor. A tool can have an InputMap and ActionMap of its own which take precedence over the ones provided by the drawing editor.


Design Patterns

Framework
The following interfaces define the contracts of a framework for structured drawing editors:
Contract: Drawing, Figure, CompositeFigure, ConnectionFigure, Connector, DrawingView, DrawingEditor, Handle and Tool.

Mediator
DrawingEditor acts as a mediator for coordinating drawing tools and drawing views:
Mediator: DrawingEditor; Colleagues: DrawingView, Tool.

Mediator
DrawingEditor acts as a mediator for coordinating keyboard input from Tools and Swing action objects:
Mediator: DrawingEditor; Colleagues: Tool, javax.swing.Action.

Observer
State changes of tools can be observed by other objects. Specifically DrawingEditor observes area invalidations of tools and repaints its active drawing view accordingly.
Subject: Tool; Observer: ToolListener; Event: ToolEvent; Concrete Observer: DrawingEditor.


Version:
$Id: Tool.java 574 2009-10-14 21:38:03Z rawcoder $
Author:
Werner Randelshofer

Method Summary
 void activate(DrawingEditor editor)
          Activates the tool for the given editor.
 void addToolListener(ToolListener l)
          Adds a listener for this tool.
 void deactivate(DrawingEditor editor)
          Deactivates the tool.
 void draw(java.awt.Graphics2D g)
          Draws the tool.
 void editCopy()
          Copies the selection into the clipboard.
 void editCut()
          Cuts the selection into the clipboard.
 void editDelete()
          Deletes the selection.
 void editDuplicate()
          Duplicates the selection.
 void editPaste()
          Pastes the contents of the clipboard.
 java.lang.String getToolTipText(DrawingView view, java.awt.event.MouseEvent evt)
          Returns the tooltip text for a mouse event on a drawing view.
 void removeToolListener(ToolListener l)
          Removes a listener for this tool.
 boolean supportsHandleInteraction()
          Returns true, if this tool lets the user interact with handles.
 
Methods inherited from interface java.awt.event.MouseListener
mouseClicked, mouseEntered, mouseExited, mousePressed, mouseReleased
 
Methods inherited from interface java.awt.event.MouseMotionListener
mouseDragged, mouseMoved
 
Methods inherited from interface java.awt.event.KeyListener
keyPressed, keyReleased, keyTyped
 

Method Detail

activate

void activate(DrawingEditor editor)
Activates the tool for the given editor. This method is called whenever the user switches to this tool.


deactivate

void deactivate(DrawingEditor editor)
Deactivates the tool. This method is called whenever the user switches to another tool.


addToolListener

void addToolListener(ToolListener l)
Adds a listener for this tool.


removeToolListener

void removeToolListener(ToolListener l)
Removes a listener for this tool.


draw

void draw(java.awt.Graphics2D g)
Draws the tool.


editDelete

void editDelete()
Deletes the selection. Depending on the tool, this could be selected figures, selected points or selected text.


editCut

void editCut()
Cuts the selection into the clipboard. Depending on the tool, this could be selected figures, selected points or selected text.


editCopy

void editCopy()
Copies the selection into the clipboard. Depending on the tool, this could be selected figures, selected points or selected text.


editDuplicate

void editDuplicate()
Duplicates the selection. Depending on the tool, this could be selected figures, selected points or selected text.


editPaste

void editPaste()
Pastes the contents of the clipboard. Depending on the tool, this could be selected figures, selected points or selected text.


getToolTipText

java.lang.String getToolTipText(DrawingView view,
                                java.awt.event.MouseEvent evt)
Returns the tooltip text for a mouse event on a drawing view.

Parameters:
view - A drawing view.
evt - A mouse event.
Returns:
A tooltip text or null.

supportsHandleInteraction

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

Handles may draw differently, if interaction is not possible.

Returns:
True, if this tool supports interaction with the handles.

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