Index: trunk/src/org/openstreetmap/josm/actions/JumpToAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/JumpToAction.java	(revision 6393)
+++ trunk/src/org/openstreetmap/josm/actions/JumpToAction.java	(revision 6394)
@@ -26,5 +26,10 @@
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
+/**
+ * Allows to jump to a specific location.
+ * @since 2575
+ */
 public class JumpToAction extends JosmAction {
+    
     /**
      * Constructs a new {@code JumpToAction}.
@@ -35,21 +40,25 @@
     }
 
-    private JosmTextField url = new JosmTextField();
-    private JosmTextField lat = new JosmTextField();
-    private JosmTextField lon = new JosmTextField();
-    private JosmTextField zm = new JosmTextField();
+    private final JosmTextField url = new JosmTextField();
+    private final JosmTextField lat = new JosmTextField();
+    private final JosmTextField lon = new JosmTextField();
+    private final JosmTextField zm = new JosmTextField();
 
+    /**
+     * Displays the "Jump to" dialog.
+     */
     public void showJumpToDialog() {
+        if (!Main.isDisplayingMapView()) {
+            return;
+        }
         MapView mv = Main.map.mapView;
-        if(mv == null)
-            return;
-        LatLon curPos=mv.getProjection().eastNorth2latlon(mv.getCenter());
-        lat.setText(java.lang.Double.toString(curPos.lat()));
-        lon.setText(java.lang.Double.toString(curPos.lon()));
+        LatLon curPos = mv.getProjection().eastNorth2latlon(mv.getCenter());
+        lat.setText(Double.toString(curPos.lat()));
+        lon.setText(Double.toString(curPos.lon()));
 
         double dist = mv.getDist100Pixel();
         double zoomFactor = 1/dist;
 
-        zm.setText(java.lang.Long.toString(Math.round(dist*100)/100));
+        zm.setText(Long.toString(Math.round(dist*100)/100));
         updateUrl(true);
 
@@ -123,6 +132,7 @@
 
     private void parseURL() {
-        if(!url.hasFocus()) return;
-        Bounds b = OsmUrlToBounds.parse(url.getText());
+        if (!url.hasFocus()) return;
+        String urlText = url.getText();
+        Bounds b = OsmUrlToBounds.parse(urlText);
         if (b != null) {
             lat.setText(Double.toString((b.getMinLat() + b.getMaxLat())/2));
@@ -130,11 +140,16 @@
 
             int zoomLvl = 16;
-            String[] args = url.getText().substring(url.getText().indexOf('?')+1).split("&");
-            for (String arg : args) {
-                int eq = arg.indexOf('=');
-                if (eq == -1 || !arg.substring(0, eq).equalsIgnoreCase("zoom")) continue;
-
-                zoomLvl = Integer.parseInt(arg.substring(eq + 1));
-                break;
+            int hashIndex = urlText.indexOf("#map");
+            if (hashIndex >= 0) {
+                zoomLvl = Integer.parseInt(urlText.substring(hashIndex+5, urlText.indexOf('/', hashIndex)));
+            } else {
+                String[] args = urlText.substring(urlText.indexOf('?')+1).split("&");
+                for (String arg : args) {
+                    int eq = arg.indexOf('=');
+                    if (eq == -1 || !arg.substring(0, eq).equalsIgnoreCase("zoom")) continue;
+    
+                    zoomLvl = Integer.parseInt(arg.substring(eq + 1));
+                    break;
+                }
             }
 
@@ -162,5 +177,5 @@
             dlon = Math.round(dlon * decimals);
             dlon /= decimals;
-            url.setText("http://www.openstreetmap.org/?lat="+dlat+"&lon="+dlon+"&zoom="+zoomLvl);
+            url.setText("http://www.openstreetmap.org/#map="+zoomLvl+"/"+dlat+"/"+dlon);
         } catch (NumberFormatException x) {}
     }
Index: trunk/src/org/openstreetmap/josm/gui/MainMenu.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MainMenu.java	(revision 6393)
+++ trunk/src/org/openstreetmap/josm/gui/MainMenu.java	(revision 6394)
@@ -208,4 +208,6 @@
     /** View -> "Zoom to"... actions */
     public final Map<String, AutoScaleAction> autoScaleActions = new HashMap<String, AutoScaleAction>();
+    /** View -> Jump to position */
+    public final JumpToAction jumpToAct = new JumpToAction();
 
     /* Tools menu */
@@ -337,5 +339,4 @@
     public final JosmAction moveLeftAction = new MoveAction(MoveAction.Direction.LEFT);
     public final JosmAction moveRightAction = new MoveAction(MoveAction.Direction.RIGHT);
-    public final JumpToAction jumpToAct = new JumpToAction();
 
     public final TaggingPresetSearchAction presetSearchAction = new TaggingPresetSearchAction();
@@ -650,4 +651,6 @@
 
         viewMenu.addSeparator();
+        add(viewMenu, jumpToAct);
+        viewMenu.addSeparator();
         add(viewMenu, info);
         add(viewMenu, infoweb);
Index: trunk/src/org/openstreetmap/josm/tools/OsmUrlToBounds.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/OsmUrlToBounds.java	(revision 6393)
+++ trunk/src/org/openstreetmap/josm/tools/OsmUrlToBounds.java	(revision 6394)
@@ -92,6 +92,5 @@
         int endIndex = url.indexOf('&', startIndex);
         if (endIndex == -1) endIndex = url.length();
-        try
-        {
+        try {
             String coordPart = url.substring(startIndex+5, endIndex);
             String[] parts = coordPart.split("/");
@@ -100,7 +99,6 @@
                     Integer.parseInt(parts[0]));
             return b;
-        }
-        catch(Exception ex)
-        {
+        } catch (Exception ex) {
+            Main.debug(ex.getMessage());
             return null;
         }
