com.bbn.openmap.plugin
Class UTMGridPlugIn

java.lang.Object
  extended by com.bbn.openmap.plugin.AbstractPlugIn
      extended by com.bbn.openmap.plugin.BeanContextAbstractPlugIn
          extended by com.bbn.openmap.plugin.OMGraphicHandlerPlugIn
              extended by com.bbn.openmap.plugin.UTMGridPlugIn
All Implemented Interfaces:
MapMouseListener, OMGraphicHandler, PlugIn, PropertyConsumer, java.beans.beancontext.BeanContextChild, java.beans.beancontext.BeanContextMembershipListener, java.util.EventListener

public class UTMGridPlugIn
extends OMGraphicHandlerPlugIn

The UTMGridPlugIn renders UTM Zone areas, and renders a grid marking equal-distance areas around the center of the current projection. This distance grid only extends east-west for 500km in both directions from the center of the current zone because that is the extent of accuracy for those measurements - after that, you get too far away from the central meridian for the current UTM zone.

Currently, this plugin only draws 100km distance squares. Updates on the way. The plugin has the following properties that may be set:

 
 
    # Turn zone area labels on when zoomed in closer than 1:33M (true
    # is default)
    showZones=true
    showLabels=true
    # Color for UTM Zone area boundaries
    utmGridColor=hex AARRGGBB value
    # Color for the distance area grid lines
    distanceGridColor= hex AARRGGBB value
    labelCutoffScale=scale to start showing labels, default is 33000000
    show100KmGrid=false
    utmGridColor
    distanceGridColor
    distanceGridResolution=0 (not shown by default, 1 = 10000 meter grid, 5 is 1 meter grid)
    mgrsLabels=false
 
 


Field Summary
static float DEFAULT_UTM_LABEL_CUTOFF_SCALE
           
static java.lang.String DistanceGridColorProperty
           
protected  java.awt.Paint distanceGridPaint
           
protected  int distanceGridResolution
          Resolution should be MGRS accuracy, 0 for none, 1-5 otherwise, where 1 = 10000 meter grid, 5 is 1 meter grid.
static java.lang.String DistanceGridResolutionProperty
           
protected  OMGeometryList horizontalList
          The horizontal list of OMLines used for UTM zones.
static int INTERVAL_100K
           
protected  float labelCutoffScale
           
static java.lang.String LabelCutoffScaleProperty
           
protected  OMGraphicList labelList
          Used for UTM zone labels.
protected  boolean labelsAsMGRS
           
static java.lang.String LabelsAsMGRSProperty
           
protected  QuadTree<OMText> labelTree
          Used to hold OMText UTM zone labels.
protected  boolean show100kGrid
           
static java.lang.String Show100kGridProperty
           
protected  boolean showLabels
           
static java.lang.String ShowLabelsProperty
           
protected  boolean showZones
           
static java.lang.String ShowZonesProperty
           
protected  boolean UTM_DEBUG
           
protected  boolean UTM_DEBUG_VERBOSE
           
static java.lang.String UTMGridColorProperty
           
protected  java.awt.Paint utmGridPaint
           
protected  OMGeometryList verticalList
          The vertical list of OMLines used for UTM zones.
 
Fields inherited from class com.bbn.openmap.plugin.OMGraphicHandlerPlugIn
filter
 
Fields inherited from class com.bbn.openmap.plugin.BeanContextAbstractPlugIn
beanContextChildSupport
 
Fields inherited from class com.bbn.openmap.plugin.AbstractPlugIn
addToBeanContext, component, i18n, mml, name, prefix, removable, RemovableProperty
 
Fields inherited from interface com.bbn.openmap.PropertyConsumer
EditorProperty, initPropertiesProperty, LabelEditorProperty, ScopedEditorProperty
 
Constructor Summary
UTMGridPlugIn()
           
 
Method Summary
protected  void addLabel(LatLonPoint llp, UTMPoint utm, QuadTree<OMText> labelTree)
           
protected  OMGraphicList createEquiDistanceLines(UTMPoint utm, int gridLineInterval)
          Called to create 100km distance grid lines.
protected  OMGeometry createMGRSRectangle(MGRSPoint mgrsBasePoint, double voffset, double hoffset, double interval, Ellipsoid ellipsoid)
          Create a polygon representing an equi-distant area, at a meters offset with a meters interval.
protected  OMGeometryList createMGRSRectangles(LatLonPoint llp, int accuracy, int numRects)
          Create a list of rectangles representing equal areas of MGRS coordinates around a lat/lon location.
