## com.bbn.openmap.layer
Class DrawingToolLayer

    java.lang.Object
      |
      +--java.awt.Component
            |
            +--java.awt.Container
                  |
                  +--javax.swing.JComponent
                        |
                        +--com.bbn.openmap.Layer
                              |
                              +--com.bbn.openmap.layer.OMGraphicHandlerLayer
                                    |
                                    +--com.bbn.openmap.layer.DrawingToolLayer

All Implemented Interfaces:
  java.awt.event.ActionListener, java.beans.beancontext.BeanContextChild, java.beans.beancontext.BeanContextMembershipListener, DrawingToolRequestor, java.util.EventListener, GestureResponsePolicy, java.awt.image.ImageObserver, java.awt.MenuContainer, ProjectionListener, ProjectionPainter, PropertyConsumer, java.io.Serializable

Direct Known Subclasses:
  EditorLayer

public class DrawingToolLayer
extends OMGraphicHandlerLayer
implements DrawingToolRequestor

This layer can receive graphics from the OMDrawingToolLauncher, and also sent it's graphics to the OMDrawingTool for editing.

The projectionChanged() and paint() methods are taken care of in the OMGraphicHandlerLayer superclass.

This class responds to all the properties that the OMGraphicHandlerLayer repsonds to, including the mouseModes property. If the mouseModes property isn't set, the SelectMouseMode.modeID mode ID is set. When the MapMouseInterpreter calls select(OMGraphic), the OMGraphic is passed to the DrawingTool. This class also responds to the showHints property (true by default), which dictates if tooltips and information delegator text is displayed when the layer's contents are moused over.

See Also:
  Serialized Form

Field Summary
`protected OMDrawingTool` `drawingTool` Get a handle on the DrawingTool.
`protected boolean` `DTL_DEBUG`
`protected MapMouseMode` `proxyMMM`
`protected boolean` `showHints` A flag to provide a tooltip over OMGraphics to click to edit.
`static java.lang.String` `ShowHintsProperty`

Fields inherited from class com.bbn.openmap.layer.OMGraphicHandlerLayer
`cancelled, CANCELLED_LOCK, consumeEvents, ConsumeEventsProperty, filter, layerWorker, LAYERWORKER_LOCK, mouseEventInterpreter, mouseModeIDs, MouseModesProperty, projectionChangePolicy, ProjectionChangePolicyProperty, renderPolicy, RenderPolicyProperty, selectedList`

Fields inherited from class com.bbn.openmap.Layer

`addAsBackground, AddAsBackgroundProperty, addToBeanContext, AddToBeanContextProperty, autoPalette, AutoPaletteProperty, beanContextChildSupport, DisplayPaletteCmd, DisplayPropertiesCmd, doHack, HidePaletteCmd, i18n, IDListeners, localHackList, lsListeners, palette, paletteListener, PrettyNameProperty, propertyPrefix, RedrawCmd, removable, RemovableProperty, RemoveableProperty, SWING_PACKAGE, windowSupport`

Fields inherited from class javax.swing.JComponent
`accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW`

Fields inherited from class java.awt.Component
`BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT`

Fields inherited from interface com.bbn.openmap.PropertyConsumer
`EditorProperty, initPropertiesProperty, LabelEditorProperty, ScopedEditorProperty`

Fields inherited from interface java.awt.image.ImageObserver
`ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH`

Constructor Summary
`DrawingToolLayer()`

Method Summary
`void` `drawingComplete(OMGraphic omg, OMAction action)` DrawingToolRequestor method.
`void` `edit(OMGraphic omg)`
`void` `findAndInit(java.lang.Object someObj)` Called by findAndInit(Iterator) so subclasses can find objects, too.
`void` `findAndUndo(java.lang.Object someObj)` BeanContextMembershipListener method.
`OMDrawingTool` `getDrawingTool()`
`java.awt.Component` `getGUI()` Gets the gui controls associated with the layer.
`java.lang.String` `getInfoText(OMGraphic omg)` Query for what text should be placed over the information bar when the mouse is over a particular OMGraphic.
`protected MapMouseMode` `getProxyMouseMode()` Get the ProxyMouseMode for the internal drawing tool, if there is one.
`boolean` `getShowHints()`
`java.lang.String` `getToolTipTextFor(OMGraphic omgr)` Query for what tooltip to display for an OMGraphic when the mouse is over it.
`boolean` `isHighlightable(OMGraphic omg)` Query that an OMGraphic can be highlighted when the mouse moves over it.
`boolean` `isSelectable(OMGraphic omg)` Query that an OMGraphic is selectable.
`void` `releaseProxyMouseMode()` If the DrawingToolLayer is using a hidden OMDrawingTool, release the proxy lock on the active MapMouseMode.
`void` `select(OMGraphicList omgl)` GestureResponsePolicy method.
`void` `setDrawingTool(OMDrawingTool dt)`
`void` `setProperties(java.lang.String prefix, java.util.Properties props)` Overrides the Layer setProperties method.
`protected void` `setProxyMouseMode(MapMouseMode mmm)` Set the ProxyMouseMode for the internal drawing tool, if there is one.
`void` `setShowHints(boolean show)` A flag to provide a tooltip over OMGraphics to click to edit.
`boolean` `shouldEdit(OMGraphic omgr)` A method called from within different MapMouseListener methods to check whether an OMGraphic *should* be edited if the OMDrawingTool is able to edit it.

