org.openstreetmap.josm.gui
Class NavigatableComponent

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by org.openstreetmap.josm.gui.NavigatableComponent
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, org.openstreetmap.josm.gui.help.Helpful
Direct Known Subclasses:
MapView

public class NavigatableComponent
extends javax.swing.JComponent
implements org.openstreetmap.josm.gui.help.Helpful

An component that can be navigated by a mapmover. Used as map view and for the zoomer in the download dialog.

Author:
imi
See Also:
Serialized Form

Nested Class Summary
static class NavigatableComponent.SystemOfMeasurement
           
static interface NavigatableComponent.ZoomChangeListener
          Interface to notify listeners of the change of the zoom area.
 
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  org.openstreetmap.josm.data.coor.EastNorth center
          Center n/e coordinate of the desired screen center.
static NavigatableComponent.SystemOfMeasurement CHINESE_SOM
           
static NavigatableComponent.SystemOfMeasurement IMPERIAL_SOM
           
static NavigatableComponent.SystemOfMeasurement METRIC_SOM
           
static int snapDistance
           
static int snapDistanceSq
           
static java.util.Map<java.lang.String,NavigatableComponent.SystemOfMeasurement> SYSTEMS_OF_MEASUREMENT
           
 
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 java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
NavigatableComponent()
           
 
Method Summary
static void addZoomChangeListener(NavigatableComponent.ZoomChangeListener listener)
          Adds a zoom change listener
protected static void fireZoomChanged()
           
 java.util.Collection<org.openstreetmap.josm.data.osm.OsmPrimitive> getAllNearest(java.awt.Point p, org.openstreetmap.josm.tools.Predicate<org.openstreetmap.josm.data.osm.OsmPrimitive> predicate)
           
 org.openstreetmap.josm.data.coor.EastNorth getCenter()
           
protected  org.openstreetmap.josm.data.osm.DataSet getCurrentDataSet()
           
 double getDist100Pixel()
           
 java.lang.String getDist100PixelText()
           
static java.lang.String getDistText(double dist)
           
 org.openstreetmap.josm.data.coor.EastNorth getEastNorth(int x, int y)
           
 org.openstreetmap.josm.data.coor.LatLon getLatLon(int x, int y)
           
 org.openstreetmap.josm.data.Bounds getLatLonBounds(java.awt.Rectangle r)
           
 org.openstreetmap.josm.data.ProjectionBounds getMaxProjectionBounds()
           
 org.openstreetmap.josm.data.osm.OsmPrimitive getNearest(java.awt.Point p, org.openstreetmap.josm.tools.Predicate<org.openstreetmap.josm.data.osm.OsmPrimitive> predicate)
          Return the object, that is nearest to the given screen point.
 java.util.Collection<org.openstreetmap.josm.data.osm.OsmPrimitive> getNearestCollection(java.awt.Point p, org.openstreetmap.josm.tools.Predicate<org.openstreetmap.josm.data.osm.OsmPrimitive> predicate)
          Returns a singleton of the nearest object, or else an empty collection.
 org.openstreetmap.josm.data.osm.Node getNearestNode(java.awt.Point p)
          Deprecated. 
 org.openstreetmap.josm.data.osm.Node getNearestNode(java.awt.Point p, org.openstreetmap.josm.tools.Predicate<org.openstreetmap.josm.data.osm.OsmPrimitive> predicate)
          Return the nearest node to the screen point given.
 java.util.Collection<org.openstreetmap.josm.data.osm.Node> getNearestNodes(java.awt.Point p, java.util.Collection<org.openstreetmap.josm.data.osm.Node> ignore, org.openstreetmap.josm.tools.Predicate<org.openstreetmap.josm.data.osm.OsmPrimitive> predicate)
           
 java.util.Collection<org.openstreetmap.josm.data.osm.Node> getNearestNodes(java.awt.Point p, org.openstreetmap.josm.tools.Predicate<org.openstreetmap.josm.data.osm.OsmPrimitive> predicate)
           
 org.openstreetmap.josm.data.osm.Way getNearestWay(java.awt.Point p)
          Deprecated. 
 org.openstreetmap.josm.data.osm.Way getNearestWay(java.awt.Point p, org.openstreetmap.josm.tools.Predicate<org.openstreetmap.josm.data.osm.OsmPrimitive> predicate)
           
 org.openstreetmap.josm.data.osm.WaySegment getNearestWaySegment(java.awt.Point p, java.util.Collection<org.openstreetmap.josm.data.osm.WaySegment> ignore, org.openstreetmap.josm.tools.Predicate<org.openstreetmap.josm.data.osm.OsmPrimitive> predicate)
           
 org.openstreetmap.josm.data.osm.WaySegment getNearestWaySegment(java.awt.Point p, org.openstreetmap.josm.tools.Predicate<org.openstreetmap.josm.data.osm.OsmPrimitive> predicate)
           
 java.util.List<org.openstreetmap.josm.data.osm.WaySegment> getNearestWaySegments(java.awt.Point p, org.openstreetmap.josm.tools.Predicate<org.openstreetmap.josm.data.osm.OsmPrimitive> predicate)
           
 java.awt.Point getPoint(org.openstreetmap.josm.data.coor.EastNorth p)
          Return the point on the screen where this Coordinate would be.
 java.awt.Point getPoint(org.openstreetmap.josm.data.coor.LatLon latlon)
           
 java.awt.Point getPoint(org.openstreetmap.josm.data.osm.Node n)
           
 org.openstreetmap.josm.data.projection.Projection getProjection()
           
 org.openstreetmap.josm.data.ProjectionBounds getProjectionBounds()
           
 org.openstreetmap.josm.data.Bounds getRealBounds()
           
