public class MapView extends NavigatableComponent implements PropertyChangeListener, Preferences.PreferenceChangedListener, OsmDataLayer.LayerStateChangeListener
MapFrame
for browsing the map. It use is to
provide the MapMode's enough capabilities to operate.MapView
holds meta-data about the data set currently displayed, as scale level,
center point viewed, what scrolling mode or editing mode is selected or with
what projection the map is viewed etc..MapView
is able to administrate several layers.Modifier and Type | Class and Description |
---|---|
static interface |
MapView.EditLayerChangeListener |
static interface |
MapView.LayerChangeListener
Interface to notify listeners of a layer change.
|
NavigatableComponent.SoMChangeListener, NavigatableComponent.SystemOfMeasurement, NavigatableComponent.ViewportData, NavigatableComponent.ZoomChangeListener
JComponent.AccessibleJComponent
Container.AccessibleAWTContainer
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
center, CHINESE_SOM, IMPERIAL_SOM, METRIC_SOM, NAUTICAL_MILE_SOM, PROP_SNAP_DISTANCE, PROPNAME_CENTER, PROPNAME_SCALE, SYSTEMS_OF_MEASUREMENT
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
Constructor and Description |
---|
MapView(JPanel contentPane,
NavigatableComponent.ViewportData viewportData)
Constructs a new
MapView . |
Modifier and Type | Method and Description |
---|---|
static void |
addEditLayerChangeListener(MapView.EditLayerChangeListener listener)
Adds an edit layer change listener
|
static void |
addEditLayerChangeListener(MapView.EditLayerChangeListener listener,
boolean initialFire)
Adds an edit layer change listener
|
protected void |
addGpxLayer(GpxLayer layer)
Adds a GPX layer.
|
void |
addLayer(Layer layer)
Add a layer to the current MapView.
|
static void |
addLayerChangeListener(MapView.LayerChangeListener listener)
Adds a layer change listener
|
boolean |
addTemporaryLayer(MapViewPaintable mvp) |
void |
destroy() |
protected Layer |
determineNextActiveLayer(List<Layer> layersList)
Determines the next active data layer according to the following
rules:
if there is at least one
OsmDataLayer the first one
becomes active
otherwise, the top most layer of any type becomes active
|
protected static void |
fireActiveLayerChanged(Layer oldLayer,
Layer newLayer) |
protected static void |
fireEditLayerChanged(OsmDataLayer oldLayer,
OsmDataLayer newLayer) |
protected static void |
fireLayerAdded(Layer newLayer) |
protected static void |
fireLayerRemoved(Layer layer) |
Layer |
getActiveLayer()
Replies the currently active layer
|
Collection<Layer> |
getAllLayers() |
List<Layer> |
getAllLayersAsList() |
protected DataSet |
getCurrentDataSet() |
OsmDataLayer |
getEditLayer()
Replies the current edit layer, if any
|
int |
getLayerPos(Layer layer) |
<T> List<T> |
getLayersOfType(Class<T> ofType)
Replies an unmodifiable list of layers of a certain type.
|
int |
getNumLayers()
Replies the number of layers managed by this mav view
|
protected List<Layer> |
getVisibleLayersInZOrder()
Creates a list of the visible layers in Z-Order, the layer with the lowest Z-Order
first, layer with the highest Z-Order last.
|
boolean |
hasLayer(Layer layer)
replies true if the list of layers managed by this map view contain layer
|
boolean |
hasLayers()
Replies true if there is at least one layer in this map view
|
boolean |
isActiveLayerDrawable()
Replies true if the active layer is drawable.
|
boolean |
isActiveLayerVisible()
Replies true if the active layer is visible.
|
boolean |
isVirtualNodesEnabled() |
void |
moveLayer(Layer layer,
int pos)
Moves the layer to the given new position.
|
void |
paint(Graphics g)
Draw the component.
|
private void |
paintLayer(Layer layer,
Graphics2D g,
Bounds box) |
void |
preferenceChanged(Preferences.PreferenceChangeEvent e) |
void |
propertyChange(PropertyChangeEvent evt) |
void |
recalculateCenterScale(BoundingXYVisitor box)
Set the new dimension to the view.
|
protected void |
refreshTitle() |
void |
rememberLastPositionOnScreen() |
static void |
removeEditLayerChangeListener(MapView.EditLayerChangeListener listener) |
void |
removeLayer(Layer layer)
Remove the layer from the mapview.
|
static void |
removeLayerChangeListener(MapView.LayerChangeListener listener)
Removes a layer change listener
|
boolean |
removeTemporaryLayer(MapViewPaintable mvp) |
void |
setActiveLayer(Layer layer)
Sets the active layer to
layer . |
private void |
setActiveLayer(Layer layer,
boolean setEditLayer) |
private void |
setEditLayer(List<Layer> layersList) |
void |
setVirtualNodesEnabled(boolean enabled) |
void |
uploadDiscouragedChanged(OsmDataLayer layer,
boolean newValue)
Notifies that the "upload discouraged" (upload=no) state has changed.
|
boolean |
zoomToDataSetBoundingBox(DataSet ds)
Tries to zoom to the download boundingbox[es] of the current edit layer
(aka
OsmDataLayer ). |
addSoMChangeListener, addZoomChangeListener, asColl, fireSoMChanged, fireZoomChanged, getAffineTransform, getAllNearest, getAllNearest, getAreaText, getCenter, getDist100Pixel, getDist100PixelText, getDistText, getEastNorth, getLatLon, getLatLon, getLatLonBounds, getMaxProjectionBounds, getNearestNode, getNearestNode, getNearestNode, getNearestNodeOrWay, getNearestNodes, getNearestNodes, getNearestNodesOrWays, getNearestNodesOrWays, getNearestWay, getNearestWays, getNearestWays, getNearestWaySegment, getNearestWaySegment, getNearestWaySegment, getNearestWaySegments, getNearestWaySegments, getPoint, getPoint, getPoint, getPoint2D, getPoint2D, getPoint2D, getProjection, getProjectionBounds, getRealBounds, getScale, getSystemOfMeasurement, getViewID, hasZoomRedoEntries, hasZoomUndoEntries, helpTopic, perDist, project, project, removeSoMChangeListener, removeZoomChangeListener, requestClearPoly, requestClearRect, requestPaintPoly, requestPaintRect, resetCursor, setNewCursor, setNewCursor, setSystemOfMeasurement, smoothScrollTo, smoothScrollTo, zoomNext, zoomPrevious, zoomTo, zoomTo, zoomTo, zoomTo, zoomTo, zoomToFactor, zoomToFactor, zoomToFactor
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, 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, hide, 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, 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, setVisible, 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, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAccessibleContext, 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, 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, removeComponentListener, 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, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
public boolean viewportFollowing
private static final CopyOnWriteArrayList<MapView.LayerChangeListener> layerChangeListeners
private static final CopyOnWriteArrayList<MapView.EditLayerChangeListener> editLayerChangeListeners
public PlayHeadMarker playHeadMarker
private Layer activeLayer
private OsmDataLayer editLayer
public MouseEvent lastMEvent
private final List<MapViewPaintable> temporaryLayers
private BufferedImage nonChangedLayersBuffer
private BufferedImage offscreenBuffer
private final List<Layer> nonChangedLayers
private Layer changedLayer
private int lastViewID
private boolean paintPreferencesChanged
private Rectangle lastClipBounds
private boolean virtualNodesEnabled
private SelectionChangedListener repaintSelectionChangedListener
public MapView(JPanel contentPane, NavigatableComponent.ViewportData viewportData)
MapView
.public static void removeLayerChangeListener(MapView.LayerChangeListener listener)
listener
- the listener. Ignored if null or already registered.public static void removeEditLayerChangeListener(MapView.EditLayerChangeListener listener)
public static void addLayerChangeListener(MapView.LayerChangeListener listener)
listener
- the listener. Ignored if null or already registered.public static void addEditLayerChangeListener(MapView.EditLayerChangeListener listener, boolean initialFire)
listener
- the listener. Ignored if null or already registered.initialFire
- Fire an edit-layer-changed-event right after adding
the listener in case there is an edit layer presentpublic static void addEditLayerChangeListener(MapView.EditLayerChangeListener listener)
listener
- the listener. Ignored if null or already registered.protected static void fireActiveLayerChanged(Layer oldLayer, Layer newLayer)
protected static void fireLayerAdded(Layer newLayer)
protected static void fireLayerRemoved(Layer layer)
protected static void fireEditLayerChanged(OsmDataLayer oldLayer, OsmDataLayer newLayer)
public void rememberLastPositionOnScreen()
protected void addGpxLayer(GpxLayer layer)
layer
- the GPX layerpublic void addLayer(Layer layer)
layer
- The layer to addprotected DataSet getCurrentDataSet()
getCurrentDataSet
in class NavigatableComponent
public boolean isActiveLayerDrawable()
public boolean isActiveLayerVisible()
protected Layer determineNextActiveLayer(List<Layer> layersList)
OsmDataLayer
the first one
becomes activepublic void removeLayer(Layer layer)
layer
- The layer to removepublic void setVirtualNodesEnabled(boolean enabled)
public boolean isVirtualNodesEnabled()
public void moveLayer(Layer layer, int pos)
layer
- The layer to movepos
- The new position of the layerpublic int getLayerPos(Layer layer)
protected List<Layer> getVisibleLayersInZOrder()
private void paintLayer(Layer layer, Graphics2D g, Bounds box)
public void paint(Graphics g)
paint
in class NavigatableComponent
public void recalculateCenterScale(BoundingXYVisitor box)
public Collection<Layer> getAllLayers()
public List<Layer> getAllLayersAsList()
public <T> List<T> getLayersOfType(Class<T> ofType)
ListwmsLayers = getLayersOfType(WMSLayer.class);
public int getNumLayers()
public boolean hasLayers()
private void setEditLayer(List<Layer> layersList)
public void setActiveLayer(Layer layer)
layer
. If layer
is an instance
of OsmDataLayer
also sets editLayer
to layer
.layer
- the layer to be activate; must be one of the layers in the list of layersIllegalArgumentException
- thrown if layer is not in the lis of layersprivate void setActiveLayer(Layer layer, boolean setEditLayer)
public Layer getActiveLayer()
public OsmDataLayer getEditLayer()
public boolean hasLayer(Layer layer)
layer
- the layerpublic boolean zoomToDataSetBoundingBox(DataSet ds)
OsmDataLayer
). If the edit layer has multiple download bounding
boxes it zooms to a large virtual bounding box containing all smaller ones.true
if a zoom operation has been performedpublic boolean addTemporaryLayer(MapViewPaintable mvp)
public boolean removeTemporaryLayer(MapViewPaintable mvp)
public void propertyChange(PropertyChangeEvent evt)
propertyChange
in interface PropertyChangeListener
protected void refreshTitle()
public void preferenceChanged(Preferences.PreferenceChangeEvent e)
preferenceChanged
in interface Preferences.PreferenceChangedListener
public void destroy()
public void uploadDiscouragedChanged(OsmDataLayer layer, boolean newValue)
OsmDataLayer.LayerStateChangeListener
uploadDiscouragedChanged
in interface OsmDataLayer.LayerStateChangeListener
layer
- The layer that has been modifiednewValue
- The new value of the state