org.jhotdraw.draw
Class DefaultDrawingEditor

java.lang.Object
  extended by org.jhotdraw.beans.AbstractBean
      extended by org.jhotdraw.draw.DefaultDrawingEditor
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, java.util.EventListener, DrawingEditor, ToolListener

public class DefaultDrawingEditor
extends AbstractBean
implements DrawingEditor, ToolListener

A default implementation of DrawingEditor. XXX - DefaultDrawingEditor should not publicly implement ToolListener.

Version:
$Id: DefaultDrawingEditor.java 576 2009-10-18 15:23:32Z rawcoder $
Author:
Werner Randelshofer
See Also:
Serialized Form

Field Summary
private  javax.swing.ActionMap actionMap
          The action map of the drawing editor.
private  DrawingView activeView
           
private  java.util.HashMap<AttributeKey,java.lang.Object> defaultAttributes
           
private  java.awt.event.FocusListener focusHandler
          The focus handler.
private  java.util.HashMap<AttributeKey,java.lang.Object> handleAttributes
           
private  javax.swing.InputMap inputMap
          The input map of the drawing editor.
private  boolean isEnabled
           
private  Tool tool
           
private  java.util.HashSet<DrawingView> views
           
 
Fields inherited from class org.jhotdraw.beans.AbstractBean
propertySupport
 
Fields inherited from interface org.jhotdraw.draw.DrawingEditor
ACTION_MAP_PROPERTY, ACTIVE_VIEW_PROPERTY, INPUT_MAP_PROPERTY, TOOL_PROPERTY
 
Constructor Summary
DefaultDrawingEditor()
          Creates a new instance.
 
Method Summary
 void add(DrawingView view)
          Adds a drawing view to the editor.
 void applyDefaultAttributesTo(Figure f)
          Applies the default attributes to the specified figure.
 void areaInvalidated(ToolEvent evt)
          Sent when an area of the drawing view needs to be repainted.
protected  javax.swing.ActionMap createActionMap()
          Override this method to create a tool-specific action map, which overrides the action map of the drawing edtior.
protected  javax.swing.InputMap createInputMap()
          Override this method to create a tool-specific input map, which overrides the input map of the drawing edtior.
 DrawingView findView(java.awt.Container c)
          Finds a drawing view.
 javax.swing.ActionMap getActionMap()
          Gets the action map used by the tool of this drawing editor as a fall back for performing actions.
 DrawingView getActiveView()
          Gets the editor's active drawing view.
<T> T
getDefaultAttribute(AttributeKey<T> key)
          Gets a default attribute from the editor.
 java.util.Map<AttributeKey,java.lang.Object> getDefaultAttributes()
          Returns an immutable Map with the default attributes of this editor.
 java.util.Collection<DrawingView> getDrawingViews()
          Gets all drawing views associated with this editor.
<T> T
getHandleAttribute(AttributeKey<T> key)
          Gets a handle attribute from the editor.
 javax.swing.InputMap getInputMap()
          Sets the input map used by the tool of this drawing editor as a fall back for handling keyboard events.
 Tool getTool()
          Gets the current tool.
 boolean isEnabled()
          Gets the enabled state of the drawing editor.
 void remove(DrawingView view)
          Removes a drawing view from the editor.
 void setActionMap(javax.swing.ActionMap newValue)
          Sets the action map used by the tool of this drawing editor as a fall back for performing actions.
 void setActiveView(DrawingView newValue)
          Sets the editor's active drawing view.
 void setCursor(java.awt.Cursor c)
          Sets the cursor on the view(s) of the drawing editor.
 void setDefaultAttribute(AttributeKey key, java.lang.Object newValue)
          Sets a default attribute of the editor.
 void setEnabled(boolean newValue)
          Sets the enabled state of the drawing editor.
 void setHandleAttribute(AttributeKey key, java.lang.Object value)
          Sets a handle attribute of the editor.
 void setInputMap(javax.swing.InputMap newValue)
          Sets the input map used by the tool of this drawing editor as a fall back for handling keyboard events.
 void setTool(Tool newValue)
          Calls deactivate on the previously active tool of this drawing editor.
 void toolDone(ToolEvent evt)
          Informs the listener that a tool has done its interaction.
 void toolStarted(ToolEvent evt)
          Informs the listener that a tool has starteds interacting with a specific drawing view.
