## 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() method is 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.

                                    # Properties for DrawingToolLayer:
                                    drawingToolLayer.class=com.bbn.openmap.layer.DrawingToolLayer

                                    drawingToolLayer.prettyName=General Layer

                                    # optional flag to tell layer to display tooltip queues over it's OMGraphics
                                    drawingToolLayer.showHints=true

                                    # optional flag to specify file to store and read OMGraphics.  A Save button
                                    # is available on the palette.  If it's not specified and the Save button is
                                    # chosen, the user will queried for this location.
                                    drawingToolLayer.file=file to read OMGraphics from

See Also:
  Serialized Form

Nested Class Summary

Nested classes inherited from class javax.swing.JComponent
`javax.swing.JComponent.AccessibleJComponent`

Nested classes inherited from class java.awt.Container
`java.awt.Container.AccessibleAWTContainer`

Nested classes inherited from class java.awt.Component
`java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy`

Field Summary
`protected OMDrawingTool` `drawingTool` Get a handle on the DrawingTool.
`protected boolean` `DTL_DEBUG`
`protected java.lang.String[]` `fileName` The name of the file to read/save OMGraphics in.
`protected MapMouseMode` `proxyMMM`
`static java.lang.String` `SerializedURLNameProperty` A property to specify the file to use to read and save map objects in (file).
`protected boolean` `showHints` A flag to provide a tooltip over OMGraphics to click to edit.
`static java.lang.String` `ShowHintsProperty` A property that can control whether mouse events generate hints over map objects (showHints).

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

Fields inherited from class com.bbn.openmap.Layer