protected  OMGeometryList createMGRSRectangles(LatLonPoint llp, int accuracy, int numRects, Ellipsoid ellipsoid)
          Create a list of rectangles representing equal areas of MGRS coordinates around a lat/lon location.
protected  QuadTree<OMText> createMGRSZoneLabels()
           
protected  OMGeometryList createUTMZoneHorizontalLines()
           
protected  QuadTree<OMText> createUTMZoneLabels()
           
protected  OMGeometryList createUTMZoneVerticalLines()
           
 java.awt.Paint getDistanceGridPaint()
           
 int getDistanceGridResolution()
           
 java.awt.Component getGUI()
          Gives the PlugIn a chance to present components that control its attributes.
 float getLabelCutoffScale()
           
protected  boolean getLock()
          Get the lock to use a JColorChooser.
protected  java.awt.Color getNewPaint(java.awt.Component source, java.lang.String title, java.awt.Color startingColor)
          A convenience method to get a color from a JColorChooser.
 java.util.Properties getProperties(java.util.Properties props)
          Method to fill in a Properties object, reflecting the current values of the PropertyConsumer.
 java.util.Properties getPropertyInfo(java.util.Properties props)
          Method to fill in a Properties object with values reflecting the properties able to be set on this PropertyConsumer.
 OMGraphicList getRectangle(Projection p)
          The getRectangle call is the main call into the PlugIn module.
 java.awt.Paint getUTMGridPaint()
           
 boolean isShow100kGrid()
           
 boolean isShowLabels()
           
 boolean isShowZones()
           
protected  void releaseLock()
          Release the lock on the JColorChooser.
 void setDistanceGridPaint(java.awt.Paint value)
           
 void setDistanceGridResolution(int value)
          Resolution should be MGRS accuracy, 0 for none, 1-5 otherwise, where 1 = 10000 meter grid, 5 is 1 meter grid.
 void setLabelCutoffScale(float value)
           
 void setProperties(java.lang.String prefix, java.util.Properties props)
          Method to set the properties in the PropertyConsumer.
 void setShow100kGrid(boolean value)
           
 void setShowLabels(boolean value)
           
 void setShowZones(boolean value)
           
 void setUTMGridPaint(java.awt.Paint value)
           
 
Methods inherited from class com.bbn.openmap.plugin.OMGraphicHandlerPlugIn
canSetList, doAction, filter, filter, filter, getFilter, getList, resetFiltering, setFilter, setList, supportsSQL
 
Methods inherited from class com.bbn.openmap.plugin.BeanContextAbstractPlugIn
addPropertyChangeListener, addVetoableChangeListener, childrenAdded, childrenRemoved, findAndInit, findAndInit, findAndUndo, firePropertyChange, fireVetoableChange, getBeanContext, removePropertyChangeListener, removeVetoableChangeListener, setBeanContext
 
Methods inherited from class com.bbn.openmap.plugin.AbstractPlugIn
dispose, doPrepare, getAddToBeanContext, getComponent, getMapMouseListener, getMouseModeServiceList, getName, getPropertyPrefix, isRemovable, mouseClicked, mouseDragged, mouseEntered, mouseExited, mouseMoved, mouseMoved, mousePressed, mouseReleased, removed, repaint, setAddToBeanContext, setComponent, setMapMouseListener, setName, setProperties, setPropertyPrefix, setRemovable
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

UTM_DEBUG

protected boolean UTM_DEBUG

UTM_DEBUG_VERBOSE

protected boolean UTM_DEBUG_VERBOSE

INTERVAL_100K

public static final int INTERVAL_100K
See Also:
Constant Field Values

DEFAULT_UTM_LABEL_CUTOFF_SCALE

public static final float DEFAULT_UTM_LABEL_CUTOFF_SCALE
See Also:
Constant Field Values

showZones

protected boolean showZones

showLabels

protected boolean showLabels

labelCutoffScale

protected float labelCutoffScale

show100kGrid

protected boolean show100kGrid

labelsAsMGRS

protected boolean labelsAsMGRS

distanceGridResolution

protected int distanceGridResolution
Resolution should be MGRS accuracy, 0 for none, 1-5 otherwise, where 1 = 10000 meter grid, 5 is 1 meter grid.


utmGridPaint

protected java.awt.Paint utmGridPaint

distanceGridPaint

protected java.awt.Paint distanceGridPaint

labelTree

protected QuadTree<OMText> labelTree
Used to hold OMText UTM zone labels.


labelList