static NavigatableComponent.SystemOfMeasurement getSystemOfMeasurement()
           
 int getViewID()
          Return a ID which is unique as long as viewport dimensions are the same
 boolean hasZoomRedoEntries()
           
 boolean hasZoomUndoEntries()
           
 java.lang.String helpTopic()
           
static void removeZoomChangeListener(NavigatableComponent.ZoomChangeListener listener)
          Removes a zoom change listener
 void zoomNext()
           
 void zoomPrevious()
           
 void zoomTo(org.openstreetmap.josm.data.Bounds box)
           
 void zoomTo(org.openstreetmap.josm.data.coor.EastNorth newCenter)
           
 void zoomTo(org.openstreetmap.josm.data.coor.LatLon newCenter)
           
 void zoomTo(org.openstreetmap.josm.data.ProjectionBounds box)
           
 void zoomToFactor(double factor)
           
 void zoomToFactor(double x, double y, double factor)
           
 void zoomToFactor(org.openstreetmap.josm.data.coor.EastNorth newCenter, double factor)
           
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, 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, paint, 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
 
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, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
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, 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, 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
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

snapDistance

public static final int snapDistance

snapDistanceSq

public static final int snapDistanceSq

center

protected org.openstreetmap.josm.data.coor.EastNorth center
Center n/e coordinate of the desired screen center.


METRIC_SOM

public static final NavigatableComponent.SystemOfMeasurement METRIC_SOM

CHINESE_SOM

public static final NavigatableComponent.SystemOfMeasurement CHINESE_SOM

IMPERIAL_SOM

public static final NavigatableComponent.SystemOfMeasurement IMPERIAL_SOM

SYSTEMS_OF_MEASUREMENT

public static java.util.Map<java.lang.String,NavigatableComponent.SystemOfMeasurement> SYSTEMS_OF_MEASUREMENT
Constructor Detail

NavigatableComponent

public NavigatableComponent()
Method Detail

removeZoomChangeListener

public static void removeZoomChangeListener(NavigatableComponent.ZoomChangeListener listener)
Removes a zoom change listener

Parameters:
listener - the listener. Ignored if null or already absent

addZoomChangeListener

public static void addZoomChangeListener(NavigatableComponent.ZoomChangeListener listener)
Adds a zoom change listener

Parameters:
listener - the listener. Ignored if null or already registered.

fireZoomChanged

protected static void fireZoomChanged()

getCurrentDataSet

