## com.bbn.openmap.examples.crew
Class RouteLayer

    java.lang.Object
      java.awt.Component
          java.awt.Container
              javax.swing.JComponent
                  com.bbn.openmap.Layer
                      com.bbn.openmap.examples.crew.RouteLayer

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

public class RouteLayer
extends Layer
implements MapMouseListener

A sample Layer implementation. It demonstrates how to write a Layer that can be added to the MapBean.

The key elements are the `paint` and `projectionChanged` methods.

`paint` renders the `Layer` on the map.

`projectionChanged` is called whenever the map's projection changes. The Layer should update its internal state to reflect the new map view. This may mean acquiring new data from a data source, such as a database, or it may be as simple as re-projecting existing graphics. The `RouteLayer` does the latter. A Layer that simply displays a legend on top of the map might not do anything in the `projectionChanged` method since its display may be independent of the current projection.

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

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
`RouteLayer()` Construct a default route layer.

Method Summary
`OMGraphicList` `createGraphics(OMGraphicList graphics)` Clears and then fills the given OMGraphicList.
`OMLine` `createLine(float lat1, float lng1, float lat2, float lng2, int lineType, java.awt.Color color, java.awt.Color selColor)` Creates an OMLine from the given parameters.
`MapMouseListener` `getMapMouseListener()` Returns self as the `MapMouseListener` in order to receive `MapMouseEvent`s.
`java.lang.String[]` `getMouseModeServiceList()` Indicates which mouse modes should send events to this `Layer`.
`boolean` `mouseClicked(java.awt.event.MouseEvent e)` Called whenever the mouse is clicked by the user and one of the requested mouse modes is active.
`boolean` `mouseDragged(java.awt.event.MouseEvent e)` Called whenever the mouse is dragged on this layer and one of the requested mouse modes is active.
`void` `mouseEntered(java.awt.event.MouseEvent e)` Called whenever the mouse enters this layer and one of the requested mouse modes is active.
`void` `mouseExited(java.awt.event.MouseEvent e)` Called whenever the mouse exits this layer and one of the requested mouse modes is active.
`void` `mouseMoved()` Called whenever the mouse is moved on this layer and one of the requested mouse modes is active, and the gesture is consumed by another active layer.
`boolean` `mouseMoved(java.awt.event.MouseEvent e)` Called whenever the mouse is moved on this layer and one of the requested mouse modes is active.
`boolean` `mousePressed(java.awt.event.MouseEvent e)` Called whenever the mouse is pressed by the user and one of the requested mouse modes is active.
`boolean` `mouseReleased(java.awt.event.MouseEvent e)` Called whenever the mouse is released by the user and one of the requested mouse modes is active.
`void` `paint(java.awt.Graphics g)` Renders the graphics list.
`void` `projectionChanged(ProjectionEvent e)` Handler for `ProjectionEvent`s.

Methods inherited from class com.bbn.openmap.Layer