protected OMGraphicList labelList
Used for UTM zone labels.


verticalList

protected OMGeometryList verticalList
The vertical list of OMLines used for UTM zones.


horizontalList

protected OMGeometryList horizontalList
The horizontal list of OMLines used for UTM zones.


ShowLabelsProperty

public static final java.lang.String ShowLabelsProperty
See Also:
Constant Field Values

ShowZonesProperty

public static final java.lang.String ShowZonesProperty
See Also:
Constant Field Values

LabelCutoffScaleProperty

public static final java.lang.String LabelCutoffScaleProperty
See Also:
Constant Field Values

Show100kGridProperty

public static final java.lang.String Show100kGridProperty
See Also:
Constant Field Values

UTMGridColorProperty

public static final java.lang.String UTMGridColorProperty
See Also:
Constant Field Values

DistanceGridColorProperty

public static final java.lang.String DistanceGridColorProperty
See Also:
Constant Field Values

DistanceGridResolutionProperty

public static final java.lang.String DistanceGridResolutionProperty
See Also:
Constant Field Values

LabelsAsMGRSProperty

public static final java.lang.String LabelsAsMGRSProperty
See Also:
Constant Field Values
Constructor Detail

UTMGridPlugIn

public UTMGridPlugIn()
Method Detail

createUTMZoneVerticalLines

protected OMGeometryList createUTMZoneVerticalLines()

createUTMZoneHorizontalLines

protected OMGeometryList createUTMZoneHorizontalLines()

createUTMZoneLabels

protected QuadTree<OMText> createUTMZoneLabels()

createMGRSZoneLabels

protected QuadTree<OMText> createMGRSZoneLabels()

addLabel

protected void addLabel(LatLonPoint llp,
                        UTMPoint utm,
                        QuadTree<OMText> labelTree)

createEquiDistanceLines

protected OMGraphicList createEquiDistanceLines(UTMPoint utm,
                                                int gridLineInterval)
Called to create 100km distance grid lines. Was originally designed to accept different gridLineInterval distances, but has only been debugged and tested for 100000.

Parameters:
utm - the UTMPoint of the center of the area to create lines for.

createMGRSRectangles

protected OMGeometryList createMGRSRectangles(LatLonPoint llp,
                                              int accuracy,
                                              int numRects)
Create a list of rectangles representing equal areas of MGRS coordinates around a lat/lon location. The rectangles are laid out on the MGRS grid, their size determined by the accuracy limitation given, which reflects how many digits are provided in a MGRS coordinate. Uses WGS 84 ellipsoid.

Parameters:
llp - the lat/lon point of concern.
accuracy - the number of digits for northing and easting values of a MGRS coordinate, which implicitly translates to meters - 5 (1 meter) to 1 (10,000 meter).
numRects - the number of rectangles in each direction from the llp to create.

createMGRSRectangles

protected OMGeometryList createMGRSRectangles(LatLonPoint llp,
                                              int accuracy,
                                              int numRects,
                                              Ellipsoid ellipsoid)
Create a list of rectangles representing equal areas of MGRS coordinates around a lat/lon location. The rectangles are laid out on the MGRS grid, their size determined by the accuracy limitation given, which reflects how many digits are provided in a MGRS coordinate.

Parameters:
llp - the lat/lon point of concern.
accuracy - the number of digits for northing and easting values of a MGRS coordinate, which implicitly translates to meters - 5 (1 meter) to 1 (10,000 meter).
numRects - the number of rectangles in each direction from the llp to create.
ellipsoid - the ellipsoid to use.

createMGRSRectangle

protected OMGeometry createMGRSRectangle(MGRSPoint mgrsBasePoint,
                                         double voffset,
                                         double hoffset,
                                         double interval,
                                         Ellipsoid ellipsoid)
Create a polygon representing an equi-distant area, at a meters offset with a meters interval.

Parameters:
mgrsBasePoint - the center point of interest that has been normalized for the units of the rectangle (meters, km, etc).
voffset - vertical offset in meters, normalized for units, for entire polygon.
hoffset - horizontal offset in meters, normalized for units, for entire polygon.
interval - edge length of rectangle polygon in meters, normalized for units.
ellipsoid - Ellipsoid for coordinate translation.

getRectangle

public OMGraphicList getRectangle(Projection p)
The getRectangle call is the main call into the PlugIn module. The module is expected to fill the graphics list with objects that are within the screen parameters passed.