protected org.openstreetmap.josm.data.osm.DataSet getCurrentDataSet()

getDistText

public static java.lang.String getDistText(double dist)

getDist100PixelText

public java.lang.String getDist100PixelText()

getDist100Pixel

public double getDist100Pixel()

getCenter

public org.openstreetmap.josm.data.coor.EastNorth getCenter()
Returns:
Returns the center point. A copy is returned, so users cannot change the center by accessing the return value. Use zoomTo instead.

getEastNorth

public org.openstreetmap.josm.data.coor.EastNorth getEastNorth(int x,
                                                               int y)
Parameters:
x - X-Pixelposition to get coordinate from
y - Y-Pixelposition to get coordinate from
Returns:
Geographic coordinates from a specific pixel coordination on the screen.

getProjectionBounds

public org.openstreetmap.josm.data.ProjectionBounds getProjectionBounds()

getMaxProjectionBounds

public org.openstreetmap.josm.data.ProjectionBounds getMaxProjectionBounds()

getRealBounds

public org.openstreetmap.josm.data.Bounds getRealBounds()

getLatLon

public org.openstreetmap.josm.data.coor.LatLon getLatLon(int x,
                                                         int y)
Parameters:
x - X-Pixelposition to get coordinate from
y - Y-Pixelposition to get coordinate from
Returns:
Geographic unprojected coordinates from a specific pixel coordination on the screen.

getLatLonBounds

public org.openstreetmap.josm.data.Bounds getLatLonBounds(java.awt.Rectangle r)
Parameters:
r -
Returns:
Minimum bounds that will cover rectangle

getPoint

public java.awt.Point getPoint(org.openstreetmap.josm.data.coor.EastNorth p)
Return the point on the screen where this Coordinate would be.

Parameters:
p - The point, where this geopoint would be drawn.
Returns:
The point on screen where "point" would be drawn, relative to the own top/left.

getPoint

public java.awt.Point getPoint(org.openstreetmap.josm.data.coor.LatLon latlon)

getPoint

public java.awt.Point getPoint(org.openstreetmap.josm.data.osm.Node n)

zoomTo

public void zoomTo(org.openstreetmap.josm.data.coor.EastNorth newCenter)

zoomTo

public void zoomTo(org.openstreetmap.josm.data.coor.LatLon newCenter)

zoomToFactor

public void zoomToFactor(double x,
                         double y,
                         double factor)

zoomToFactor

public void zoomToFactor(org.openstreetmap.josm.data.coor.EastNorth newCenter,
                         double factor)

zoomToFactor

public void zoomToFactor(double factor)

zoomTo

public void zoomTo(org.openstreetmap.josm.data.ProjectionBounds box)

zoomTo

public void zoomTo(org.openstreetmap.josm.data.Bounds box)

zoomPrevious

public void zoomPrevious()

zoomNext

public void zoomNext()

hasZoomUndoEntries

public boolean hasZoomUndoEntries()

hasZoomRedoEntries

public boolean hasZoomRedoEntries()

getNearestNode

@Deprecated
public final org.openstreetmap.josm.data.osm.Node getNearestNode(java.awt.Point p)
Deprecated. 


getNearestNode

public final org.openstreetmap.josm.data.osm.Node getNearestNode(java.awt.Point p,
                                                                 org.openstreetmap.josm.tools.Predicate<org.openstreetmap.josm.data.osm.OsmPrimitive> predicate)
Return the nearest node to the screen point given. If more then one node within snapDistance pixel is found, the nearest node is returned.

Parameters:
p - the screen point
predicate - this parameter imposes a condition on the returned object, e.g. give the nearest node that is tagged.

getNearestWaySegments

public final java.util.List<org.openstreetmap.josm.data.osm.WaySegment> getNearestWaySegments(java.awt.Point p,
                                                                                              org.openstreetmap.josm.tools.Predicate<org.openstreetmap.josm.data.osm.OsmPrimitive> predicate)
Parameters:
p - the point for which to search the nearest segment.
predicate - the returned objects have to fulfill certain properties.
Returns:
all way segments within 10px of p, sorted by their perpendicular distance.

