public class GeoIntersectionLayer extends EditorLayer implements java.beans.PropertyChangeListener
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
Modifier and Type | Class and Description |
---|---|
static class |
GeoIntersectionLayer.OMLineSegment |
static class |
GeoIntersectionLayer.OMPolyRegion |
protected class |
GeoIntersectionLayer.RemoveShapesActionListener |
javax.swing.JComponent.AccessibleJComponent
Modifier and Type | Field and Description |
---|---|
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 |
editorTool, EditorToolProperty, elmm, orientation
actions, box, dbfFactory, drawingAttributes, drawingTool, DTL_DEBUG, fileName, jcb, proxyMMM, SerializedURLNameProperty, showHints, ShowHintsProperty
consumeEvents, ConsumeEventsProperty, filter, interruptable, InterruptableProperty, layerWorker, LAYERWORKER_LOCK, layerWorkerQueue, logger, mouseEventInterpreter, mouseModeIDs, MouseModesProperty, projectionChangePolicy, ProjectionChangePolicyProperty, renderPolicy, RenderPolicyProperty, selectedList, TransparencyProperty
addAsBackground, AddAsBackgroundProperty, addToBeanContext, AddToBeanContextProperty, attributes, autoPalette, AutoPaletteProperty, beanContextChildSupport, coordTransform, DataPathPrefixProperty, DisplayPaletteCmd, DisplayPropertiesCmd, doHack, HidePaletteCmd, i18n, localHackList, maxScale, MaxScaleProperty, minScale, MinScaleProperty, palette, paletteListener, PrettyNameProperty, propertyPrefix, RedrawCmd, removable, RemovableProperty, SWING_PACKAGE, TransformProperty, windowSupport
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
EditorProperty, initPropertiesProperty, LabelEditorProperty, ScopedEditorProperty
Constructor and Description |
---|
GeoIntersectionLayer() |
Modifier and Type | Method and Description |
---|---|
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.
|
creatingOMGraphic, dispose, findAndInit, findAndUndo, getEditorTool, getFace, getKey, getMouseEventInterpreter, getMouseMode, getMouseModeIDsForEvents, getOrientation, setEditorTool, setKey, setMouseModeIDsForEvents, setName, setOrientation, setVisible
doIt, edit, getActions, getDbfFactory, getDrawingAttributes, getDrawingTool, getFileName, getInfoText, getProperties, getPropertyInfo, getProxyMouseMode, getShowHints, load, releaseProxyMouseMode, saveOMGraphics, setDbfFactory, setDrawingAttributes, setDrawingTool, setFileName, setProxyMouseMode, setShowHints, shouldEdit
actionPerformed, canSetList, copy, createLayerWorker, cut, doAction, doPrepare, filter, filter, filter, getConsumeEvents, getFilter, getItemsForMapMenu, getItemsForOMGraphicMenu, getLayerWorker, getList, getMapMouseListener, getProjectionChangePolicy, getRenderPolicy, getSelected, getTransparency, getTransparencyAdjustmentPanel, interrupt, isCancelled, isInterruptable, isWorking, leftClick, paint, paste, projectionChanged, renderDataForProjection, resetFiltering, setCancelled, setConsumeEvents, setFilter, setInterruptable, setLayerWorker, setList, setMouseEventInterpreter, setProjectionChangePolicy, setRenderPolicy, setTransparency, supportsSQL, workerComplete
addComponentListener, added, addInfoDisplayListener, addLayerStatusListener, addMouseListener, addVetoableChangeListener, childrenAdded, childrenRemoved, clearListeners, connectToBeanContext, createWindowSupport, disconnectFromBeanContext, finalize, findAndInit, fireHideToolTip, firePaletteEvent, fireRequestBrowserContent, fireRequestBrowserContent, fireRequestCursor, fireRequestInfoLine, fireRequestInfoLine, fireRequestInfoLine, fireRequestMessage, fireRequestMessage, fireRequestToolTip, fireRequestToolTip, fireRequestURL, fireRequestURL, fireStatusUpdate, fireStatusUpdate, fireVetoableChange, getAddAsBackground, getAddToBeanContext, getAttribute, getBeanContext, getCoordTransform, getIcon, getMaxScale, getMinScale, getPackage, getPalette, getProjection, getPropertyPrefix, getWindowSupport, hasGUI, hidePalette, isAutoPalette, isProjectionOK, isRemovable, notifyHideHack, prependDataPathPrefix, putAttribute, removeComponentListener, removeConfirmed, removed, removeInfoDisplayListener, removeLayerStatusListener, removeVetoableChangeListener, repaint, resetPalette, setAddAsBackground, setAddToBeanContext, setAutoPalette, setBeanContext, setCoordTransform, setIcon, setLayerProperties, setMaxScale, setMinScale, setPaletteVisible, setProjection, setProjection, setProperties, setPropertyPrefix, setRemovable, setWindowSupport, showPalette
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, isPaintingOrigin, 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
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, transferFocusDownCycle, validate, validateTree
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, transferFocusBackward, transferFocusUpCycle
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
getName
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
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)
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
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)
Copyright (C) BBNT Solutions LLC; See http://openmap.bbn.com/ for details