Specified by:
getRectangle in interface PlugIn
Overrides:
getRectangle in class OMGraphicHandlerPlugIn
Parameters:
p - projection of the screen, holding scale, center coords, height, width.
Returns:
OMGraphicList.
See Also:
Projection, OMGraphicList

getGUI

public java.awt.Component getGUI()
Description copied from interface: PlugIn
Gives the PlugIn a chance to present components that control its attributes.

Specified by:
getGUI in interface PlugIn
Overrides:
getGUI in class AbstractPlugIn

getNewPaint

protected java.awt.Color getNewPaint(java.awt.Component source,
                                     java.lang.String title,
                                     java.awt.Color startingColor)
A convenience method to get a color from a JColorChooser. Null will be returned if the JColorChooser lock is in place, or if something else is done where the JColorChooser would normally return null.

Parameters:
source - the source component for the JColorChooser.
title - the String to label the JColorChooser window.
startingColor - the color to give to the JColorChooser to start with. Returned if the cancel button is pressed.
Returns:
Color chosen from the JColorChooser, null if lock for chooser can't be acquired.

getLock

protected boolean getLock()
Get the lock to use a JColorChooser. Returns true if you got the lock, false if you didn't.


releaseLock

protected void releaseLock()
Release the lock on the JColorChooser.


setProperties

public void setProperties(java.lang.String prefix,
                          java.util.Properties props)
Description copied from class: AbstractPlugIn
Method to set the properties in the PropertyConsumer. The prefix is a string that should be prepended to each property key (in addition to a separating '.') in order for the PropertyConsumer to uniquely identify properties meant for it, in the midst of of Properties meant for several objects.

Specified by:
setProperties in interface PropertyConsumer
Overrides:
setProperties in class AbstractPlugIn
Parameters:
prefix - a String used by the PropertyConsumer to prepend to each property value it wants to look up - setList.getProperty(prefix.propertyKey). If the prefix had already been set, then the prefix passed in should replace that previous value.
props - a Properties object that the PropertyConsumer can use to retrieve expected properties it can use for configuration.

getProperties

public java.util.Properties getProperties(java.util.Properties props)
Description copied from class: AbstractPlugIn
Method to fill in a Properties object, reflecting the current values of the PropertyConsumer. If the PropertyConsumer has a prefix set, the property keys should have that prefix plus a separating '.' prepended to each property key it uses for configuration.

Specified by:
getProperties in interface PropertyConsumer
Overrides:
getProperties in class AbstractPlugIn
Parameters:
props - a Properties object to load the PropertyConsumer properties into. If getList equals null, then a new Properties object should be created.
Returns:
Properties object containing PropertyConsumer property values. If getList was not null, this should equal getList. Otherwise, it should be the Properties object created by the PropertyConsumer.

getPropertyInfo

public java.util.Properties getPropertyInfo(java.util.Properties props)
Description copied from class: AbstractPlugIn
Method to fill in a Properties object with values reflecting the properties able to be set on this PropertyConsumer. The key for each property should be the raw property name (without a prefix) with a value that is a String that describes what the property key represents, along with any other information about the property that would be helpful (range, default value, etc.).

Specified by:
getPropertyInfo in interface PropertyConsumer
Overrides:
getPropertyInfo in class AbstractPlugIn
Parameters:
props - a Properties object to load the PropertyConsumer properties into. If getList equals null, then a new Properties object should be created.
Returns:
Properties object containing PropertyConsumer property values. If getList was not null, this should equal getList. Otherwise, it should be the Properties object created by the PropertyConsumer.

setShowZones

public void setShowZones(boolean value)

isShowZones

public boolean isShowZones()

setShowLabels

public void setShowLabels(boolean value)

isShowLabels

public boolean isShowLabels()

setLabelCutoffScale

public void setLabelCutoffScale(float value)

getLabelCutoffScale

public float getLabelCutoffScale()

setShow100kGrid

public void setShow100kGrid(boolean value)

isShow100kGrid

public boolean isShow100kGrid()

setDistanceGridResolution

public void setDistanceGridResolution(int value)
Resolution should be MGRS accuracy, 0 for none, 1-5 otherwise, where 1 = 10000 meter grid, 5 is 1 meter grid.


getDistanceGridResolution

public int getDistanceGridResolution()

setUTMGridPaint

public void setUTMGridPaint(java.awt.Paint value)

getUTMGridPaint

public java.awt.Paint getUTMGridPaint()

setDistanceGridPaint

public void setDistanceGridPaint(java.awt.Paint value)

getDistanceGridPaint

public java.awt.Paint getDistanceGridPaint()


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