31a32,40
> * A tool can be in the following states:
> * disabled<->enabled[unusable<->usable[active<->inactive]]
> * <->always_usable[active<->inactive]<->disabled
> *
where each square bracket indicates a state nesting level
> * and arrows possible state transitions.
> * Unusable tools are always inactive as well and disabled tools
> * are always unusable as well.
> * State changes are propagated to registered ToolListeners.
> *
38a48,58
> * An active tool is the currently selected tool in the
> * DrawingView. A tool can be activated/deactivated
> * by calling the activate()/deactivate() method.
> *
> * @return true if the tool is the selected tool in the DrawingView, false otherwise
> * @see #isEnabled
> * @see #isUsable
> */
> public boolean isActive();
>
> /**
78a99,116
> /**
> * A tool must be enabled in order to use it and to activate/deactivate it.
> * Typically, the program enables or disables a tool.
> *
> * @see #isUsable
> * @see #isActive
> */
> public boolean isEnabled();
> public void setEnabled(boolean enableUsableCheck);
>
> /**
> * A usable tool is a enabled and either active or inactive.
> * Typically, the tool should be able to determine itself whether it is
> * usable or not.
> *
> * @see #isEnabled
> * @see #isUsable
> */
79a118,118
> public void setUsable(boolean newIsUsable);