`actionPerformed, addComponentListener, added, addInfoDisplayListener, addLayerStatusListener, addMouseListener, addVetoableChangeListener, childrenAdded, childrenRemoved, clearListeners, connectToBeanContext, createWindowSupport, finalize, findAndInit, findAndInit, findAndUndo, fireHideToolTip, firePaletteEvent, fireRequestBrowserContent, fireRequestBrowserContent, fireRequestCursor, fireRequestInfoLine, fireRequestInfoLine, fireRequestInfoLine, fireRequestMessage, fireRequestMessage, fireRequestToolTip, fireRequestToolTip, fireRequestURL, fireRequestURL, fireStatusUpdate, fireStatusUpdate, fireVetoableChange, getAddAsBackground, getAddToBeanContext, getAttribute, getBeanContext, getGUI, getIcon, getMaxScale, getMinScale, getPackage, getPalette, getProjection, getProperties, getPropertyInfo, getPropertyPrefix, getWindowSupport, hasGUI, hidePalette, isAutoPalette, isProjectionOK, isRemovable, notifyHideHack, putAttribute, removeComponentListener, removeConfirmed, removed, removeInfoDisplayListener, removeLayerStatusListener, removeVetoableChangeListener, renderDataForProjection, repaint, resetPalette, setAddAsBackground, setAddToBeanContext, setAutoPalette, setBeanContext, setIcon, setMaxScale, setMinScale, setName, setPaletteVisible, setProjection, setProjection, setProperties, 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 java.beans.beancontext.BeanContextChild
`addPropertyChangeListener, removePropertyChangeListener`

Constructor Detail

### RouteLayer

    public RouteLayer()

  Construct a default route layer. Initializes omgraphics to a new OMGraphicList, and invokes createGraphics to create the canned list of routes.

Method Detail

### createLine

    public OMLine createLine(float lat1,
                             float lng1,
                             float lat2,
                             float lng2,
                             int lineType,
                             java.awt.Color color,
                             java.awt.Color selColor)

  Creates an OMLine from the given parameters.

  Parameters:
    `lat1` - The line's starting latitude
    `lng1` - The line's starting longitude
    `lat2` - The line's ending latitude
    `lng2` - The line's ending longitude
    `lineType` - The line's type
    `color` - The line's color
    `selColor` - The line's selected color
  Returns:
    An OMLine with the given properties

### createGraphics

    public OMGraphicList createGraphics(OMGraphicList graphics)

  Clears and then fills the given OMGraphicList. Creates three lines for display on the map.

  Parameters:
    `graphics` - The OMGraphicList to clear and populate
  Returns:
    the graphics list, after being cleared and filled

### paint

    public void paint(java.awt.Graphics g)

  Renders the graphics list. It is important to make this routine as fast as possible since it is called frequently by Swing, and the User Interface blocks while painting is done.

### getMapMouseListener

    public MapMouseListener getMapMouseListener()

  Returns self as the `MapMouseListener` in order to receive `MapMouseEvent`s. If the implementation would prefer to delegate `MapMouseEvent`s, it could return the delegate from this method instead.

  Overrides:
    `getMapMouseListener` in class `Layer`
  Returns:
    The object to receive `MapMouseEvent` s or null if this layer isn't interested in `MapMouseEvent` s

### projectionChanged

    public void projectionChanged(ProjectionEvent e)

  Handler for `ProjectionEvent`s. This function is invoked when the `MapBean` projection changes. The projection is stored, the graphics are reprojected and the Layer is repainted.

  It is important to store a <bold>clone </bold> of the `Projection` and not the given `Projection` since the `Projection` given is the actual `MapBean` `Projection`. This will ensure that no other objects will be able to manipulate the `Projection` held by this `Layer`.

  Specified by:
    `projectionChanged` in interface `ProjectionListener`
  Parameters:
    `e` - the projection event

### getMouseModeServiceList

    public java.lang.String[] getMouseModeServiceList()

  Indicates which mouse modes should send events to this `Layer`.

  Specified by:
    `getMouseModeServiceList` in interface `MapMouseListener`
  Returns:
    An array mouse mode names
  See Also:
    `MapMouseListener`, `MouseDelegator`

### mousePressed

    public boolean mousePressed(java.awt.event.MouseEvent e)

  Called whenever the mouse is pressed by the user and one of the requested mouse modes is active.

  Specified by:
    `mousePressed` in interface `MapMouseListener`
  Parameters:
    `e` - the press event
  Returns:
    true if event was consumed(handled), false otherwise
  See Also:
    `getMouseModeServiceList()`

### mouseReleased

    public boolean mouseReleased(java.awt.event.MouseEvent e)

  Called whenever the mouse is released by the user and one of the requested mouse modes is active.

  Specified by:
    `mouseReleased` in interface `MapMouseListener`
  Parameters:
    `e` - the release event
  Returns:
    true if event was consumed (handled), false otherwise
  See Also:
    `getMouseModeServiceList()`

### mouseClicked

    public boolean mouseClicked(java.awt.event.MouseEvent e)

  Called whenever the mouse is clicked by the user and one of the requested mouse modes is active.

  Specified by:
    `mouseClicked` in interface `MapMouseListener`
  Parameters:
    `e` - the click event
  Returns:
    true if event was consumed (handled), false otherwise
  See Also:
    `getMouseModeServiceList()`

### mouseEntered

    public void mouseEntered(java.awt.event.MouseEvent e)

  Called whenever the mouse enters this layer and one of the requested mouse modes is active.

  Specified by:
    `mouseEntered` in interface `MapMouseListener`
  Parameters:
    `e` - the enter event
  See Also:
    `getMouseModeServiceList()`

### mouseExited

    public void mouseExited(java.awt.event.MouseEvent e)

  Called whenever the mouse exits this layer and one of the requested mouse modes is active.

  Specified by:
    `mouseExited` in interface `MapMouseListener`
  Parameters:
    `e` - the exit event
  See Also:
    `getMouseModeServiceList()`

### mouseDragged

    public boolean mouseDragged(java.awt.event.MouseEvent e)

  Called whenever the mouse is dragged on this layer and one of the requested mouse modes is active.

  Specified by:
    `mouseDragged` in interface `MapMouseListener`
  Parameters:
    `e` - the drag event
  Returns:
    true if event was consumed (handled), false otherwise
  See Also:
    `getMouseModeServiceList()`

### mouseMoved

    public boolean mouseMoved(java.awt.event.MouseEvent e)

  Called whenever the mouse is moved on this layer and one of the requested mouse modes is active.

  Tries to locate a graphic near the mouse, and if it is found, it is highlighted and the Layer is repainted to show the highlighting.

  Specified by:
    `mouseMoved` in interface `MapMouseListener`
  Parameters:
    `e` - the move event
  Returns:
    true if event was consumed (handled), false otherwise
  See Also:
    `getMouseModeServiceList()`

### mouseMoved

    public void mouseMoved()

  Called whenever the mouse is moved on this layer and one of the requested mouse modes is active, and the gesture is consumed by another active layer. We need to deselect anything that may be selected.

  Specified by:
    `mouseMoved` in interface `MapMouseListener`
  See Also:
    `getMouseModeServiceList()`

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