Methods inherited from class com.bbn.openmap.layer.OMGraphicHandlerLayer

`canSetList, copy, cut, deselect, doAction, doPrepare, filter, filter, filter, getConsumeEvents, getFilter, getItemsForMapMenu, getItemsForOMGraphicMenu, getLayerWorker, getList, getMapMouseListener, getMouseEventInterpreter, getMouseModeIDsForEvents, getProjectionChangePolicy, getProperties, getPropertyInfo, getRenderPolicy, getSelected, highlight, interrupt, isCancelled, isWorking, leftClick, mouseOver, paint, paste, prepare, projectionChanged, receivesMapEvents, renderDataForProjection, resetFiltering, setCancelled, setConsumeEvents, setFilter, setLayerWorker, setList, setMouseEventInterpreter, setMouseModeIDsForEvents, setProjectionChangePolicy, setRenderPolicy, supportsSQL, unhighlight, workerComplete`

Methods inherited from class com.bbn.openmap.Layer

`actionPerformed, addComponentListener, added, addInfoDisplayListener, addLayerStatusListener, addMouseListener, addVetoableChangeListener, childrenAdded, childrenRemoved, clearListeners, connectToBeanContext, createWindowSupport, finalize, findAndInit, fireHideToolTip, fireHideToolTip, firePaletteEvent, fireRequestBrowserContent, fireRequestBrowserContent, fireRequestCursor, fireRequestInfoLine, fireRequestInfoLine, fireRequestInfoLine, fireRequestMessage, fireRequestMessage, fireRequestToolTip, fireRequestToolTip, fireRequestToolTip, fireRequestToolTip, fireRequestURL, fireRequestURL, fireStatusUpdate, fireStatusUpdate, fireVetoableChange, getAddAsBackground, getAddToBeanContext, getBeanContext, getPackage, getPalette, getProjection, getPropertyPrefix, getWindowSupport, hidePalette, isRemovable, isRemoveable, notifyHideHack, removeComponentListener, removeConfirmed, removed, removeInfoDisplayListener, removeLayerStatusListener, removeVetoableChangeListener, repaint, resetPalette, setAddAsBackground, setAddToBeanContext, setBeanContext, setName, setPaletteVisible, setProjection, setProjection, setProperties, setPropertyPrefix, setRemovable, setRemoveable, setVisible, setWindowSupport, showPalette`

Methods inherited from class javax.swing.JComponent

`addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAccessibleContext, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFont, setForeground, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, unregisterKeyboardAction, update, updateUI`

Methods inherited from class java.awt.Container

`add, add, add, add, add, addContainerListener, addImpl, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree`

Methods inherited from class java.awt.Component

`action, add, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseEvent, processMouseWheelEvent, remove, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle`

