Index: /applications/editors/josm/plugins/measurement/src/org/openstreetmap/josm/plugins/measurement/MeasurementDialog.java
===================================================================
--- /applications/editors/josm/plugins/measurement/src/org/openstreetmap/josm/plugins/measurement/MeasurementDialog.java	(revision 25136)
+++ /applications/editors/josm/plugins/measurement/src/org/openstreetmap/josm/plugins/measurement/MeasurementDialog.java	(revision 25137)
@@ -104,5 +104,6 @@
         final MeasurementDialog dlg = this;
 
-        DataSet.selListeners.add(new SelectionChangedListener() {
+        DataSet.addSelectionListener(new SelectionChangedListener() {
+            @Override
             public void selectionChanged(Collection<? extends OsmPrimitive> arg0) {
                 double length = 0.0;
@@ -117,5 +118,5 @@
                             lastNode = n;
                         } else {
-                            length += MeasurementLayer.calcDistance(lastNode.getCoor(), n.getCoor());
+                            length += lastNode.getCoor().greatCircleDistance(n.getCoor());
                             segAngle = MeasurementLayer.angleBetween(lastNode.getCoor(), n.getCoor());
                             lastNode = n;
@@ -126,5 +127,5 @@
                         for(Node n: w.getNodes()) {
                             if(lastN != null) {
-                                length += MeasurementLayer.calcDistance(lastN.getCoor(), n.getCoor());
+                                length += lastN.getCoor().greatCircleDistance(n.getCoor());
                                 //http://local.wasp.uwa.edu.au/~pbourke/geometry/polyarea/
                                 area += (MeasurementLayer.calcX(n.getCoor()) * MeasurementLayer.calcY(lastN.getCoor()))
@@ -148,4 +149,5 @@
     }
 
+    @Override
     public void actionPerformed(ActionEvent e)
     {
Index: /applications/editors/josm/plugins/measurement/src/org/openstreetmap/josm/plugins/measurement/MeasurementLayer.java
===================================================================
--- /applications/editors/josm/plugins/measurement/src/org/openstreetmap/josm/plugins/measurement/MeasurementLayer.java	(revision 25136)
+++ /applications/editors/josm/plugins/measurement/src/org/openstreetmap/josm/plugins/measurement/MeasurementLayer.java	(revision 25137)
@@ -144,21 +144,4 @@
     }
 
-    public static double calcDistance(LatLon p1, LatLon p2){
-        double lat1, lon1, lat2, lon2;
-        double dlon, dlat;
-
-        lat1 = p1.lat() * Math.PI / 180.0;
-        lon1 = p1.lon() * Math.PI / 180.0;
-        lat2 = p2.lat() * Math.PI / 180.0;
-        lon2 = p2.lon() * Math.PI / 180.0;
-
-        dlon = lon2 - lon1;
-        dlat = lat2 - lat1;
-
-        double a = (Math.pow(Math.sin(dlat/2), 2) + Math.cos(lat1) * Math.cos(lat2) * Math.pow(Math.sin(dlon/2), 2));
-        double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
-        return 6367000 * c;
-    }
-
     public static double calcX(LatLon p1){
         double lat1, lon1, lat2, lon2;
@@ -196,5 +179,5 @@
 
     public static double calcDistance(WayPoint p1, WayPoint p2){
-        return calcDistance(p1.getCoor(), p2.getCoor());
+        return p1.getCoor().greatCircleDistance(p2.getCoor());
     }
 
@@ -260,4 +243,5 @@
     }
 
+    @Override
     public void actionPerformed(ActionEvent e) {
         Box panel = Box.createVerticalBox();