getNearestWaySegment

public final org.openstreetmap.josm.data.osm.WaySegment getNearestWaySegment(java.awt.Point p,
                                                                             java.util.Collection<org.openstreetmap.josm.data.osm.WaySegment> ignore,
                                                                             org.openstreetmap.josm.tools.Predicate<org.openstreetmap.josm.data.osm.OsmPrimitive> predicate)
Parameters:
p - the point for which to search the nearest segment.
ignore - a collection of segments which are not to be returned.
predicate - the returned object has to fulfill certain properties. May be null.
Returns:
the nearest way segment to the screen point given that is not in ignore.

getNearestWaySegment

public final org.openstreetmap.josm.data.osm.WaySegment getNearestWaySegment(java.awt.Point p,
                                                                             org.openstreetmap.josm.tools.Predicate<org.openstreetmap.josm.data.osm.OsmPrimitive> predicate)
Returns:
the nearest way segment to the screen point given.

getNearestWay

@Deprecated
public final org.openstreetmap.josm.data.osm.Way getNearestWay(java.awt.Point p)
Deprecated. 


getNearestWay

public final org.openstreetmap.josm.data.osm.Way getNearestWay(java.awt.Point p,
                                                               org.openstreetmap.josm.tools.Predicate<org.openstreetmap.josm.data.osm.OsmPrimitive> predicate)
Returns:
the nearest way to the screen point given.

getNearest

public org.openstreetmap.josm.data.osm.OsmPrimitive getNearest(java.awt.Point p,
                                                               org.openstreetmap.josm.tools.Predicate<org.openstreetmap.josm.data.osm.OsmPrimitive> predicate)
Return the object, that is nearest to the given screen point. First, a node will be searched. If a node within 10 pixel is found, the nearest node is returned. If no node is found, search for near ways. If nothing is found, return null.

Parameters:
p - The point on screen.
predicate - the returned object has to fulfill certain properties.
Returns:
The primitive that is nearest to the point p.

getNearestCollection

public java.util.Collection<org.openstreetmap.josm.data.osm.OsmPrimitive> getNearestCollection(java.awt.Point p,
                                                                                               org.openstreetmap.josm.tools.Predicate<org.openstreetmap.josm.data.osm.OsmPrimitive> predicate)
Returns a singleton of the nearest object, or else an empty collection.


getAllNearest

public java.util.Collection<org.openstreetmap.josm.data.osm.OsmPrimitive> getAllNearest(java.awt.Point p,
                                                                                        org.openstreetmap.josm.tools.Predicate<org.openstreetmap.josm.data.osm.OsmPrimitive> predicate)
Returns:
A list of all objects that are nearest to the mouse.

getNearestNodes

public java.util.Collection<org.openstreetmap.josm.data.osm.Node> getNearestNodes(java.awt.Point p,
                                                                                  org.openstreetmap.josm.tools.Predicate<org.openstreetmap.josm.data.osm.OsmPrimitive> predicate)
Returns:
A list of all nodes that are nearest to the mouse.

getNearestNodes

public final java.util.Collection<org.openstreetmap.josm.data.osm.Node> getNearestNodes(java.awt.Point p,
                                                                                        java.util.Collection<org.openstreetmap.josm.data.osm.Node> ignore,
                                                                                        org.openstreetmap.josm.tools.Predicate<org.openstreetmap.josm.data.osm.OsmPrimitive> predicate)
Parameters:
p - the point for which to search the nearest segment.
ignore - a collection of nodes which are not to be returned.
predicate - the returned objects have to fulfill certain properties. May be null.
Returns:
the nearest nodes to the screen point given that is not in ignore.

getProjection

public org.openstreetmap.josm.data.projection.Projection getProjection()
Returns:
The projection to be used in calculating stuff.

helpTopic

public java.lang.String helpTopic()
Specified by:
helpTopic in interface org.openstreetmap.josm.gui.help.Helpful

getViewID

public int getViewID()
Return a ID which is unique as long as viewport dimensions are the same


getSystemOfMeasurement

public static NavigatableComponent.SystemOfMeasurement getSystemOfMeasurement()