Methods inherited from class java.lang.Object
`clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Methods inherited from interface com.bbn.openmap.tools.drawing.DrawingToolRequestor
`getName`

Methods inherited from interface java.beans.beancontext.BeanContextChild
`addPropertyChangeListener, removePropertyChangeListener`

Field Detail

### drawingTool

    protected OMDrawingTool drawingTool

  Get a handle on the DrawingTool.

### showHints

    protected boolean showHints

  A flag to provide a tooltip over OMGraphics to click to edit.

### ShowHintsProperty

    public static final java.lang.String ShowHintsProperty

See Also:
  Constant Field Values

### DTL_DEBUG

    protected boolean DTL_DEBUG

### proxyMMM

    protected MapMouseMode proxyMMM

Constructor Detail

### DrawingToolLayer

    public DrawingToolLayer()

Method Detail

### setProperties

    public void setProperties(java.lang.String prefix,
                              java.util.Properties props)

  Description copied from class: `OMGraphicHandlerLayer`
  Overrides the Layer setProperties method. Also calls Layer's version. If the ProjectionChangePolicy and RenderPolicy objects are set programmatically and are PropertyConsumers, they will still have access to properties if this method is called. Their property prefix will be scoped as if the OMGraphicHandlerLayer had them created, with their prefix being prefix + . + PropertyChangePolicyProperty and prefix + . + RenderPolicyProperty.

  Specified by:
    `setProperties` in interface `PropertyConsumer`
  Overrides:
    `setProperties` in class `OMGraphicHandlerLayer`
  Parameters:
    `prefix` - the token to prefix the property names
    `props` - the `Properties` object

### getDrawingTool

    public OMDrawingTool getDrawingTool()

### setDrawingTool

    public void setDrawingTool(OMDrawingTool dt)

### drawingComplete

    public void drawingComplete(OMGraphic omg,
                                OMAction action)

  DrawingToolRequestor method.

  Specified by:
    `drawingComplete` in interface `DrawingToolRequestor`

### releaseProxyMouseMode

    public void releaseProxyMouseMode()

  If the DrawingToolLayer is using a hidden OMDrawingTool, release the proxy lock on the active MapMouseMode.

### findAndInit

    public void findAndInit(java.lang.Object someObj)

  Called by findAndInit(Iterator) so subclasses can find objects, too.

  Overrides:
    `findAndInit` in class `Layer`

### findAndUndo

    public void findAndUndo(java.lang.Object someObj)

  BeanContextMembershipListener method. Called when a new object is removed from the BeanContext of this object.

  Overrides:
    `findAndUndo` in class `Layer`

### setProxyMouseMode

    protected void setProxyMouseMode(MapMouseMode mmm)

  Set the ProxyMouseMode for the internal drawing tool, if there is one. Can be null. Used to reset the mouse mode when drawing's complete.

### getProxyMouseMode

    protected MapMouseMode getProxyMouseMode()

  Get the ProxyMouseMode for the internal drawing tool, if there is one. May be null. Used to reset the mouse mode when drawing's complete.

### shouldEdit

    public boolean shouldEdit(OMGraphic omgr)

  A method called from within different MapMouseListener methods to check whether an OMGraphic *should* be edited if the OMDrawingTool is able to edit it. Can be used by subclasses to delineate between OMGraphics that are non-relocatable versus those that can be moved. This method should work together with the getToolTipForOMGraphic() method so that OMGraphics that shouldn't be edited don't provide tooltips that suggest that they can be.

  By default, this method always returns true because the DrawingToolLayer always thinks the OMGraphic should be edited.

### getGUI

    public java.awt.Component getGUI()

  Description copied from class: `Layer`
  Gets the gui controls associated with the layer. This default implementation returns null indicating that the layer has no gui controls.

  Overrides:
    `getGUI` in class `Layer`
  Returns:
    java.awt.Component or null

### setShowHints

    public void setShowHints(boolean show)

  A flag to provide a tooltip over OMGraphics to click to edit.

### getShowHints

    public boolean getShowHints()

### isHighlightable

    public boolean isHighlightable(OMGraphic omg)

  Query that an OMGraphic can be highlighted when the mouse moves over it. If the answer is true, then highlight with this OMGraphics will be called, in addition to getInfoText() and getToolTipTextFor()

  Specified by:
    `isHighlightable` in interface `GestureResponsePolicy`
  Overrides:
    `isHighlightable` in class `OMGraphicHandlerLayer`

### isSelectable

    public boolean isSelectable(OMGraphic omg)

  Query that an OMGraphic is selectable.

  Specified by:
    `isSelectable` in interface `GestureResponsePolicy`
  Overrides:
    `isSelectable` in class `OMGraphicHandlerLayer`

### getInfoText

    public java.lang.String getInfoText(OMGraphic omg)

  Query for what text should be placed over the information bar when the mouse is over a particular OMGraphic.

  Specified by:
    `getInfoText` in interface `GestureResponsePolicy`
  Overrides:
    `getInfoText` in class `OMGraphicHandlerLayer`

### getToolTipTextFor

    public java.lang.String getToolTipTextFor(OMGraphic omgr)

  Query for what tooltip to display for an OMGraphic when the mouse is over it.

  Specified by:
    `getToolTipTextFor` in interface `GestureResponsePolicy`
  Overrides:
    `getToolTipTextFor` in class `OMGraphicHandlerLayer`

### select

    public void select(OMGraphicList omgl)

  GestureResponsePolicy method.

  Specified by:
    `select` in interface `GestureResponsePolicy`
  Overrides:
    `select` in class `OMGraphicHandlerLayer`

### edit

    public void edit(OMGraphic omg)

Copyright (C) BBNT Solutions LLC; See http://openmap.bbn.com/ for details