Index: trunk/src/org/openstreetmap/josm/data/coor/LatLon.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/coor/LatLon.java	(revision 6499)
+++ trunk/src/org/openstreetmap/josm/data/coor/LatLon.java	(revision 6500)
@@ -21,5 +21,13 @@
 /**
  * LatLon are unprojected latitude / longitude coordinates.
- *
+ * <br>
+ * <b>Latitude</b> specifies the north-south position in degrees
+ * where valid values are in the [-90,90] and positive values specify positions north of the equator.
+ * <br>
+ * <b>Longitude</b> specifies the east-west position in degrees
+ * where valid values are in the [-180,180] and positive values specify positions east of the prime meridian.
+ * <br>
+ * <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/62/Latitude_and_Longitude_of_the_Earth.svg/500px-Latitude_and_Longitude_of_the_Earth.svg.png">
+ * <br>
  * This class is immutable.
  *
@@ -41,5 +49,5 @@
      */
     public static final LatLon ZERO = new LatLon(0, 0);
-    
+
     private static DecimalFormat cDmsMinuteFormatter = new DecimalFormat("00");
     private static DecimalFormat cDmsSecondFormatter = new DecimalFormat("00.0");
@@ -160,4 +168,9 @@
     }
 
+    /**
+     * Constructs a new {@link LatLon}
+     * @param lat the latitude, i.e., the north-south position in degrees
+     * @param lon the longitude, i.e., the east-west position in degrees
+     */
     public LatLon(double lat, double lon) {
         super(lon, lat);
@@ -168,4 +181,8 @@
     }
 
+    /**
+     * Returns the latitude, i.e., the north-south position in degrees.
+     * @return the latitude
+     */
     public double lat() {
         return y;
@@ -184,4 +201,8 @@
     }
 
