Index: trunk/src/org/openstreetmap/josm/actions/AlignInLineAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/AlignInLineAction.java	(revision 599)
+++ trunk/src/org/openstreetmap/josm/actions/AlignInLineAction.java	(revision 600)
@@ -17,4 +17,5 @@
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Way;
 
 /**
@@ -45,4 +46,12 @@
 				itnodes.add((Node)osm);
 			}
+		// special case if no single nodes are selected and exactly one way is: 
+		// then use the way's nodes
+		if ((nodes.size() == 0) && (sel.size() == 1))
+			for (OsmPrimitive osm : sel)
+				if (osm instanceof Way) {
+					nodes.addAll(((Way)osm).nodes);
+					itnodes.addAll(((Way)osm).nodes);
+				}
 		if (nodes.size() < 3) {
 			JOptionPane.showMessageDialog(Main.parent, tr("Please select at least three nodes."));
@@ -60,5 +69,5 @@
 			itnodes.remove(n);
 			for (Node m : itnodes) {
-				double dist = Math.sqrt(n.eastNorth.distance(m.eastNorth));
+				double dist = Math.sqrt(n.eastNorth.distanceSq(m.eastNorth));
 				if (dist > distance) {
 					nodea = n;