private  void updateActiveView()
           
 
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
 
Methods inherited from interface org.jhotdraw.draw.DrawingEditor
addPropertyChangeListener, removePropertyChangeListener
 

Field Detail

defaultAttributes

private java.util.HashMap<AttributeKey,java.lang.Object> defaultAttributes

handleAttributes

private java.util.HashMap<AttributeKey,java.lang.Object> handleAttributes

tool

private Tool tool

views

private java.util.HashSet<DrawingView> views

activeView

private DrawingView activeView

isEnabled

private boolean isEnabled

inputMap

private javax.swing.InputMap inputMap
The input map of the drawing editor.


actionMap

private javax.swing.ActionMap actionMap
The action map of the drawing editor.


focusHandler

private java.awt.event.FocusListener focusHandler
The focus handler.

Constructor Detail

DefaultDrawingEditor

public DefaultDrawingEditor()
Creates a new instance.

Method Detail

setTool

public void setTool(Tool newValue)
Description copied from interface: DrawingEditor
Calls deactivate on the previously active tool of this drawing editor. Calls activate on the provided tool. Forwards all mouse, mouse moation and keyboard events that occur on the DrawingView to the provided tool.

This is a bound property.

Specified by:
setTool in interface DrawingEditor

areaInvalidated

public void areaInvalidated(ToolEvent evt)
Description copied from interface: ToolListener
Sent when an area of the drawing view needs to be repainted.

Specified by:
areaInvalidated in interface ToolListener

toolStarted

public void toolStarted(ToolEvent evt)
Description copied from interface: ToolListener
Informs the listener that a tool has starteds interacting with a specific drawing view.

Specified by:
toolStarted in interface ToolListener

setActiveView

public void setActiveView(DrawingView newValue)
Description copied from interface: DrawingEditor
Sets the editor's active drawing view. This can be set to null, if the editor has no views.

Specified by:
setActiveView in interface DrawingEditor

toolDone

public void toolDone(ToolEvent evt)
Description copied from interface: ToolListener
Informs the listener that a tool has done its interaction. This method can be used to switch back to the default tool.

Specified by:
toolDone in interface ToolListener

getTool

public Tool getTool()
Description copied from interface: DrawingEditor
Gets the current tool.

This is a bound property.

Specified by:
getTool in interface DrawingEditor

getActiveView

public DrawingView getActiveView()
Description copied from interface: DrawingEditor
Gets the editor's active drawing view. This can be null, if the editor has no views.

Specified by:
getActiveView in interface DrawingEditor

updateActiveView

private void updateActiveView()

applyDefaultAttributesTo

public void applyDefaultAttributesTo(Figure f)
Description copied from interface: DrawingEditor
Applies the default attributes to the specified figure.

Specified by:
applyDefaultAttributesTo in interface DrawingEditor

getDefaultAttribute

public <T> T getDefaultAttribute(AttributeKey<T> key)
Description copied from interface: DrawingEditor
Gets a default attribute from the editor. The default attribute will be used by creation tools, to create a new figure.

Specified by:
getDefaultAttribute in interface DrawingEditor

setDefaultAttribute

public void setDefaultAttribute(AttributeKey key,
                                java.lang.Object newValue)
Description copied from interface: DrawingEditor
Sets a default attribute of the editor. The default attribute will be used by creation tools, to create a new figure.

Specified by:
setDefaultAttribute in interface DrawingEditor

remove

public void remove(DrawingView view)
Description copied from interface: DrawingEditor
Removes a drawing view from the editor. The editor invokes removeNotify on the view, and it unregisters its tool on the view.

Specified by:
remove in interface DrawingEditor

add