+    /**
+     * Returns the longitude, i.e., the east-west position in degrees.
+     * @return the longitude
+     */
     public double lon() {
         return x;
@@ -229,5 +250,5 @@
     /**
      * Check if this is contained in given area or area is null.
-     * 
+     *
      * @param a Area
      * @return <code>true</code> if this is contained in given area or area is null.
@@ -304,5 +325,5 @@
     /**
      * Returns the euclidean distance from this {@code LatLon} to a specified {@code LatLon}.
-     * 
+     *
      * @param ll the specified coordinate to be measured against this {@code LatLon}
      * @return the euclidean distance from this {@code LatLon} to a specified {@code LatLon}
@@ -315,5 +336,5 @@
     /**
      * Returns the square of the euclidean distance from this {@code LatLon} to a specified {@code LatLon}.
-     * 
+     *
      * @param ll the specified coordinate to be measured against this {@code LatLon}
      * @return the square of the euclidean distance from this {@code LatLon} to a specified {@code LatLon}
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java	(revision 6499)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java	(revision 6500)
@@ -340,5 +340,5 @@
     }
 
-    private static LatLon parseLatLon(final String coord) {
+    public static LatLon parseLatLon(final String coord) {
         final Matcher m = p.matcher(coord);
 
@@ -423,5 +423,5 @@
     }
 
-    private static EastNorth parseEastNorth(String s) {
+    public static EastNorth parseEastNorth(String s) {
         String[] en = s.split("[;, ]+");
         if (en.length != 2) return null;
Index: trunk/test/unit/org/openstreetmap/josm/gui/dialogs/LatLonDialogTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/dialogs/LatLonDialogTest.java	(revision 6500)
+++ trunk/test/unit/org/openstreetmap/josm/gui/dialogs/LatLonDialogTest.java	(revision 6500)
@@ -0,0 +1,99 @@
+package org.openstreetmap.josm.gui.dialogs;
+
+import org.junit.Test;
+import org.openstreetmap.josm.data.coor.LatLon;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+public class LatLonDialogTest {
+    @Test
+    public void test1() throws Exception {
+        assertThat(LatLonDialog.parseLatLon("49.29918° 19.24788°"), is(new LatLon(49.29918, 19.24788)));
+    }
+
+    @Test
+    public void test2() throws Exception {
+        assertThat(LatLonDialog.parseLatLon("N 49.29918 E 19.24788°"), is(new LatLon(49.29918, 19.24788)));
+    }
+
+    @Test
+    public void test3() throws Exception {
+        assertThat(LatLonDialog.parseLatLon("49.29918° 19.24788°"), is(new LatLon(49.29918, 19.24788)));
+    }
+
+    @Test
+    public void test4() throws Exception {
+        assertThat(LatLonDialog.parseLatLon("N 49.29918 E 19.24788"), is(new LatLon(49.29918, 19.24788)));
+    }
+
+    @Test
+    public void test5() throws Exception {
+        assertThat(LatLonDialog.parseLatLon("W 49°29.918' S 19°24.788'"), is(new LatLon(-19 - 24.788 / 60, -49 - 29.918 / 60)));
+    }
+
+    @Test
+    public void test6() throws Exception {
+        assertThat(LatLonDialog.parseLatLon("N 49°29'04\" E 19°24'43\""), is(new LatLon(49 + 29. / 60 + 04. / 3600, 19 + 24. / 60 + 43. / 3600)));
+    }
+
+    @Test
+    public void test7() throws Exception {
+        assertThat(LatLonDialog.parseLatLon("49.29918 N, 19.24788 E"), is(new LatLon(49.29918, 19.24788)));
+    }
+
+    @Test
+    public void test8() throws Exception {
+        assertThat(LatLonDialog.parseLatLon("49°29'21\" N 19°24'38\" E"), is(new LatLon(49 + 29. / 60 + 21. / 3600, 19 + 24. / 60 + 38. / 3600)));
+    }
+
+    @Test
+    public void test9() throws Exception {
+        assertThat(LatLonDialog.parseLatLon("49 29 51, 19 24 18"), is(new LatLon(49 + 29. / 60 + 51. / 3600, 19 + 24. / 60 + 18. / 3600)));
+    }
+
+    @Test
+    public void test10() throws Exception {
+        assertThat(LatLonDialog.parseLatLon("49 29, 19 24"), is(new LatLon(49 + 29. / 60, 19 + 24. / 60)));
+    }
+
+    @Test
+    public void test11() throws Exception {
+        assertThat(LatLonDialog.parseLatLon("E 49 29, N 19 24"), is(new LatLon(19 + 24. / 60, 49 + 29. / 60)));
+    }
+
+    @Test
+    public void test12() throws Exception {
+        assertThat(LatLonDialog.parseLatLon("49° 29; 19° 24"), is(new LatLon(49 + 29. / 60, 19 + 24. / 60)));
+    }
+
+    @Test
+    public void test13() throws Exception {
+        assertThat(LatLonDialog.parseLatLon("49° 29; 19° 24"), is(new LatLon(49 + 29. / 60, 19 + 24. / 60)));
+    }
+
+    @Test
+    public void test14() throws Exception {
+        assertThat(LatLonDialog.parseLatLon("N 49° 29, W 19° 24"), is(new LatLon(49 + 29. / 60, -19 - 24. / 60)));
+    }
+
+    @Test
+    public void test15() throws Exception {
+        assertThat(LatLonDialog.parseLatLon("49° 29.5 S, 19° 24.6 E"), is(new LatLon(-49 - 29.5 / 60, 19 + 24.6 / 60)));
+    }
+
+    @Test
+    public void test16() throws Exception {
+        assertThat(LatLonDialog.parseLatLon("N 49 29.918 E 19 15.88"), is(new LatLon(49 + 29.918 / 60, 19 + 15.88 / 60)));
+    }
+
+    @Test
+    public void test17() throws Exception {
+        assertThat(LatLonDialog.parseLatLon("49 29.4 19 24.5"), is(new LatLon(49 + 29.4 / 60, 19 + 24.5 / 60)));
+    }
+
+    @Test
+    public void test18() throws Exception {
+        assertThat(LatLonDialog.parseLatLon("-49 29.4 N -19 24.5 W"), is(new LatLon(-49 - 29.4 / 60, 19 + 24.5 / 60)));
+    }
+}