`addAsBackground, AddAsBackgroundProperty, addToBeanContext, AddToBeanContextProperty, attributes, autoPalette, AutoPaletteProperty, beanContextChildSupport, DisplayPaletteCmd, DisplayPropertiesCmd, doHack, HidePaletteCmd, i18n, IDListeners, localHackList, lsListeners, maxScale, MaxScaleProperty, minScale, MinScaleProperty, palette, paletteListener, PrettyNameProperty, propertyPrefix, RedrawCmd, removable, RemovableProperty, 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
`protected void` `doIt()`
`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.
`protected java.util.Vector` `getActions()` You can override this class if you want to provide more, fewer or different actions to the user.
`OMDrawingTool` `getDrawingTool()`
`java.lang.String` `getFileName()`
`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.
`java.util.Properties` `getProperties(java.util.Properties props)` Overrides Layer getProperties method., also calls that method on Layer.
`java.util.Properties` `getPropertyInfo(java.util.Properties props)` Overrides Layer getProperties method., also calls that method on Layer.
`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.
`OMGraphicList` `load()` Load the data from the file set in this layer.
`OMGraphicList` `prepare()` This is the main method you should be concerned with when overriding this class.
`void` `releaseProxyMouseMode()` If the DrawingToolLayer is using a hidden OMDrawingTool, release the proxy lock on the active MapMouseMode.
`void` `saveOMGraphics()` Get the current OMGraphicList and save it out to the file named in this class.
`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` `setSFileName(java.lang.String serializedFile)`
`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, createLayerWorker, cut, deselect, doAction, doPrepare, filter, filter, filter, getConsumeEvents, getFilter, getItemsForMapMenu, getItemsForOMGraphicMenu, getLayerWorker, getList, getMapMouseListener, getMouseEventInterpreter, getMouseModeIDsForEvents, getProjectionChangePolicy, getRenderPolicy, getSelected, getTransparency, getTransparencyAdjustmentPanel, highlight, interrupt, isCancelled, isInterruptable, isWorking, leftClick, mouseOver, paint, paste, projectionChanged, receivesMapEvents, renderDataForProjection, resetFiltering, setCancelled, setConsumeEvents, setFilter, setInterruptable, setLayerWorker, setList, setMouseEventInterpreter, setMouseModeIDsForEvents, setProjectionChangePolicy, setRenderPolicy, setTransparency, 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, firePaletteEvent, fireRequestBrowserContent, fireRequestBrowserContent, fireRequestCursor, fireRequestInfoLine, fireRequestInfoLine, fireRequestInfoLine, fireRequestMessage, fireRequestMessage, fireRequestToolTip, fireRequestToolTip, fireRequestURL, fireRequestURL, fireStatusUpdate, fireStatusUpdate, fireVetoableChange, getAddAsBackground, getAddToBeanContext, getAttribute, getBeanContext, getIcon, getMaxScale, getMinScale, getPackage, getPalette, getProjection, getPropertyPrefix, getWindowSupport, hasGUI, hidePalette, isAutoPalette, isProjectionOK, isRemovable, notifyHideHack, putAttribute, removeComponentListener, removeConfirmed, removed, removeInfoDisplayListener, removeLayerStatusListener, removeVetoableChangeListener, repaint, resetPalette, setAddAsBackground, setAddToBeanContext, setAutoPalette, setBeanContext, setIcon, setMaxScale, setMinScale, setName, setPaletteVisible, setProjection, setProjection, setProperties, setPropertyPrefix, setRemovable, 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

  A property that can control whether mouse events generate hints over map objects (showHints).

  See Also:
    Constant Field Values

### SerializedURLNameProperty

    public static final java.lang.String SerializedURLNameProperty

  A property to specify the file to use to read and save map objects in (file).

  See Also:
    Constant Field Values

### fileName

    protected java.lang.String[] fileName

  The name of the file to read/save OMGraphics in.

### 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

### getProperties

    public java.util.Properties getProperties(java.util.Properties props)

  Description copied from class: `OMGraphicHandlerLayer`
  Overrides Layer getProperties method., also calls that method on Layer. Sets the properties from the policy objects used by this OMGraphicHandler layer.

  Specified by:
    `getProperties` in interface `PropertyConsumer`
  Overrides:
    `getProperties` in class `OMGraphicHandlerLayer`

### getPropertyInfo

    public java.util.Properties getPropertyInfo(java.util.Properties props)

  Description copied from class: `OMGraphicHandlerLayer`
  Overrides Layer getProperties method., also calls that method on Layer. Sets the properties from the policy objects used by this OMGraphicHandler layer.

  Specified by:
    `getPropertyInfo` in interface `PropertyConsumer`
  Overrides:
    `getPropertyInfo` in class `OMGraphicHandlerLayer`

### prepare

    public OMGraphicList prepare()

  Description copied from class: `OMGraphicHandlerLayer`
  This is the main method you should be concerned with when overriding this class. You have to make sure that this method returns an OMGraphicList that is ready to be rendered. That means they need to be generated with the current projection, which can be retrieved by calling getProjection().

  This method will be called in a separate thread if doPrepare() is called on the layer. This will automatically cause repaint() to be called, which lets java know to call paint() on this class.

  Note that the default action of this method is to get the OMGraphicList as it is currently set in the layer, reprojects the list with the current projection (calls generate() on them), and then returns the current list.

  If your layer needs to change what is on the list based on what the current projection is, you can either clear() the list yourself and add new OMGraphics to it (remember to call generate(Projection) on them), and return the list. You also have the option of setting a ListResetPCPolicy, which will automatically set the list to null when the projection changes before calling this method. The OMGraphicHandlerList will ignore a null OMGraphicList.

  NOTE: If you call prepare directly, you may need to call repaint(), too. With all invocations of this method that are cause by a projection change, repaint() will be called for you. The method is synchronized in case renderDataForProjection() gets called while in the middle of this method. For a different projection, that would be bad.

  Overrides:
    `prepare` in class `OMGraphicHandlerLayer`

### 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

### doIt

    protected void doIt()

### getActions

    protected java.util.Vector getActions()

  You can override this class if you want to provide more, fewer or different actions to the user.

  Returns:
    Vector of Actions

### saveOMGraphics

    public void saveOMGraphics()

  Get the current OMGraphicList and save it out to the file named in this class. If that's null, the user will be asked for one.

### load

    public OMGraphicList load()

  Load the data from the file set in this layer.

  Returns:
    OMGraphicList loaded from fileName.

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

### getFileName

    public java.lang.String getFileName()

### setSFileName

    public void setSFileName(java.lang.String serializedFile)

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