|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
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 com.bbn.openmap.layer.editor.EditorLayer com.bbn.openmap.layer.test.GeoIntersectionLayer
public class GeoIntersectionLayer
This layer demonstrates the use of the com.bbn.openmap.geo package to do intersection calculations in lat/lon space. It allows you to load shape files for sample data sets, and then draw lines, polygons and points on the map to as test cases for intersections on the sample data sets. The ToolPanel will hold controls for choosing what kind of things to draw, and how they should be rendered. The palette for this layer controls the sample data sets, letting you add and remove data files and change their colors.
If you draw a line, polyline or point, the shapes in the data sets that intersect with them will be rendered in the 'select' colors. If you draw a closed polygon with a fill color, the data set shapes inside the polygon will also be selected. The palette has controls for showing the actual points of intersection for paths and their sample data regions. There is also an option to allow mouse clicks on a data set region to create an image over the bounding rectangle for that region, checking the Geo point intersection algorithm against the Java 2D algorithm for the shape in projected pixel space. An all-green image is good, pixels where the algorithms differ will be red.
The properties for this layer are:
geo.class=com.bbn.openmap.layer.test.GeoIntersectionLayer geo.prettyName=GEO Intersections geo.editor=com.bbn.openmap.layer.editor.DrawingEditorTool geo.showAttributes=true geo.loaders=lines polys points geo.mouseModes=Gestures geo.lines.class=com.bbn.openmap.tools.drawing.OMLineLoader geo.polys.class=com.bbn.openmap.tools.drawing.OMPolyLoader geo.points.class=com.bbn.openmap.tools.drawing.OMPointLoader geo.shapeFileList=geocounties geolakes geocountries geo.geocounties=/data/shape/usa/counties.shp geo.geolakes=/data/shape/world/lakes.shp geo.geocountries=/data/shape/world/cntry02/cntry02.shp # Colors for regular, unselected data shapes geo.fillColor=FF333399 geo.selectColor=ffff9900 geo.mattingColor=ffff9900 # Colors for data shapes intersected by drawn shapes geo.selected.fillColor=FFFFFF00 geo.selected.selectColor=ffff9900 geo.selected.mattingColor=ffff9900
Nested Class Summary | |
---|---|
static class |
GeoIntersectionLayer.OMLineSegment
|
static class |
GeoIntersectionLayer.OMPolyRegion
|
protected class |
GeoIntersectionLayer.RemoveShapesActionListener
|
Nested classes/interfaces inherited from class javax.swing.JComponent |
---|
javax.swing.JComponent.AccessibleJComponent |
Nested classes/interfaces inherited from class java.awt.Container |
---|
java.awt.Container.AccessibleAWTContainer |
Nested classes/interfaces inherited from class java.awt.Component |
---|
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy |
Field Summary | |
---|---|
protected boolean |
createPointCheck
|
static boolean |
DEBUG
|
protected OMGraphicList |
drawnList
This list holds the OMGraphics that have been drawn. |
protected OMGraphicList |
fileDataList
This list holds the EsriGraphicLists from the Shape files. |
protected OMGraphicList |
intersectionResultList
This list holds the BoundaryCrossings and the image masks created from Intersection queries. |
static java.lang.String |
PointCheckProperty
|
protected ExtentIndexImpl |
regionIndex
The RegionIndex organizing the Shape OMGraphics for searching. |
static java.lang.String |
SHAPE_CONTROL_ATTRIBUTE
|
static java.lang.String |
SHAPE_FILE_NAME_ATTRIBUTE
|
static java.lang.String |
SHAPE_VISIBILITY_CONTROL_ATTRIBUTE
|
protected DrawingAttributes |
shapeDA
|
protected DrawingAttributes |
shapeDASelected
|
static java.lang.String |
ShapeFileListProperty
|
static java.lang.String |
ShapeFileProperty
|
protected boolean |
showCrossingPoints
|
static java.lang.String |
ShowCrossingPointsProperty
|
Fields inherited from class com.bbn.openmap.layer.editor.EditorLayer |
---|
editorTool, EditorToolProperty, elmm, orientation |
Fields inherited from class com.bbn.openmap.layer.DrawingToolLayer |
---|
actions, box, dbfFactory, drawingAttributes, drawingTool, DTL_DEBUG, fileName, jcb, omGraphics, proxyMMM, SerializedURLNameProperty, showHints, ShowHintsProperty |
Fields inherited from class com.bbn.openmap.layer.OMGraphicHandlerLayer |
---|
consumeEvents, ConsumeEventsProperty, filter, interruptable, InterruptableProperty, layerWorker, LAYERWORKER_LOCK, layerWorkerQueue, logger, mouseEventInterpreter, mouseModeIDs, MouseModesProperty, projectionChangePolicy, ProjectionChangePolicyProperty, renderPolicy, RenderPolicyProperty, selectedList, TransparencyProperty |
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 | |
---|---|
GeoIntersectionLayer()
|
Method Summary | |
---|---|
void |
addShapeFile(java.io.File shpFile)
Add the data from a shape file to the region list or edge list, depending on the content type. |
void |
addShapeFileFromUser()
Query the user for a shape file, and add the contents to the region list or line list if a valid file is selected. |
protected void |
addToRegionIndex(OMGraphicList omgl,
ExtentIndex regionIndex)
|
protected void |
addToRegionIndex(OMPoly p,
ExtentIndex regionIndex)
|
void |
calculateIntersectionsWithDrawnList()
|
void |
deselect(OMGraphicList omgl)
Designate a list of OMGraphics as de-selected. |
void |
drawingComplete(OMGraphic omg,
OMAction action)
DrawingToolRequestor method. |
OMGraphicList |
getDrawnIntersectorList()
|
protected javax.swing.JPanel |
getFileListControl()
|
java.awt.Component |
getGUI()
Gets the gui controls associated with the layer. |
protected GeoPath |
getPath(OMLine oml)
|
protected GeoPath |
getPath(OMPoly omp)
|
protected GeoPath |
getPathFromOMGraphic(OMGraphic omg)
|
OMGraphic |
getPointIntersectionImage(OMGraphic omg)
|
ExtentIndex |
getRegionIndex(boolean resetRegionSelection)
|
DrawingAttributes |
getShapeDA()
|
DrawingAttributes |
getShapeDASelected()
|
java.lang.String |
getToolTipTextFor(OMGraphic omg)
Query for what tooltip to display for an OMGraphic when the mouse is over it. |
void |
highlight(OMGraphic omg)
Fleeting change of appearance for mouse movements over an OMGraphic. |
boolean |
isCreatePointCheck()
|
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. |
boolean |
isShowCrossingPoints()
|
static void |
main(java.lang.String[] argv)
|
boolean |
mouseOver(MapMouseEvent mme)
A notification that the mouse cursor has been moved over the map, not over any of the OMGraphics on the GestureResponsePolicy. |
OMGraphicList |
prepare()
This is the main method you should be concerned with when overriding this class. |
void |
propertyChange(java.beans.PropertyChangeEvent evt)
|
void |
rebuildFileListControl()
|
boolean |
receivesMapEvents()
A query from the MapMouseInterpreter wondering if the GestureResponsePolicy wants events pertaining to mouse movements over the map that are not over an OMGraphic. |
void |
runGeoTests(int numIterations,
int numToSkipAtStart)
|
void |
select(OMGraphicList omgl)
GestureResponsePolicy method. |
void |
setCreatePointCheck(boolean createPointCheck)
|
void |
setProperties(java.lang.String prefix,
java.util.Properties props)
Overrides the Layer setProperties method. |
protected void |
setRegionAsSelected(GeoIntersectionLayer.OMPolyRegion ompr)
|
void |
setShapeDA(DrawingAttributes shapeDA)
|
void |
setShapeDASelected(DrawingAttributes shapeDASelected)
|
protected void |
setShapeListVisibilityForCheckbox()
|
void |
setShowCrossingPoints(boolean showCrossingPoints)
|
void |
unhighlight(OMGraphic omg)
Notification to set OMGraphic to normal appearance. |
Methods inherited from class com.bbn.openmap.layer.editor.EditorLayer |
---|
creatingOMGraphic, dispose, findAndInit, findAndUndo, getEditorTool, getFace, getKey, getMouseEventInterpreter, getMouseMode, getMouseModeIDsForEvents, getOrientation, setEditorTool, setKey, setMouseModeIDsForEvents, setName, setOrientation, setVisible |
Methods inherited from class com.bbn.openmap.layer.DrawingToolLayer |
---|
doIt, edit, getActions, getDbfFactory, getDrawingAttributes, getDrawingTool, getFileName, getInfoText, getOMGraphics, getProperties, getPropertyInfo, getProxyMouseMode, getShowHints, load, releaseProxyMouseMode, saveOMGraphics, setDbfFactory, setDrawingAttributes, setDrawingTool, setFileName, setOMGraphics, setProxyMouseMode, setShowHints, shouldEdit |
Methods inherited from class javax.swing.JComponent |
---|
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, getAccessibleContext, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, 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, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, 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, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, 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, processMouseWheelEvent, remove, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, 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 |
---|
protected OMGraphicList drawnList
protected OMGraphicList fileDataList
protected OMGraphicList intersectionResultList
protected ExtentIndexImpl regionIndex
protected DrawingAttributes shapeDA
protected DrawingAttributes shapeDASelected
public static final java.lang.String ShapeFileListProperty
public static final java.lang.String ShapeFileProperty
public static final java.lang.String ShowCrossingPointsProperty
public static final java.lang.String PointCheckProperty
public static final java.lang.String SHAPE_FILE_NAME_ATTRIBUTE
public static final java.lang.String SHAPE_VISIBILITY_CONTROL_ATTRIBUTE
public static final java.lang.String SHAPE_CONTROL_ATTRIBUTE
protected boolean showCrossingPoints
protected boolean createPointCheck
public static boolean DEBUG
Constructor Detail |
---|
public GeoIntersectionLayer()
Method Detail |
---|
public void setProperties(java.lang.String prefix, java.util.Properties props)
OMGraphicHandlerLayer
setProperties
in interface PropertyConsumer
setProperties
in class EditorLayer
prefix
- the token to prefix the property namesprops
- the Properties
objectpublic OMGraphicList prepare()
OMGraphicHandlerLayer
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, re-projects 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.
prepare
in class DrawingToolLayer
public void calculateIntersectionsWithDrawnList()
protected void setRegionAsSelected(GeoIntersectionLayer.OMPolyRegion ompr)
protected GeoPath getPathFromOMGraphic(OMGraphic omg)
protected GeoPath getPath(OMLine oml)
protected GeoPath getPath(OMPoly omp)
public void addShapeFileFromUser()
public void addShapeFile(java.io.File shpFile)
shpFile
- protected void setShapeListVisibilityForCheckbox()
public ExtentIndex getRegionIndex(boolean resetRegionSelection)
protected void addToRegionIndex(OMPoly p, ExtentIndex regionIndex)
protected void addToRegionIndex(OMGraphicList omgl, ExtentIndex regionIndex)
public void drawingComplete(OMGraphic omg, OMAction action)
EditorLayer
drawingComplete
in interface DrawingToolRequestor
drawingComplete
in class EditorLayer
public OMGraphicList getDrawnIntersectorList()
public boolean receivesMapEvents()
OMGraphicHandlerLayer
receivesMapEvents
in interface GestureResponsePolicy
receivesMapEvents
in class OMGraphicHandlerLayer
public boolean mouseOver(MapMouseEvent mme)
OMGraphicHandlerLayer
mouseOver
in interface GestureResponsePolicy
mouseOver
in class OMGraphicHandlerLayer
mme
- MapMouseEvent describing the location of the mouse.
public boolean isHighlightable(OMGraphic omg)
DrawingToolLayer
isHighlightable
in interface GestureResponsePolicy
isHighlightable
in class DrawingToolLayer
public java.lang.String getToolTipTextFor(OMGraphic omg)
DrawingToolLayer
getToolTipTextFor
in interface GestureResponsePolicy
getToolTipTextFor
in class DrawingToolLayer
public void highlight(OMGraphic omg)
OMGraphicHandlerLayer
highlight
in interface GestureResponsePolicy
highlight
in class OMGraphicHandlerLayer
public void unhighlight(OMGraphic omg)
OMGraphicHandlerLayer
unhighlight
in interface GestureResponsePolicy
unhighlight
in class OMGraphicHandlerLayer
public boolean isSelectable(OMGraphic omg)
DrawingToolLayer
isSelectable
in interface GestureResponsePolicy
isSelectable
in class DrawingToolLayer
public void select(OMGraphicList omgl)
DrawingToolLayer
select
in interface GestureResponsePolicy
select
in class DrawingToolLayer
public void deselect(OMGraphicList omgl)
OMGraphicHandlerLayer
deselect
in interface GestureResponsePolicy
deselect
in class OMGraphicHandlerLayer
public OMGraphic getPointIntersectionImage(OMGraphic omg)
protected javax.swing.JPanel getFileListControl()
public void rebuildFileListControl()
public java.awt.Component getGUI()
Layer
getGUI
in class DrawingToolLayer
public boolean isShowCrossingPoints()
public void setShowCrossingPoints(boolean showCrossingPoints)
public void propertyChange(java.beans.PropertyChangeEvent evt)
propertyChange
in interface java.beans.PropertyChangeListener
public DrawingAttributes getShapeDA()
public void setShapeDA(DrawingAttributes shapeDA)
public DrawingAttributes getShapeDASelected()
public void setShapeDASelected(DrawingAttributes shapeDASelected)
public boolean isCreatePointCheck()
public void setCreatePointCheck(boolean createPointCheck)
public void runGeoTests(int numIterations, int numToSkipAtStart)
public static void main(java.lang.String[] argv)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |