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);