public void add(DrawingView view)
Description copied from interface: DrawingEditor
Adds a drawing view to the editor. The editor invokes addNotify on the view, and it registers its tool as an event listener on the view.

Specified by:
add in interface DrawingEditor

setCursor

public void setCursor(java.awt.Cursor c)
Description copied from interface: DrawingEditor
Sets the cursor on the view(s) of the drawing editor.

Specified by:
setCursor in interface DrawingEditor

getDrawingViews

public java.util.Collection<DrawingView> getDrawingViews()
Description copied from interface: DrawingEditor
Gets all drawing views associated with this editor.

Specified by:
getDrawingViews in interface DrawingEditor

findView

public DrawingView findView(java.awt.Container c)
Description copied from interface: DrawingEditor
Finds a drawing view. This is used by Tool to identify the view of which it has received an event.

Specified by:
findView in interface DrawingEditor

setEnabled

public void setEnabled(boolean newValue)
Description copied from interface: DrawingEditor
Sets the enabled state of the drawing editor. This is a bound property.

Specified by:
setEnabled in interface DrawingEditor

isEnabled

public boolean isEnabled()
Description copied from interface: DrawingEditor
Gets the enabled state of the drawing editor.

Specified by:
isEnabled in interface DrawingEditor

getDefaultAttributes

public java.util.Map<AttributeKey,java.lang.Object> getDefaultAttributes()
Description copied from interface: DrawingEditor
Returns an immutable Map with the default attributes of this editor.

Specified by:
getDefaultAttributes in interface DrawingEditor

setHandleAttribute

public void setHandleAttribute(AttributeKey key,
                               java.lang.Object value)
Description copied from interface: DrawingEditor
Sets a handle attribute of the editor. The default attribute will be used by creation tools, to create a new figure.

Specified by:
setHandleAttribute in interface DrawingEditor
Parameters:
key - AttributeKey.
value - Attribute value.

getHandleAttribute

public <T> T getHandleAttribute(AttributeKey<T> key)
Description copied from interface: DrawingEditor
Gets a handle attribute from the editor. The default attribute will be used by creation tools, to create a new figure.

Specified by:
getHandleAttribute in interface DrawingEditor
Parameters:
key - AttributeKey.
Returns:
If the handle attribute has been set, returns the previously set value. If the handle attribute has not been set, returns key.getDefaultValue().

setInputMap

public void setInputMap(javax.swing.InputMap newValue)
Description copied from interface: DrawingEditor
Sets the input map used by the tool of this drawing editor as a fall back for handling keyboard events.

This is a bound property.

Specified by:
setInputMap in interface DrawingEditor

getInputMap

public javax.swing.InputMap getInputMap()
Description copied from interface: DrawingEditor
Sets the input map used by the tool of this drawing editor as a fall back for handling keyboard events.

Tools use the input map of the drawing editor to determine what to do when a key was pressed that the tool can not handle.

This is a bound property.

Specified by:
getInputMap in interface DrawingEditor

setActionMap

public void setActionMap(javax.swing.ActionMap newValue)
Description copied from interface: DrawingEditor
Sets the action map used by the tool of this drawing editor as a fall back for performing actions.

This is a bound property.

Specified by:
setActionMap in interface DrawingEditor

getActionMap

public javax.swing.ActionMap getActionMap()
Description copied from interface: DrawingEditor
Gets the action map used by the tool of this drawing editor as a fall back for performing actions.

Tools use the action map of the drawing editor to determine what to do when an action needs to be invoked from the InputMap of the drawing editor.

This is a bound property.

Specified by:
getActionMap in interface DrawingEditor

createInputMap

protected javax.swing.InputMap createInputMap()
Override this method to create a tool-specific input map, which overrides the input map of the drawing edtior.

The implementation of this class creates an input map for the following action ID's:


createActionMap

protected javax.swing.ActionMap createActionMap()
Override this method to create a tool-specific action map, which overrides the action map of the drawing edtior.

The implementation of this class creates an action map which maps the following action ID's to the classes which define them: