Index: applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysAction.java
===================================================================
--- applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysAction.java	(revision 23165)
+++ applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysAction.java	(revision 23189)
@@ -24,77 +24,77 @@
 public class AlignWaysAction extends JosmAction {
 
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = -1540319652562985458L;
+    /**
+     * 
+     */
+    private static final long serialVersionUID = -1540319652562985458L;
 
-	public AlignWaysAction() {
-		super(tr("Align Way Segments"), "alignways",
-				tr("Makes a pair of selected way segments parallel by rotating one of them " +
-				"around a chosen pivot."),
-				Shortcut.registerShortcut("tools:alignways", tr("Tool: {0}",
-						tr("Align Ways")), KeyEvent.VK_A, Shortcut.GROUP_EDIT,
-						Shortcut.SHIFT_DEFAULT), true);
-		setEnabled(false);
-	}
+    public AlignWaysAction() {
+        super(tr("Align Way Segments"), "alignways",
+                tr("Makes a pair of selected way segments parallel by rotating one of them " +
+                "around a chosen pivot."),
+                Shortcut.registerShortcut("tools:alignways", tr("Tool: {0}",
+                        tr("Align Ways")), KeyEvent.VK_A, Shortcut.GROUP_EDIT,
+                        Shortcut.SHIFT_DEFAULT), true);
+        setEnabled(false);
+    }
 
-	public void actionPerformed(ActionEvent e) {
-		if (!isEnabled())
-			return;
-		if (getCurrentDataSet() == null)
-			return;
+    public void actionPerformed(ActionEvent e) {
+        if (!isEnabled())
+            return;
+        if (getCurrentDataSet() == null)
+            return;
 
-		Collection<Node> affectedNodes = AlignWaysSegmentMgr.getInstance(Main.map.mapView).getSelectedNodes();
+        Collection<Node> affectedNodes = AlignWaysSegmentMgr.getInstance(Main.map.mapView).getSelectedNodes();
 
-		Command c = !Main.main.undoRedo.commands.isEmpty() ? Main.main.undoRedo.commands
-				.getLast()
-				: null;
+        Command c = !Main.main.undoRedo.commands.isEmpty() ? Main.main.undoRedo.commands
+                .getLast()
+                : null;
 
-				if (!(c instanceof AlignWaysRotateCommand &&
-						affectedNodes.equals(((AlignWaysRotateCommand) c).getRotatedNodes()))) {
-					c = new AlignWaysRotateCommand();
-					if (actionValid((AlignWaysRotateCommand)c, affectedNodes)) {
-						Main.main.undoRedo.add(c);
-					}
-				}
+                if (!(c instanceof AlignWaysRotateCommand &&
+                        affectedNodes.equals(((AlignWaysRotateCommand) c).getRotatedNodes()))) {
+                    c = new AlignWaysRotateCommand();
+                    if (actionValid((AlignWaysRotateCommand)c, affectedNodes)) {
+                        Main.main.undoRedo.add(c);
+                    }
+                }
 
-				Main.map.mapView.repaint();
+                Main.map.mapView.repaint();
 
-				return;
-	}
+                return;
+    }
 
 
-	/**
-	 * Validates the circumstances of the alignment (rotation) command to be executed.
-	 * @param c Command to be verified.
-	 * @param affectedNodes Nodes to be affected by the action.
-	 * @return true if the aligning action can be done, false otherwise.
-	 */
-	private boolean actionValid(AlignWaysRotateCommand c, Collection<Node> affectedNodes) {
-		// Deny action if reference and alignee segment cannot be aligned
-		if (!c.areSegsAlignable()) {
-			JOptionPane.showMessageDialog(Main.parent,
-					tr("Please select two segments that don''t share any nodes\n"
-							+ " or put the pivot on their common node.\n"),
-							tr("AlignWayS: Alignment not possible"), JOptionPane.WARNING_MESSAGE);
-			return false;
-		}
+    /**
+     * Validates the circumstances of the alignment (rotation) command to be executed.
+     * @param c Command to be verified.
+     * @param affectedNodes Nodes to be affected by the action.
+     * @return true if the aligning action can be done, false otherwise.
+     */
+    private boolean actionValid(AlignWaysRotateCommand c, Collection<Node> affectedNodes) {
+        // Deny action if reference and alignee segment cannot be aligned
+        if (!c.areSegsAlignable()) {
+            JOptionPane.showMessageDialog(Main.parent,
+                    tr("Please select two segments that don''t share any nodes\n"
+                            + " or put the pivot on their common node.\n"),
+                            tr("AlignWayS: Alignment not possible"), JOptionPane.WARNING_MESSAGE);
+            return false;
+        }
 
-		// Deny action if the nodes would end up outside world
-		for (Node n : affectedNodes) {
-			if (n.getCoor().isOutSideWorld()) {
-				// Revert move
-				(c).undoCommand();
-				JOptionPane.showMessageDialog(Main.parent,
-						tr("Aligning would result nodes outside the world.\n"),
-						tr("AlignWayS: Alignment not possible"), JOptionPane.WARNING_MESSAGE);
-				return false;
-			}
+        // Deny action if the nodes would end up outside world
+        for (Node n : affectedNodes) {
+            if (n.getCoor().isOutSideWorld()) {
+                // Revert move
+                (c).undoCommand();
+                JOptionPane.showMessageDialog(Main.parent,
+                        tr("Aligning would result nodes outside the world.\n"),
+                        tr("AlignWayS: Alignment not possible"), JOptionPane.WARNING_MESSAGE);
+                return false;
+            }
 
-		}
+        }
 
-		// Action valid
-		return true;
-	}
+        // Action valid
+        return true;
+    }
 
 }
Index: applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysAlgnSegment.java
===================================================================
--- applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysAlgnSegment.java	(revision 23165)
+++ applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysAlgnSegment.java	(revision 23189)
@@ -26,188 +26,188 @@
 public class AlignWaysAlgnSegment extends AlignWaysSegment {
 
-	private enum PivotLocations {
-		NONE, NODE1, NODE2, CENTRE
-	};
-
-	private PivotLocations currPivot;
-	Map<PivotLocations, EastNorth> pivotList = new EnumMap<PivotLocations, EastNorth>(
-			PivotLocations.class);
-	private final Color pivotColor = Color.YELLOW;
-	private final Color crossColor = pivotColor;
-
-	public AlignWaysAlgnSegment(MapView mapview, Point p)
-	throws IllegalArgumentException {
-		super(mapview, p);
-		setSegment(getNearestWaySegment(p));
-		segmentColor = Color.ORANGE;
-	}
-
-	/**
-	 * Sets segment and initialises its pivot list and activates the centre
-	 * rotation pivot.
-	 */
-	@Override
-	public void setSegment(WaySegment segment) {
-		super.setSegment(segment);
-		setPivots();
-	}
-
-	/**
-	 * Useful when segments moves (or e.g. rotates) on the map. Updates the end
-	 * segment points and the pivot coordinates without changing the current
-	 * pivot.
-	 */
-	public void updatePivotsEndpoints() {
-		setPivots(currPivot);
-		setSegmentEndpoints(segment);
-	}
-
-	/**
-	 * Updates the segment's pivot list and sets the rotation pivot to centre.
-	 */
-	private void setPivots(PivotLocations pivotRef) {
-		if (segment != null) {
-			for (PivotLocations pl : PivotLocations.values()) {
-				pivotList.put(pl, getPivotCoord(pl));
-			}
-			setPivotReference(pivotRef);
-		} else {
-			setPivotReference(PivotLocations.NONE);
-		}
-	}
-
-	private void setPivots() {
-		setPivots(PivotLocations.CENTRE);
-	}
-
-	private void setPivotReference(PivotLocations pp) {
-		currPivot = pp;
-	}
-
-	/**
-	 * Returns the EastNorth of the specified pivot point pp. It always returns
-	 * up-to-date data from dataset. Assumes segment is not null.
-	 * 
-	 * @param pp
-	 *            The pivot location
-	 */
-	private EastNorth getPivotCoord(PivotLocations pp) {
-		switch (pp) {
-		case NONE:
-			return null;
-		case NODE1:
-			return segment.way.getNode(segment.lowerIndex).getEastNorth();
-		case NODE2:
-			return segment.way.getNode(segment.lowerIndex + 1).getEastNorth();
-		case CENTRE:
-			return getPivotCoord(PivotLocations.NODE1).getCenter(
-					getPivotCoord(PivotLocations.NODE2));
-		default:
-			// Should never happen
-			return null;
-		}
-	}
-
-	/**
-	 * @return The EastNorth of the currently selected pivot.
-	 */
-	public EastNorth getCurrPivotCoord() {
-		if (segment != null)
-			return getPivotCoord(currPivot);
-		return null;
-	}
-
-	/**
-	 * @param clickedPoint
-	 *            Pivot may be updated in the vicinity of this point
-	 * @return true if a pivot is within reach on the segment, false otherwise
-	 */
-	public boolean updatePivot(Point clickedPoint) {
-		// tHQ Done.
-		PivotLocations tmpPivot = findNearbyPivot(clickedPoint);
-		if (tmpPivot != PivotLocations.NONE) {
-			setPivotReference(tmpPivot);
-			return true;
-		} else
-			return false;
-	}
-
-	private PivotLocations findNearbyPivot(Point clickedPoint) {
-		PivotLocations nearest = PivotLocations.NONE;
-		int snapDistance = NavigatableComponent.snapDistance;
-
-		// If no alignee selected yet, there's no point to carry on
-		if (segment == null)
-			return PivotLocations.NONE;
-
-		for (PivotLocations pl : PivotLocations.values()) {
-			if (pl.equals(PivotLocations.NONE)) {
-				continue;
-			}
-			if (mapview.getPoint(pivotList.get(pl)).distance(clickedPoint) <= snapDistance) {
-				nearest = pl;
-				break;
-			}
-		}
-		return nearest;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.openstreetmap.josm.plugins.alignways.AlignWaysRefSegment#paint(java
-	 * .awt.Graphics2D, org.openstreetmap.josm.gui.MapView,
-	 * org.openstreetmap.josm.data.Bounds)
-	 */
-	@Override
-	public void paint(Graphics2D g, MapView mv, Bounds bbox) {
-		// Note: segment should never be null here
-		super.paint(g, mv, bbox);
-
-		// Highlight potential pivot points
-		for (PivotLocations pl : PivotLocations.values()) {
-			if (pl != PivotLocations.NONE) {
-				highlightCross(g, mv, pivotList.get(pl));
-			}
-		}
-
-		// Highlight active pivot
-		highlightPivot(g, mv, getPivotCoord(currPivot));
-
-	}
-
-	private void highlightPivot(Graphics2D g, MapView mv, EastNorth pivot) {
-		g.setColor(pivotColor);
-		g.setStroke(new BasicStroke());
-
-		Shape pvCentrePoint = new Ellipse2D.Double(
-				mv.getPoint(pivot).getX() - 5.0f,
-				mv.getPoint(pivot).getY() - 5.0f, 10.0f, 10.0f);
-		g.fill(pvCentrePoint);
-		Shape pvPoint = new Ellipse2D.Double(mv.getPoint(pivot).getX() - 8.0f,
-				mv.getPoint(pivot).getY() - 8.0f, 16.0f, 16.0f);
-
-		g.draw(pvCentrePoint);
-		g.draw(pvPoint);
-	}
-
-	private void highlightCross(Graphics2D g, MapView mv, EastNorth en) {
-
-		double crossX = mv.getPoint(en).getX();
-		double crossY = mv.getPoint(en).getY();
-		double crossSize = 10.0;
-
-		Line2D crossV = new Line2D.Double(crossX, crossY - crossSize, crossX,
-				crossY + crossSize);
-		Line2D crossH = new Line2D.Double(crossX - crossSize, crossY, crossX
-				+ crossSize, crossY);
-
-		g.setColor(crossColor);
-		g.setStroke(new BasicStroke());
-		g.draw(crossV);
-		g.draw(crossH);
-
-	}
+    private enum PivotLocations {
+        NONE, NODE1, NODE2, CENTRE
+    };
+
+    private PivotLocations currPivot;
+    Map<PivotLocations, EastNorth> pivotList = new EnumMap<PivotLocations, EastNorth>(
+            PivotLocations.class);
+    private final Color pivotColor = Color.YELLOW;
+    private final Color crossColor = pivotColor;
+
+    public AlignWaysAlgnSegment(MapView mapview, Point p)
+    throws IllegalArgumentException {
+        super(mapview, p);
+        setSegment(getNearestWaySegment(p));
+        segmentColor = Color.ORANGE;
+    }
+
+    /**
+     * Sets segment and initialises its pivot list and activates the centre
+     * rotation pivot.
+     */
+    @Override
+    public void setSegment(WaySegment segment) {
+        super.setSegment(segment);
+        setPivots();
+    }
+
+    /**
+     * Useful when segments moves (or e.g. rotates) on the map. Updates the end
+     * segment points and the pivot coordinates without changing the current
+     * pivot.
+     */
+    public void updatePivotsEndpoints() {
+        setPivots(currPivot);
+        setSegmentEndpoints(segment);
+    }
+
+    /**
+     * Updates the segment's pivot list and sets the rotation pivot to centre.
+     */
+    private void setPivots(PivotLocations pivotRef) {
+        if (segment != null) {
+            for (PivotLocations pl : PivotLocations.values()) {
+                pivotList.put(pl, getPivotCoord(pl));
+            }
+            setPivotReference(pivotRef);
+        } else {
+            setPivotReference(PivotLocations.NONE);
+        }
+    }
+
+    private void setPivots() {
+        setPivots(PivotLocations.CENTRE);
+    }
+
+    private void setPivotReference(PivotLocations pp) {
+        currPivot = pp;
+    }
+
+    /**
+     * Returns the EastNorth of the specified pivot point pp. It always returns
+     * up-to-date data from dataset. Assumes segment is not null.
+     * 
+     * @param pp
+     *            The pivot location
+     */
+    private EastNorth getPivotCoord(PivotLocations pp) {
+        switch (pp) {
+        case NONE:
+            return null;
+        case NODE1:
+            return segment.way.getNode(segment.lowerIndex).getEastNorth();
+        case NODE2:
+            return segment.way.getNode(segment.lowerIndex + 1).getEastNorth();
+        case CENTRE:
+            return getPivotCoord(PivotLocations.NODE1).getCenter(
+                    getPivotCoord(PivotLocations.NODE2));
+        default:
+            // Should never happen
+            return null;
+        }
+    }
+
+    /**
+     * @return The EastNorth of the currently selected pivot.
+     */
+    public EastNorth getCurrPivotCoord() {
+        if (segment != null)
+            return getPivotCoord(currPivot);
+        return null;
+    }
+
+    /**
+     * @param clickedPoint
+     *            Pivot may be updated in the vicinity of this point
+     * @return true if a pivot is within reach on the segment, false otherwise
+     */
+    public boolean updatePivot(Point clickedPoint) {
+        // tHQ Done.
+        PivotLocations tmpPivot = findNearbyPivot(clickedPoint);
+        if (tmpPivot != PivotLocations.NONE) {
+            setPivotReference(tmpPivot);
+            return true;
+        } else
+            return false;
+    }
+
+    private PivotLocations findNearbyPivot(Point clickedPoint) {
+        PivotLocations nearest = PivotLocations.NONE;
+        int snapDistance = NavigatableComponent.snapDistance;
+
+        // If no alignee selected yet, there's no point to carry on
+        if (segment == null)
+            return PivotLocations.NONE;
+
+        for (PivotLocations pl : PivotLocations.values()) {
+            if (pl.equals(PivotLocations.NONE)) {
+                continue;
+            }
+            if (mapview.getPoint(pivotList.get(pl)).distance(clickedPoint) <= snapDistance) {
+                nearest = pl;
+                break;
+            }
+        }
+        return nearest;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.openstreetmap.josm.plugins.alignways.AlignWaysRefSegment#paint(java
+     * .awt.Graphics2D, org.openstreetmap.josm.gui.MapView,
+     * org.openstreetmap.josm.data.Bounds)
+     */
+    @Override
+    public void paint(Graphics2D g, MapView mv, Bounds bbox) {
+        // Note: segment should never be null here
+        super.paint(g, mv, bbox);
+
+        // Highlight potential pivot points
+        for (PivotLocations pl : PivotLocations.values()) {
+            if (pl != PivotLocations.NONE) {
+                highlightCross(g, mv, pivotList.get(pl));
+            }
+        }
+
+        // Highlight active pivot
+        highlightPivot(g, mv, getPivotCoord(currPivot));
+
+    }
+
+    private void highlightPivot(Graphics2D g, MapView mv, EastNorth pivot) {
+        g.setColor(pivotColor);
+        g.setStroke(new BasicStroke());
+
+        Shape pvCentrePoint = new Ellipse2D.Double(
+                mv.getPoint(pivot).getX() - 5.0f,
+                mv.getPoint(pivot).getY() - 5.0f, 10.0f, 10.0f);
+        g.fill(pvCentrePoint);
+        Shape pvPoint = new Ellipse2D.Double(mv.getPoint(pivot).getX() - 8.0f,
+                mv.getPoint(pivot).getY() - 8.0f, 16.0f, 16.0f);
+
+        g.draw(pvCentrePoint);
+        g.draw(pvPoint);
+    }
+
+    private void highlightCross(Graphics2D g, MapView mv, EastNorth en) {
+
+        double crossX = mv.getPoint(en).getX();
+        double crossY = mv.getPoint(en).getY();
+        double crossSize = 10.0;
+
+        Line2D crossV = new Line2D.Double(crossX, crossY - crossSize, crossX,
+                crossY + crossSize);
+        Line2D crossH = new Line2D.Double(crossX - crossSize, crossY, crossX
+                + crossSize, crossY);
+
+        g.setColor(crossColor);
+        g.setStroke(new BasicStroke());
+        g.draw(crossV);
+        g.draw(crossH);
+
+    }
 
 }
Index: applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysPlugin.java
===================================================================
--- applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysPlugin.java	(revision 23165)
+++ applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysPlugin.java	(revision 23189)
@@ -20,44 +20,44 @@
 public class AlignWaysPlugin extends Plugin {
 
-	static AlignWaysMode awMode;
-	private final IconToggleButton btn;
-	static JMenuItem alignWaysMenuItem;
-	static JosmAction awAction;
+    static AlignWaysMode awMode;
+    private final IconToggleButton btn;
+    static JMenuItem alignWaysMenuItem;
+    static JosmAction awAction;
 
-	/**
-	 * 
-	 */
-	public AlignWaysPlugin(PluginInformation info) {
-		super(info);
-		awMode = new AlignWaysMode(Main.map, "alignways", tr("Align Ways mode"));
-		btn = new IconToggleButton(awMode);
-		btn.setVisible(true);
-		Main.main.menu.toolsMenu.addSeparator();
-		awAction = new AlignWaysAction();
-		alignWaysMenuItem = MainMenu.add(Main.main.menu.toolsMenu, awAction);
-		Main.main.menu.toolsMenu.addSeparator();
+    /**
+     * 
+     */
+    public AlignWaysPlugin(PluginInformation info) {
+        super(info);
+        awMode = new AlignWaysMode(Main.map, "alignways", tr("Align Ways mode"));
+        btn = new IconToggleButton(awMode);
+        btn.setVisible(true);
+        Main.main.menu.toolsMenu.addSeparator();
+        awAction = new AlignWaysAction();
+        alignWaysMenuItem = MainMenu.add(Main.main.menu.toolsMenu, awAction);
+        Main.main.menu.toolsMenu.addSeparator();
 
-	}
+    }
 
-	@Override
-	public void mapFrameInitialized(MapFrame oldFrame, MapFrame newFrame) {
-		if (Main.map != null) {
-			Main.map.addMapMode(btn);
-		}
-	}
+    @Override
+    public void mapFrameInitialized(MapFrame oldFrame, MapFrame newFrame) {
+        if (Main.map != null) {
+            Main.map.addMapMode(btn);
+        }
+    }
 
-	/**
-	 * @return the awAction
-	 */
-	public static JosmAction getAwAction() {
-		return awAction;
-	}
+    /**
+     * @return the awAction
+     */
+    public static JosmAction getAwAction() {
+        return awAction;
+    }
 
-	/**
-	 * @return the awMode
-	 */
-	public static AlignWaysMode getAwMode() {
-		return awMode;
-	}
+    /**
+     * @return the awMode
+     */
+    public static AlignWaysMode getAwMode() {
+        return awMode;
+    }
 
 }
Index: applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysRefSegment.java
===================================================================
--- applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysRefSegment.java	(revision 23165)
+++ applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysRefSegment.java	(revision 23189)
@@ -15,13 +15,13 @@
 public class AlignWaysRefSegment extends AlignWaysSegment {
 
-	// Note: segment may be null. This is normal.
+    // Note: segment may be null. This is normal.
 
-	public AlignWaysRefSegment(MapView mapview, Point p)
-	throws IllegalArgumentException {
-		super(mapview, p);
-		setSegment(getNearestWaySegment(p));
-		segmentColor = Color.GREEN;
+    public AlignWaysRefSegment(MapView mapview, Point p)
+    throws IllegalArgumentException {
+        super(mapview, p);
+        setSegment(getNearestWaySegment(p));
+        segmentColor = Color.GREEN;
 
-	}
+    }
 
 }
Index: applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysRotateCommand.java
===================================================================
--- applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysRotateCommand.java	(revision 23165)
+++ applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysRotateCommand.java	(revision 23189)
@@ -32,218 +32,218 @@
 public class AlignWaysRotateCommand extends Command {
 
-	private final AlignWaysAlgnSegment algnSeg;
-
-	/**
-	 * The objects to rotate.
-	 */
-	private Collection<Node> nodes = new HashSet<Node>();
-
-	/**
-	 * pivot point
-	 */
-	private final EastNorth pivot;
-
-	/**
-	 * Small helper for holding the interesting part of the old data state of
-	 * the objects.
-	 */
-	public static class OldState {
-		LatLon latlon;
-		EastNorth eastNorth;
-		WaySegment ws;
-		boolean modified;
-	}
-
-	/**
-	 * computed rotation angle to rotate the segment
-	 * 
-	 */
-	private final double rotationAngle;
-
-	/**
-	 * List of all old states of the objects.
-	 */
-	private final Map<Node, OldState> oldState = new HashMap<Node, OldState>();
-	private final Stack<WaySegment> oldWS = new Stack<WaySegment>();
-
-	/**
-	 * Creates an AlignWaysRotateCommand.
-	 */
-	public AlignWaysRotateCommand() {
-
-		algnSeg = AlignWaysSegmentMgr.getInstance(Main.map.mapView)
-		.getAlgnSeg();
-		WaySegment algnWS = algnSeg.getSegment();
-		WaySegment refWS = AlignWaysSegmentMgr.getInstance(Main.map.mapView)
-		.getRefSeg().getSegment();
-
-		this.pivot = algnSeg.getCurrPivotCoord();
-		this.nodes = algnSeg.getSegmentEndPoints();
-
-		EastNorth enRefNode1 = refWS.way.getNode(refWS.lowerIndex)
-		.getEastNorth();
-		EastNorth enRefNode2 = refWS.way.getNode(refWS.lowerIndex + 1)
-		.getEastNorth();
-
-		EastNorth enAlgnNode1 = algnWS.way.getNode(algnWS.lowerIndex)
-		.getEastNorth();
-		EastNorth enAlgnNode2 = algnWS.way.getNode(algnWS.lowerIndex + 1)
-		.getEastNorth();
-
-		// Calculate the rotation angle
-		double refAngle = Math.atan2(enRefNode1.north() - enRefNode2.north(),
-				enRefNode1.east() - enRefNode2.east());
-		double algnAngle = Math.atan2(
-				enAlgnNode1.north() - enAlgnNode2.north(), enAlgnNode1.east()
-				- enAlgnNode2.east());
-
-		rotationAngle = normalise_angle(refAngle - algnAngle);
-
-		/* For debug only
-		String s = "Ref Angle: " + refAngle + " (" + Math.toDegrees(refAngle)
-				+ ")\n";
-		s += "Algn Angle: " + algnAngle + " (" + Math.toDegrees(algnAngle)
-				+ ")\n";
-		s += "Rotation angle: " + rotationAngle + " ("
-				+ Math.toDegrees(rotationAngle) + ")";
-		 */
-
-		// rotateNodes(true);
-
-	}
-
-	/**
-	 * Helper for actually rotating the nodes.
-	 * 
-	 * @param setModified
-	 *            - true if rotated nodes should be flagged "modified"
-	 */
-	private void rotateNodes(boolean setModified) {
-
-		// "Backup" state
-		WaySegment algnWS = algnSeg.getSegment();
-		for (Node n : this.nodes) {
-			OldState os = new OldState();
-			os.latlon = new LatLon(n.getCoor());
-			os.eastNorth = n.getEastNorth();
-			os.ws = algnWS;
-			os.modified = n.isModified();
-			oldState.put(n, os);
-		}
-		oldWS.push(algnWS);
-
-		// Rotate
-		for (Node n : nodes) {
-			double cosPhi = Math.cos(rotationAngle);
-			double sinPhi = Math.sin(rotationAngle);
-			EastNorth oldEastNorth = oldState.get(n).eastNorth;
-			double x = oldEastNorth.east() - pivot.east();
-			double y = oldEastNorth.north() - pivot.north();
-			double nx = cosPhi * x - sinPhi * y + pivot.east();
-			double ny = sinPhi * x + cosPhi * y + pivot.north();
-			n.setEastNorth(new EastNorth(nx, ny));
-			if (setModified) {
-				n.setModified(true);
-			}
-		}
-		algnSeg.updatePivotsEndpoints();
-	}
-
-	/**
-	 * Make sure angle is in interval ( -Pi/2, Pi/2 ].
-	 */
-	private static double normalise_angle(double a) {
-		while (a > Math.PI) {
-			a -= 2 * Math.PI;
-		}
-		while (a <= -Math.PI) {
-			a += 2 * Math.PI;
-		}
-
-		if (a > Math.PI / 2) {
-			a -= Math.PI;
-		} else if (a < -Math.PI / 2) {
-			a += Math.PI;
-		}
-		return a;
-	}
-
-	@Override
-	public JLabel getDescription() {
-		return new JLabel(tr("Align way segment"), ImageProvider.get(
-				"", "alignways"), SwingConstants.HORIZONTAL);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.openstreetmap.josm.command.Command#fillModifiedData(java.util.Collection
-	 * , java.util.Collection, java.util.Collection)
-	 */
-	@Override
-	public void fillModifiedData(Collection<OsmPrimitive> modified,
-			Collection<OsmPrimitive> deleted, Collection<OsmPrimitive> added) {
-		for (OsmPrimitive osm : nodes) {
-			modified.add(osm);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.openstreetmap.josm.command.Command#executeCommand()
-	 */
-	@Override
-	public boolean executeCommand() {
-		rotateNodes(true);
-		return true;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.openstreetmap.josm.command.Command#undoCommand()
-	 */
-	@Override
-	public void undoCommand() {
-		for (Node n : nodes) {
-			OldState os = oldState.get(n);
-			n.setCoor(os.latlon);
-			n.setModified(os.modified);
-		}
-		algnSeg.updatePivotsEndpoints();
-	}
-
-	public Collection<Node> getRotatedNodes() {
-		return nodes;
-	}
-
-	/** Returns true if the two selected segments are alignable.
-	 *  They are not if they are connected *and* the pivot is not the connection node.
-	 */
-	public boolean areSegsAlignable() {
-		Collection<Node> algnNodes = nodes;
-		Collection<Node> refNodes = AlignWaysSegmentMgr.getInstance(Main.map.mapView)
-		.getRefSeg().getSegmentEndPoints();
-
-		// First check if the pivot node of the alignee exists in the reference:
-		// in this case the pivot is the shared node and alignment is possible
-		for (Node nR : refNodes) {
-			if (nR.getEastNorth().equals(pivot))
-				return true;
-		}
-
-		// Otherwise if the segments are connected, alignment is not possible
-		for (Node nA : algnNodes) {
-			for (Node nR : refNodes) {
-				if (nA.equals(nR))
-					return false;
-			}
-		}
-
-		// In all other cases alignment is possible
-		return true;
-	}
+    private final AlignWaysAlgnSegment algnSeg;
+
+    /**
+     * The objects to rotate.
+     */
+    private Collection<Node> nodes = new HashSet<Node>();
+
+    /**
+     * pivot point
+     */
+    private final EastNorth pivot;
+
+    /**
+     * Small helper for holding the interesting part of the old data state of
+     * the objects.
+     */
+    public static class OldState {
+        LatLon latlon;
+        EastNorth eastNorth;
+        WaySegment ws;
+        boolean modified;
+    }
+
+    /**
+     * computed rotation angle to rotate the segment
+     * 
+     */
+    private final double rotationAngle;
+
+    /**
+     * List of all old states of the objects.
+     */
+    private final Map<Node, OldState> oldState = new HashMap<Node, OldState>();
+    private final Stack<WaySegment> oldWS = new Stack<WaySegment>();
+
+    /**
+     * Creates an AlignWaysRotateCommand.
+     */
+    public AlignWaysRotateCommand() {
+
+        algnSeg = AlignWaysSegmentMgr.getInstance(Main.map.mapView)
+        .getAlgnSeg();
+        WaySegment algnWS = algnSeg.getSegment();
+        WaySegment refWS = AlignWaysSegmentMgr.getInstance(Main.map.mapView)
+        .getRefSeg().getSegment();
+
+        this.pivot = algnSeg.getCurrPivotCoord();
+        this.nodes = algnSeg.getSegmentEndPoints();
+
+        EastNorth enRefNode1 = refWS.way.getNode(refWS.lowerIndex)
+        .getEastNorth();
+        EastNorth enRefNode2 = refWS.way.getNode(refWS.lowerIndex + 1)
+        .getEastNorth();
+
+        EastNorth enAlgnNode1 = algnWS.way.getNode(algnWS.lowerIndex)
+        .getEastNorth();
+        EastNorth enAlgnNode2 = algnWS.way.getNode(algnWS.lowerIndex + 1)
+        .getEastNorth();
+
+        // Calculate the rotation angle
+        double refAngle = Math.atan2(enRefNode1.north() - enRefNode2.north(),
+                enRefNode1.east() - enRefNode2.east());
+        double algnAngle = Math.atan2(
+                enAlgnNode1.north() - enAlgnNode2.north(), enAlgnNode1.east()
+                - enAlgnNode2.east());
+
+        rotationAngle = normalise_angle(refAngle - algnAngle);
+
+        /* For debug only
+        String s = "Ref Angle: " + refAngle + " (" + Math.toDegrees(refAngle)
+                + ")\n";
+        s += "Algn Angle: " + algnAngle + " (" + Math.toDegrees(algnAngle)
+                + ")\n";
+        s += "Rotation angle: " + rotationAngle + " ("
+                + Math.toDegrees(rotationAngle) + ")";
+         */
+
+        // rotateNodes(true);
+
+    }
+
+    /**
+     * Helper for actually rotating the nodes.
+     * 
+     * @param setModified
+     *            - true if rotated nodes should be flagged "modified"
+     */
+    private void rotateNodes(boolean setModified) {
+
+        // "Backup" state
+        WaySegment algnWS = algnSeg.getSegment();
+        for (Node n : this.nodes) {
+            OldState os = new OldState();
+            os.latlon = new LatLon(n.getCoor());
+            os.eastNorth = n.getEastNorth();
+            os.ws = algnWS;
+            os.modified = n.isModified();
+            oldState.put(n, os);
+        }
+        oldWS.push(algnWS);
+
+        // Rotate
+        for (Node n : nodes) {
+            double cosPhi = Math.cos(rotationAngle);
+            double sinPhi = Math.sin(rotationAngle);
+            EastNorth oldEastNorth = oldState.get(n).eastNorth;
+            double x = oldEastNorth.east() - pivot.east();
+            double y = oldEastNorth.north() - pivot.north();
+            double nx = cosPhi * x - sinPhi * y + pivot.east();
+            double ny = sinPhi * x + cosPhi * y + pivot.north();
+            n.setEastNorth(new EastNorth(nx, ny));
+            if (setModified) {
+                n.setModified(true);
+            }
+        }
+        algnSeg.updatePivotsEndpoints();
+    }
+
+    /**
+     * Make sure angle is in interval ( -Pi/2, Pi/2 ].
+     */
+    private static double normalise_angle(double a) {
+        while (a > Math.PI) {
+            a -= 2 * Math.PI;
+        }
+        while (a <= -Math.PI) {
+            a += 2 * Math.PI;
+        }
+
+        if (a > Math.PI / 2) {
+            a -= Math.PI;
+        } else if (a < -Math.PI / 2) {
+            a += Math.PI;
+        }
+        return a;
+    }
+
+    @Override
+    public JLabel getDescription() {
+        return new JLabel(tr("Align way segment"), ImageProvider.get(
+                "", "alignways"), SwingConstants.HORIZONTAL);
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.openstreetmap.josm.command.Command#fillModifiedData(java.util.Collection
+     * , java.util.Collection, java.util.Collection)
+     */
+    @Override
+    public void fillModifiedData(Collection<OsmPrimitive> modified,
+            Collection<OsmPrimitive> deleted, Collection<OsmPrimitive> added) {
+        for (OsmPrimitive osm : nodes) {
+            modified.add(osm);
+        }
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.openstreetmap.josm.command.Command#executeCommand()
+     */
+    @Override
+    public boolean executeCommand() {
+        rotateNodes(true);
+        return true;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.openstreetmap.josm.command.Command#undoCommand()
+     */
+    @Override
+    public void undoCommand() {
+        for (Node n : nodes) {
+            OldState os = oldState.get(n);
+            n.setCoor(os.latlon);
+            n.setModified(os.modified);
+        }
+        algnSeg.updatePivotsEndpoints();
+    }
+
+    public Collection<Node> getRotatedNodes() {
+        return nodes;
+    }
+
+    /** Returns true if the two selected segments are alignable.
+     *  They are not if they are connected *and* the pivot is not the connection node.
+     */
+    public boolean areSegsAlignable() {
+        Collection<Node> algnNodes = nodes;
+        Collection<Node> refNodes = AlignWaysSegmentMgr.getInstance(Main.map.mapView)
+        .getRefSeg().getSegmentEndPoints();
+
+        // First check if the pivot node of the alignee exists in the reference:
+        // in this case the pivot is the shared node and alignment is possible
+        for (Node nR : refNodes) {
+            if (nR.getEastNorth().equals(pivot))
+                return true;
+        }
+
+        // Otherwise if the segments are connected, alignment is not possible
+        for (Node nA : algnNodes) {
+            for (Node nR : refNodes) {
+                if (nA.equals(nR))
+                    return false;
+            }
+        }
+
+        // In all other cases alignment is possible
+        return true;
+    }
 
 }
Index: applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysSegment.java
===================================================================
--- applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysSegment.java	(revision 23165)
+++ applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysSegment.java	(revision 23189)
@@ -27,125 +27,125 @@
 public class AlignWaysSegment implements MapViewPaintable {
 
-	protected WaySegment segment;
-	protected MapView mapview;
-	protected Color segmentColor = Color.WHITE;
-	protected Collection<Node> segmentEndPoints;
+    protected WaySegment segment;
+    protected MapView mapview;
+    protected Color segmentColor = Color.WHITE;
+    protected Collection<Node> segmentEndPoints;
 
-	public AlignWaysSegment(MapView mapview, Point p)
-	throws IllegalArgumentException {
-		if (mapview == null)
-			throw new IllegalArgumentException(tr(
-					"Parameter ''{0}'' must not be null", "mapview"));
-		if (p == null)
-			throw new IllegalArgumentException(tr(
-					"Parameter ''{0}'' must not be null", "p"));
+    public AlignWaysSegment(MapView mapview, Point p)
+    throws IllegalArgumentException {
+        if (mapview == null)
+            throw new IllegalArgumentException(tr(
+                    "Parameter ''{0}'' must not be null", "mapview"));
+        if (p == null)
+            throw new IllegalArgumentException(tr(
+                    "Parameter ''{0}'' must not be null", "p"));
 
-		this.mapview = mapview;
-	}
+        this.mapview = mapview;
+    }
 
-	void setSegment(WaySegment segment) {
-		this.segment = segment;
-		if (segment != null) {
-			setSegmentEndpoints(segment);
-			mapview.addTemporaryLayer(this);
-		}
-	}
+    void setSegment(WaySegment segment) {
+        this.segment = segment;
+        if (segment != null) {
+            setSegmentEndpoints(segment);
+            mapview.addTemporaryLayer(this);
+        }
+    }
 
 
-	void setSegmentEndpoints(WaySegment segment) {
-		if (segment != null) {
-			Node node1 = segment.way.getNode(segment.lowerIndex);
-			Node node2 = segment.way.getNode(segment.lowerIndex + 1);
+    void setSegmentEndpoints(WaySegment segment) {
+        if (segment != null) {
+            Node node1 = segment.way.getNode(segment.lowerIndex);
+            Node node2 = segment.way.getNode(segment.lowerIndex + 1);
 
-			segmentEndPoints = new HashSet<Node>();
-			segmentEndPoints.add(node1);
-			segmentEndPoints.add(node2);
+            segmentEndPoints = new HashSet<Node>();
+            segmentEndPoints.add(node1);
+            segmentEndPoints.add(node2);
 
-		}
-	}
+        }
+    }
 
-	protected WaySegment getNearestWaySegment(Point p) {
+    protected WaySegment getNearestWaySegment(Point p) {
 
-		return mapview.getNearestWaySegment(p, OsmPrimitive.isUsablePredicate);
+        return mapview.getNearestWaySegment(p, OsmPrimitive.isUsablePredicate);
 
-	}
+    }
 
-	public void destroy() {
-		if (segment != null) {
-			mapview.removeTemporaryLayer(this);
-		}
-	}
+    public void destroy() {
+        if (segment != null) {
+            mapview.removeTemporaryLayer(this);
+        }
+    }
 
-	public WaySegment getSegment() {
-		return segment;
-	}
+    public WaySegment getSegment() {
+        return segment;
+    }
 
-	public Collection<Node> getSegmentEndPoints() {
-		return segmentEndPoints;
-	}
+    public Collection<Node> getSegmentEndPoints() {
+        return segmentEndPoints;
+    }
 
-	public void paint(Graphics2D g, MapView mv, Bounds bbox) {
-		highlightSegment(segmentColor, g, mv);
-	}
+    public void paint(Graphics2D g, MapView mv, Bounds bbox) {
+        highlightSegment(segmentColor, g, mv);
+    }
 
-	protected void highlightSegment(Color c, Graphics2D g, MapView mv) {
+    protected void highlightSegment(Color c, Graphics2D g, MapView mv) {
 
-		g.setColor(c);
-		g.setStroke(new BasicStroke(6, BasicStroke.CAP_ROUND,
-				BasicStroke.JOIN_ROUND));
-		drawSegment(g, mv);
+        g.setColor(c);
+        g.setStroke(new BasicStroke(6, BasicStroke.CAP_ROUND,
+                BasicStroke.JOIN_ROUND));
+        drawSegment(g, mv);
 
-	}
+    }
 
-	protected void drawSegment(Graphics2D g, MapView mv) {
-		Node n1 = segment.way.getNode(segment.lowerIndex);
-		Node n2 = segment.way.getNode(segment.lowerIndex + 1);
+    protected void drawSegment(Graphics2D g, MapView mv) {
+        Node n1 = segment.way.getNode(segment.lowerIndex);
+        Node n2 = segment.way.getNode(segment.lowerIndex + 1);
 
-		Line2D newline = new Line2D.Double(mv.getPoint(n1), mv.getPoint(n2));
-		g.draw(newline);
-	}
+        Line2D newline = new Line2D.Double(mv.getPoint(n1), mv.getPoint(n2));
+        g.draw(newline);
+    }
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see java.lang.Object#hashCode()
-	 */
-	@Override
-	public int hashCode() {
-		final int prime = 31;
-		int result = 1;
-		result = prime * result + ((segment == null) ? 0 : segment.hashCode());
-		result = prime * result
-		+ ((segmentColor == null) ? 0 : segmentColor.hashCode());
-		return result;
-	}
+    /*
+     * (non-Javadoc)
+     * 
+     * @see java.lang.Object#hashCode()
+     */
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((segment == null) ? 0 : segment.hashCode());
+        result = prime * result
+        + ((segmentColor == null) ? 0 : segmentColor.hashCode());
+        return result;
+    }
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see java.lang.Object#equals(java.lang.Object)
-	 */
-	@Override
-	public boolean equals(Object obj) {
-		if (this == obj)
-			return true;
-		if (obj == null)
-			return false;
-		if (!(obj instanceof AlignWaysSegment))
-			return false;
-		AlignWaysSegment other = (AlignWaysSegment) obj;
-		if (segment == null) {
-			if (other.segment != null)
-				return false;
-		} else if (!segment.equals(other.segment))
-			return false;
-		/* Segment colour is ignored in comparison
-		if (segmentColor == null) {
-			if (other.segmentColor != null)
-				return false;
-		} else if (!segmentColor.equals(other.segmentColor))
-			return false;
-		 */
-		return true;
-	}
+    /*
+     * (non-Javadoc)
+     * 
+     * @see java.lang.Object#equals(java.lang.Object)
+     */
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (!(obj instanceof AlignWaysSegment))
+            return false;
+        AlignWaysSegment other = (AlignWaysSegment) obj;
+        if (segment == null) {
+            if (other.segment != null)
+                return false;
+        } else if (!segment.equals(other.segment))
+            return false;
+        /* Segment colour is ignored in comparison
+        if (segmentColor == null) {
+            if (other.segmentColor != null)
+                return false;
+        } else if (!segmentColor.equals(other.segmentColor))
+            return false;
+         */
+        return true;
+    }
 }
Index: applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysSegmentMgr.java
===================================================================
--- applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysSegmentMgr.java	(revision 23165)
+++ applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysSegmentMgr.java	(revision 23189)
@@ -22,140 +22,140 @@
 public class AlignWaysSegmentMgr {
 
-	private volatile static AlignWaysSegmentMgr singleton;
-	private AlignWaysRefSegment refSeg = null;
-	private AlignWaysAlgnSegment algnSeg = null;
-	private final MapView mv;
+    private volatile static AlignWaysSegmentMgr singleton;
+    private AlignWaysRefSegment refSeg = null;
+    private AlignWaysAlgnSegment algnSeg = null;
+    private final MapView mv;
 
-	private AlignWaysSegmentMgr(MapView mapView) {
-		mv = mapView;
-	}
+    private AlignWaysSegmentMgr(MapView mapView) {
+        mv = mapView;
+    }
 
-	public static AlignWaysSegmentMgr getInstance(MapView mapView) {
-		if (singleton == null) {
-			synchronized (AlignWaysSegmentMgr.class) {
-				if (singleton == null) {
-					singleton = new AlignWaysSegmentMgr(mapView);
-				}
-			}
-		}
-		return singleton;
-	}
+    public static AlignWaysSegmentMgr getInstance(MapView mapView) {
+        if (singleton == null) {
+            synchronized (AlignWaysSegmentMgr.class) {
+                if (singleton == null) {
+                    singleton = new AlignWaysSegmentMgr(mapView);
+                }
+            }
+        }
+        return singleton;
+    }
 
-	/**
-	 * @param clickedPoint
-	 *            Point nearby where user probably clicked
-	 * @return true, if alignee changed, false otherwise
-	 */
-	public boolean algnUpdate(Point clickedPoint) {
+    /**
+     * @param clickedPoint
+     *            Point nearby where user probably clicked
+     * @return true, if alignee changed, false otherwise
+     */
+    public boolean algnUpdate(Point clickedPoint) {
 
-		if (algnSeg != null) {
-			// Check first if there is a pivot point nearby that needs selection
-			if (algnSeg.updatePivot(clickedPoint))
-				// Updated pivot, alignee reference unchanged
-				return false;
-		}
+        if (algnSeg != null) {
+            // Check first if there is a pivot point nearby that needs selection
+            if (algnSeg.updatePivot(clickedPoint))
+                // Updated pivot, alignee reference unchanged
+                return false;
+        }
 
-		// Previous attempt of pivot update unsuccessful, check alignee update
-		AlignWaysAlgnSegment tmpAlgnSeg = new AlignWaysAlgnSegment(mv,
-				clickedPoint);
-		if (tmpAlgnSeg.getSegment() == null)
-			return false;
-		else {
-			// Found a segment
-			// It may happen that the new segment is identical with the already
-			// selected reference:
-			if ((refSeg != null) && (tmpAlgnSeg.equals(refSeg))) {
-				// This action is then ignored (we won't clear the reference
-				// segment)
-				JOptionPane.showMessageDialog(Main.parent,
-						tr("Segment to be aligned cannot be the same with the reference segment.\n" +
-						"Please choose a different segment to be aligned."),
-						tr("AlignWayS message"), JOptionPane.WARNING_MESSAGE);
-				return false;
-			}
-			// This will be a new alignee, old alignee (if any) will be lost:
-			if (algnSeg != null) {
-				algnSeg.destroy();
-			}
+        // Previous attempt of pivot update unsuccessful, check alignee update
+        AlignWaysAlgnSegment tmpAlgnSeg = new AlignWaysAlgnSegment(mv,
+                clickedPoint);
+        if (tmpAlgnSeg.getSegment() == null)
+            return false;
+        else {
+            // Found a segment
+            // It may happen that the new segment is identical with the already
+            // selected reference:
+            if ((refSeg != null) && (tmpAlgnSeg.equals(refSeg))) {
+                // This action is then ignored (we won't clear the reference
+                // segment)
+                JOptionPane.showMessageDialog(Main.parent,
+                        tr("Segment to be aligned cannot be the same with the reference segment.\n" +
+                        "Please choose a different segment to be aligned."),
+                        tr("AlignWayS message"), JOptionPane.WARNING_MESSAGE);
+                return false;
+            }
+            // This will be a new alignee, old alignee (if any) will be lost:
+            if (algnSeg != null) {
+                algnSeg.destroy();
+            }
 
-			// Update alignee
-			algnSeg = tmpAlgnSeg;
+            // Update alignee
+            algnSeg = tmpAlgnSeg;
 
-			return true;
-		}
+            return true;
+        }
 
-	}
+    }
 
-	/**
-	 * @param clickedPoint
-	 *            Point nearby where user probably clicked
-	 * @return true, if reference changed, false otherwise
-	 */
-	public boolean refUpdate(Point clickedPoint) {
+    /**
+     * @param clickedPoint
+     *            Point nearby where user probably clicked
+     * @return true, if reference changed, false otherwise
+     */
+    public boolean refUpdate(Point clickedPoint) {
 
-		AlignWaysRefSegment tmpRefSeg = new AlignWaysRefSegment(mv,
-				clickedPoint);
-		// TODO Have to check what happens when refSeg wasn't null previously
-		if (tmpRefSeg.getSegment() == null)
-			return false;
-		else {
-			// Found a segment
-			// It may happen that the new segment is identical with the already
-			// selected alignee:
-			if ((algnSeg != null) && (tmpRefSeg.equals(algnSeg))) {
-				// This action is then ignored (we won't clear the alignee
-				// segment)
-				JOptionPane.showMessageDialog(Main.parent,
-						tr("Reference segment cannot be the same with the segment to be aligned.\n" +
-						"Please choose a different reference segment."),
-						tr("AlignWayS message"), JOptionPane.WARNING_MESSAGE);
-				return false;
-			}
-			// This will be a new reference, old reference (if any) will be lost:
-			if (refSeg != null) {
-				refSeg.destroy();
-			}
+        AlignWaysRefSegment tmpRefSeg = new AlignWaysRefSegment(mv,
+                clickedPoint);
+        // TODO Have to check what happens when refSeg wasn't null previously
+        if (tmpRefSeg.getSegment() == null)
+            return false;
+        else {
+            // Found a segment
+            // It may happen that the new segment is identical with the already
+            // selected alignee:
+            if ((algnSeg != null) && (tmpRefSeg.equals(algnSeg))) {
+                // This action is then ignored (we won't clear the alignee
+                // segment)
+                JOptionPane.showMessageDialog(Main.parent,
+                        tr("Reference segment cannot be the same with the segment to be aligned.\n" +
+                        "Please choose a different reference segment."),
+                        tr("AlignWayS message"), JOptionPane.WARNING_MESSAGE);
+                return false;
+            }
+            // This will be a new reference, old reference (if any) will be lost:
+            if (refSeg != null) {
+                refSeg.destroy();
+            }
 
-			// Update reference
-			refSeg = tmpRefSeg;
-			return true;
+            // Update reference
+            refSeg = tmpRefSeg;
+            return true;
 
-		}
+        }
 
-	}
+    }
 
-	/**
-	 * @return Collection of the nodes that belong to the selected alignee.
-	 */
-	public Collection<Node> getSelectedNodes() {
-		if (algnSeg != null)
-			return algnSeg.getSegmentEndPoints();
-		return null;
-	}
+    /**
+     * @return Collection of the nodes that belong to the selected alignee.
+     */
+    public Collection<Node> getSelectedNodes() {
+        if (algnSeg != null)
+            return algnSeg.getSegmentEndPoints();
+        return null;
+    }
 
-	/**
-	 * Performs "clean-up" on the initialised segments
-	 */
-	public void cleanupWays() {
-		if (algnSeg != null) {
-			algnSeg.destroy();
-			algnSeg = null;
-		}
-		if (refSeg != null) {
-			refSeg.destroy();
-			refSeg = null;
-		}
-	}
+    /**
+     * Performs "clean-up" on the initialised segments
+     */
+    public void cleanupWays() {
+        if (algnSeg != null) {
+            algnSeg.destroy();
+            algnSeg = null;
+        }
+        if (refSeg != null) {
+            refSeg.destroy();
+            refSeg = null;
+        }
+    }
 
-	public AlignWaysAlgnSegment getAlgnSeg() {
-		return algnSeg;
-	}
+    public AlignWaysAlgnSegment getAlgnSeg() {
+        return algnSeg;
+    }
 
-	/**
-	 * @return the refSeg
-	 */
-	public AlignWaysRefSegment getRefSeg() {
-		return refSeg;
-	}
+    /**
+     * @return the refSeg
+     */
+    public AlignWaysRefSegment getRefSeg() {
+        return refSeg;
+    }
 
 }
Index: applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysSelAlgnState.java
===================================================================
--- applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysSelAlgnState.java	(revision 23165)
+++ applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysSelAlgnState.java	(revision 23189)
@@ -12,19 +12,19 @@
 public class AlignWaysSelAlgnState extends AlignWaysState {
 
-	@Override
-	public void leftClick(AlignWaysMode alignWaysMode) {
-		// No state change, nothing to do
-	}
+    @Override
+    public void leftClick(AlignWaysMode alignWaysMode) {
+        // No state change, nothing to do
+    }
 
-	@Override
-	public void ctrlLClick(AlignWaysMode alignWaysMode) {
-		alignWaysMode.setCurrentState(alignWaysMode.getBothSelected());
-	}
+    @Override
+    public void ctrlLClick(AlignWaysMode alignWaysMode) {
+        alignWaysMode.setCurrentState(alignWaysMode.getBothSelected());
+    }
 
-	@Override
-	public void setHelpText() {
-		Main.map.statusLine
-				.setHelpText("Ctrl-Click: select reference way segment; Alt-click: Clear selection");
-	}
+    @Override
+    public void setHelpText() {
+        Main.map.statusLine
+                .setHelpText("Ctrl-Click: select reference way segment; Alt-click: Clear selection");
+    }
 
 }
Index: applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysSelBothState.java
===================================================================
--- applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysSelBothState.java	(revision 23165)
+++ applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysSelBothState.java	(revision 23189)
@@ -12,20 +12,20 @@
 public class AlignWaysSelBothState extends AlignWaysState {
 
-	@Override
-	public void leftClick(AlignWaysMode alignWaysMode) {
-		// No state change, nothing to do
-	}
+    @Override
+    public void leftClick(AlignWaysMode alignWaysMode) {
+        // No state change, nothing to do
+    }
 
-	@Override
-	public void ctrlLClick(AlignWaysMode alignWaysMode) {
-		// No state change, nothing to do
-	}
+    @Override
+    public void ctrlLClick(AlignWaysMode alignWaysMode) {
+        // No state change, nothing to do
+    }
 
-	@Override
-	public void setHelpText() {
-		Main.map.statusLine
-		.setHelpText(AlignWaysPlugin.getAwAction().getShortcut().getKeyText() +
-				": Align segments; Alt-click: Clear selection");
-	}
+    @Override
+    public void setHelpText() {
+        Main.map.statusLine
+        .setHelpText(AlignWaysPlugin.getAwAction().getShortcut().getKeyText() +
+                ": Align segments; Alt-click: Clear selection");
+    }
 
 }
Index: applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysSelNoneState.java
===================================================================
--- applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysSelNoneState.java	(revision 23165)
+++ applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysSelNoneState.java	(revision 23189)
@@ -12,22 +12,22 @@
 public class AlignWaysSelNoneState extends AlignWaysState {
 
-	@Override
-	public void leftClick(AlignWaysMode alignWaysMode) {
-		// Reference way segment selected successfully
-		alignWaysMode.setCurrentState(alignWaysMode.getAligneeSelected());
+    @Override
+    public void leftClick(AlignWaysMode alignWaysMode) {
+        // Reference way segment selected successfully
+        alignWaysMode.setCurrentState(alignWaysMode.getAligneeSelected());
 
-	}
+    }
 
-	@Override
-	public void ctrlLClick(AlignWaysMode alignWaysMode) {
-		// Reference way segment selected successfully
-		alignWaysMode.setCurrentState(alignWaysMode.getReferenceSelected());
-	}
+    @Override
+    public void ctrlLClick(AlignWaysMode alignWaysMode) {
+        // Reference way segment selected successfully
+        alignWaysMode.setCurrentState(alignWaysMode.getReferenceSelected());
+    }
 
-	@Override
-	public void setHelpText() {
-		Main.map.statusLine
-		.setHelpText("Ctrl-click: select reference way segment; Click: select way segment to be aligned");
-	}
+    @Override
+    public void setHelpText() {
+        Main.map.statusLine
+        .setHelpText("Ctrl-click: select reference way segment; Click: select way segment to be aligned");
+    }
 
 }
Index: applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysSelRefState.java
===================================================================
--- applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysSelRefState.java	(revision 23165)
+++ applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysSelRefState.java	(revision 23189)
@@ -12,19 +12,19 @@
 public class AlignWaysSelRefState extends AlignWaysState {
 
-	@Override
-	public void leftClick(AlignWaysMode alignWaysMode) {
-		alignWaysMode.setCurrentState(alignWaysMode.getBothSelected());
-	}
+    @Override
+    public void leftClick(AlignWaysMode alignWaysMode) {
+        alignWaysMode.setCurrentState(alignWaysMode.getBothSelected());
+    }
 
-	@Override
-	public void ctrlLClick(AlignWaysMode alignWaysMode) {
-		// No state change, nothing to do
-	}
+    @Override
+    public void ctrlLClick(AlignWaysMode alignWaysMode) {
+        // No state change, nothing to do
+    }
 
-	@Override
-	public void setHelpText() {
-		Main.map.statusLine
-				.setHelpText("Click: select way segment to be aligned; Alt-click: Clear selection");
-	}
+    @Override
+    public void setHelpText() {
+        Main.map.statusLine
+                .setHelpText("Click: select way segment to be aligned; Alt-click: Clear selection");
+    }
 
 }
Index: applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysState.java
===================================================================
--- applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysState.java	(revision 23165)
+++ applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysState.java	(revision 23189)
@@ -12,15 +12,15 @@
 public abstract class AlignWaysState {
 
-	public abstract void leftClick(AlignWaysMode alignWaysMode);
+    public abstract void leftClick(AlignWaysMode alignWaysMode);
 
-	public abstract void ctrlLClick(AlignWaysMode alignWaysMode);
+    public abstract void ctrlLClick(AlignWaysMode alignWaysMode);
 
-	public abstract void setHelpText();
+    public abstract void setHelpText();
 
-	public void altLClick(AlignWaysMode alignWaysMode) {
-		alignWaysMode.setCurrentState(alignWaysMode.getNoneSelected());
-		Main.map.statusLine
-		.setHelpText("Ctrl-Click: select reference way segment; Click: select way segment to be aligned");
-	}
+    public void altLClick(AlignWaysMode alignWaysMode) {
+        alignWaysMode.setCurrentState(alignWaysMode.getNoneSelected());
+        Main.map.statusLine
+        .setHelpText("Ctrl-Click: select reference way segment; Click: select way segment to be aligned");
+    }
 
 }
Index: applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysTipsPanel.java
===================================================================
--- applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysTipsPanel.java	(revision 23165)
+++ applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysTipsPanel.java	(revision 23189)
@@ -27,180 +27,180 @@
 public class AlignWaysTipsPanel extends javax.swing.JPanel {
 
-	private static final long serialVersionUID = -8583989497599985140L;
-
-	public AlignWaysTipsPanel() {
-		initComponents();
-	}
-
-	private void initComponents() {
-
-		Title = new JPanel();
-		WelcomeTo = new JLabel();
-		Icon = new JLabel();
-		separator = new JSeparator();
-		Intro = new JPanel();
-		introText = new JLabel();
-		scrollableSteps = new JScrollPane();
-		steps = new JPanel();
-		step01 = new JLabel();
-		step02 = new JLabel();
-		step03 = new JLabel();
-		step04 = new JLabel();
-		lastHint = new JLabel();
-		dontShow = new JCheckBox();
-
-		setAutoscrolls(true);
-
-		WelcomeTo.setText(tr("<html>\n<div style=\"font-family: 'sans-serif'; font-weight: bold; font-style: italic;\">\n<span style=\"font-size: large;\">Welcome to the</span><br>\n<span style=\"font-size: xx-large;\">AlignWay<span style=\"color: rgb(204, 85, 0);\">S</span> Plugin<br>\n</span><span style=\"font-size: medium;\"><br>\n...or it rather should be called <br>\n<span style=\"font-size: large;\">AlignWayS(egments)</span> Plugin...</span>\n</div>\n</html>"));
-
-		WelcomeTo.setVerticalAlignment(SwingConstants.TOP);
-		WelcomeTo.setPreferredSize(new Dimension(400, 128));
-
-		Icon.setIcon(new ImageIcon(getClass().getResource("/images/tipsdialog/alignways128.png"))); // NOI18N
-		GroupLayout TitleLayout = new GroupLayout(Title);
-		Title.setLayout(TitleLayout);
-		TitleLayout.setHorizontalGroup(
-				TitleLayout.createParallelGroup(GroupLayout.LEADING)
-				.add(GroupLayout.TRAILING, TitleLayout.createSequentialGroup()
-						.add(WelcomeTo, GroupLayout.DEFAULT_SIZE, 396, Short.MAX_VALUE)
-						.addPreferredGap(LayoutStyle.RELATED)
-						.add(Icon, GroupLayout.PREFERRED_SIZE, 132, GroupLayout.PREFERRED_SIZE))
-		);
-		TitleLayout.setVerticalGroup(
-				TitleLayout.createParallelGroup(GroupLayout.LEADING)
-				.add(TitleLayout.createSequentialGroup()
-						.add(Icon)
-						.addContainerGap())
-						.add(WelcomeTo, GroupLayout.DEFAULT_SIZE, 146, Short.MAX_VALUE)
-		);
-
-		Intro.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
-
-		introText.setText(tr("<html>\n<p style=\"font-family: sans-serif; font-weight: bold;\">AlignWays will\nhelp you to align two way segments. This can be handy when for instance\nyou sketch the outlines of a building and want its side to be parallel\nwith a street or road.<br>\n<br>\nSome tips may help before you start:\n</p>\n</html>\n\n"));
-		introText.setVerticalAlignment(SwingConstants.TOP);
-
-		scrollableSteps.setBorder(null);
-		scrollableSteps.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
-
-		step01.setIcon(new ImageIcon(getClass().getResource("/images/tipsdialog/hlpRefSel.png"))); // NOI18N
-		step01.setText(tr("<html>\n<div style=\"font-family: sans-serif;\">\n<ul>\n<li><b>Select a reference segment.</b> You can do this by <b><i><span style=\"color:green\">Ctrl-click</span></i></b>ing\non a segment. The other, to be aligned segment will become parallel to\nthis one. </li>\n</ul>\n</div>\n</html>\n\n"));
-		step01.setVerticalAlignment(SwingConstants.TOP);
-
-		step02.setIcon(new ImageIcon(getClass().getResource("/images/tipsdialog/hlpAlgSel.png"))); // NOI18N
-		step02.setText(tr("<html>\n<div style=\"font-family:sans-serif\">\n<ul>\n  <li><b>Select the to be aligned segment.</b> You can do this by simply <b><i><span style=\"color:green\">click</span></i></b>ing on a different segment. \nThe rotation pivot will be highlighted by default in the centre of the segment.\n  </li>\n</ul>\n</div>\n</html>\n\n"));
-		step02.setVerticalAlignment(SwingConstants.TOP);
-
-		step03.setIcon(new ImageIcon(getClass().getResource("/images/tipsdialog/hlpPvtSel.png"))); // NOI18N
-		step03.setText(tr("<html>\n<div style=\"font-family:sans-serif\">\n<ul>\n  <li>Optionally <b>change the rotation pivot point</b>. In order to get parallel with the reference segment, the to be aligned segment will rotate around this point. You can choose the two extremities or the centre of the segment by <b><i><span style=\"color:green\">click</span></i></b>ing nearby. \n  </li>\n</ul>\n</div>\n</html>\n\n"));
-		step03.setVerticalAlignment(SwingConstants.TOP);
-
-		step04.setIcon(new ImageIcon(getClass().getResource("/images/tipsdialog/hlpAlgCmd.png"))); // NOI18N
-		step04.setText(tr("<html>\n<div style=\"font-family:sans-serif\">\n<ul>\n  <li><b>Align the segments.</b> Press <b><i><span style=\"color:green\">"
-				+ AlignWaysPlugin.awAction.getShortcut().getKeyText()
-				+ "</span></i></b>. Alternatively you''ll find the command in the <b>Tools</b>\n menu or may want to place the action on the <b>toolbar</b>.\n  </li>\n</ul>\n</div>\n</html>\n\n"));
-		step04.setVerticalAlignment(SwingConstants.TOP);
-
-		lastHint.setText(tr("<html>\n<div style=\"font-family:sans-serif\">\n<b>Last hint:</b> There is an easy way to start over your selections if you want: <b><i><span style=\"color:green\">Alt-Click</span></i></b> somewhere on the map.\n</div>\n</html>\n\n"));
-		lastHint.setVerticalAlignment(SwingConstants.TOP);
-
-		GroupLayout stepsLayout = new GroupLayout(steps);
-		steps.setLayout(stepsLayout);
-		stepsLayout.setHorizontalGroup(
-				stepsLayout.createParallelGroup(GroupLayout.LEADING)
-				.add(stepsLayout.createSequentialGroup()
-						.addContainerGap()
-						.add(stepsLayout.createParallelGroup(GroupLayout.TRAILING)
-								.add(GroupLayout.LEADING, lastHint, 0, 0, Short.MAX_VALUE)
-								.add(GroupLayout.LEADING, step04, 0, 0, Short.MAX_VALUE)
-								.add(GroupLayout.LEADING, step03, 0, 0, Short.MAX_VALUE)
-								.add(GroupLayout.LEADING, step02, 0, 0, Short.MAX_VALUE)
-								.add(GroupLayout.LEADING, step01, GroupLayout.DEFAULT_SIZE, 496, Short.MAX_VALUE))
-								.add(18, 18, 18))
-		);
-		stepsLayout.setVerticalGroup(
-				stepsLayout.createParallelGroup(GroupLayout.LEADING)
-				.add(stepsLayout.createSequentialGroup()
-						.add(step01, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
-						.addPreferredGap(LayoutStyle.RELATED)
-						.add(step02, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
-						.addPreferredGap(LayoutStyle.RELATED)
-						.add(step03, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
-						.addPreferredGap(LayoutStyle.RELATED)
-						.add(step04, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
-						.addPreferredGap(LayoutStyle.RELATED)
-						.add(lastHint, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
-						.addContainerGap(22, Short.MAX_VALUE))
-		);
-
-		scrollableSteps.setViewportView(steps);
-
-		dontShow.setText(tr("Don''t show this again"));
-
-		GroupLayout IntroLayout = new GroupLayout(Intro);
-		Intro.setLayout(IntroLayout);
-		IntroLayout.setHorizontalGroup(
-				IntroLayout.createParallelGroup(GroupLayout.LEADING)
-				.add(IntroLayout.createSequentialGroup()
-						.addContainerGap()
-						.add(dontShow, GroupLayout.PREFERRED_SIZE, 245, GroupLayout.PREFERRED_SIZE)
-						.addContainerGap(283, Short.MAX_VALUE))
-						.add(scrollableSteps, GroupLayout.DEFAULT_SIZE, 534, Short.MAX_VALUE)
-						.add(introText, GroupLayout.DEFAULT_SIZE, 534, Short.MAX_VALUE)
-		);
-		IntroLayout.setVerticalGroup(
-				IntroLayout.createParallelGroup(GroupLayout.LEADING)
-				.add(GroupLayout.TRAILING, IntroLayout.createSequentialGroup()
-						.add(introText, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
-						.addPreferredGap(LayoutStyle.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-						.add(scrollableSteps, GroupLayout.PREFERRED_SIZE, 209, GroupLayout.PREFERRED_SIZE)
-						.addPreferredGap(LayoutStyle.UNRELATED)
-						.add(dontShow)
-						.addContainerGap())
-		);
-
-		GroupLayout layout = new GroupLayout(this);
-		this.setLayout(layout);
-		layout.setHorizontalGroup(
-				layout.createParallelGroup(GroupLayout.LEADING)
-				.add(GroupLayout.TRAILING, layout.createSequentialGroup()
-						.addContainerGap()
-						.add(layout.createParallelGroup(GroupLayout.TRAILING)
-								.add(GroupLayout.LEADING, separator, GroupLayout.DEFAULT_SIZE, 534, Short.MAX_VALUE)
-								.add(Title, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-								.add(Intro, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
-								.addContainerGap())
-		);
-		layout.setVerticalGroup(
-				layout.createParallelGroup(GroupLayout.LEADING)
-				.add(layout.createSequentialGroup()
-						.addContainerGap()
-						.add(Title, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
-						.addPreferredGap(LayoutStyle.UNRELATED)
-						.add(separator, GroupLayout.PREFERRED_SIZE, 17, GroupLayout.PREFERRED_SIZE)
-						.addPreferredGap(LayoutStyle.RELATED)
-						.add(Intro, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
-						.addContainerGap(45, Short.MAX_VALUE))
-		);
-	}
-
-
-	private JLabel Icon;
-	private JPanel Intro;
-	private JPanel Title;
-	private JLabel WelcomeTo;
-	private JCheckBox dontShow;
-	private JLabel introText;
-	private JLabel lastHint;
-	private JScrollPane scrollableSteps;
-	private JSeparator separator;
-	private JLabel step01;
-	private JLabel step02;
-	private JLabel step03;
-	private JLabel step04;
-	private JPanel steps;
-
-	public boolean isChkBoxSelected() {
-		return dontShow.isSelected();
-	}
+    private static final long serialVersionUID = -8583989497599985140L;
+
+    public AlignWaysTipsPanel() {
+        initComponents();
+    }
+
+    private void initComponents() {
+
+        Title = new JPanel();
+        WelcomeTo = new JLabel();
+        Icon = new JLabel();
+        separator = new JSeparator();
+        Intro = new JPanel();
+        introText = new JLabel();
+        scrollableSteps = new JScrollPane();
+        steps = new JPanel();
+        step01 = new JLabel();
+        step02 = new JLabel();
+        step03 = new JLabel();
+        step04 = new JLabel();
+        lastHint = new JLabel();
+        dontShow = new JCheckBox();
+
+        setAutoscrolls(true);
+
+        WelcomeTo.setText(tr("<html>\n<div style=\"font-family: 'sans-serif'; font-weight: bold; font-style: italic;\">\n<span style=\"font-size: large;\">Welcome to the</span><br>\n<span style=\"font-size: xx-large;\">AlignWay<span style=\"color: rgb(204, 85, 0);\">S</span> Plugin<br>\n</span><span style=\"font-size: medium;\"><br>\n...or it rather should be called <br>\n<span style=\"font-size: large;\">AlignWayS(egments)</span> Plugin...</span>\n</div>\n</html>"));
+
+        WelcomeTo.setVerticalAlignment(SwingConstants.TOP);
+        WelcomeTo.setPreferredSize(new Dimension(400, 128));
+
+        Icon.setIcon(new ImageIcon(getClass().getResource("/images/tipsdialog/alignways128.png"))); // NOI18N
+        GroupLayout TitleLayout = new GroupLayout(Title);
+        Title.setLayout(TitleLayout);
+        TitleLayout.setHorizontalGroup(
+                TitleLayout.createParallelGroup(GroupLayout.LEADING)
+                .add(GroupLayout.TRAILING, TitleLayout.createSequentialGroup()
+                        .add(WelcomeTo, GroupLayout.DEFAULT_SIZE, 396, Short.MAX_VALUE)
+                        .addPreferredGap(LayoutStyle.RELATED)
+                        .add(Icon, GroupLayout.PREFERRED_SIZE, 132, GroupLayout.PREFERRED_SIZE))
+        );
+        TitleLayout.setVerticalGroup(
+                TitleLayout.createParallelGroup(GroupLayout.LEADING)
+                .add(TitleLayout.createSequentialGroup()
+                        .add(Icon)
+                        .addContainerGap())
+                        .add(WelcomeTo, GroupLayout.DEFAULT_SIZE, 146, Short.MAX_VALUE)
+        );
+
+        Intro.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
+
+        introText.setText(tr("<html>\n<p style=\"font-family: sans-serif; font-weight: bold;\">AlignWays will\nhelp you to align two way segments. This can be handy when for instance\nyou sketch the outlines of a building and want its side to be parallel\nwith a street or road.<br>\n<br>\nSome tips may help before you start:\n</p>\n</html>\n\n"));
+        introText.setVerticalAlignment(SwingConstants.TOP);
+
+        scrollableSteps.setBorder(null);
+        scrollableSteps.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
+
+        step01.setIcon(new ImageIcon(getClass().getResource("/images/tipsdialog/hlpRefSel.png"))); // NOI18N
+        step01.setText(tr("<html>\n<div style=\"font-family: sans-serif;\">\n<ul>\n<li><b>Select a reference segment.</b> You can do this by <b><i><span style=\"color:green\">Ctrl-click</span></i></b>ing\non a segment. The other, to be aligned segment will become parallel to\nthis one. </li>\n</ul>\n</div>\n</html>\n\n"));
+        step01.setVerticalAlignment(SwingConstants.TOP);
+
+        step02.setIcon(new ImageIcon(getClass().getResource("/images/tipsdialog/hlpAlgSel.png"))); // NOI18N
+        step02.setText(tr("<html>\n<div style=\"font-family:sans-serif\">\n<ul>\n  <li><b>Select the to be aligned segment.</b> You can do this by simply <b><i><span style=\"color:green\">click</span></i></b>ing on a different segment. \nThe rotation pivot will be highlighted by default in the centre of the segment.\n  </li>\n</ul>\n</div>\n</html>\n\n"));
+        step02.setVerticalAlignment(SwingConstants.TOP);
+
+        step03.setIcon(new ImageIcon(getClass().getResource("/images/tipsdialog/hlpPvtSel.png"))); // NOI18N
+        step03.setText(tr("<html>\n<div style=\"font-family:sans-serif\">\n<ul>\n  <li>Optionally <b>change the rotation pivot point</b>. In order to get parallel with the reference segment, the to be aligned segment will rotate around this point. You can choose the two extremities or the centre of the segment by <b><i><span style=\"color:green\">click</span></i></b>ing nearby. \n  </li>\n</ul>\n</div>\n</html>\n\n"));
+        step03.setVerticalAlignment(SwingConstants.TOP);
+
+        step04.setIcon(new ImageIcon(getClass().getResource("/images/tipsdialog/hlpAlgCmd.png"))); // NOI18N
+        step04.setText(tr("<html>\n<div style=\"font-family:sans-serif\">\n<ul>\n  <li><b>Align the segments.</b> Press <b><i><span style=\"color:green\">"
+                + AlignWaysPlugin.awAction.getShortcut().getKeyText()
+                + "</span></i></b>. Alternatively you''ll find the command in the <b>Tools</b>\n menu or may want to place the action on the <b>toolbar</b>.\n  </li>\n</ul>\n</div>\n</html>\n\n"));
+        step04.setVerticalAlignment(SwingConstants.TOP);
+
+        lastHint.setText(tr("<html>\n<div style=\"font-family:sans-serif\">\n<b>Last hint:</b> There is an easy way to start over your selections if you want: <b><i><span style=\"color:green\">Alt-Click</span></i></b> somewhere on the map.\n</div>\n</html>\n\n"));
+        lastHint.setVerticalAlignment(SwingConstants.TOP);
+
+        GroupLayout stepsLayout = new GroupLayout(steps);
+        steps.setLayout(stepsLayout);
+        stepsLayout.setHorizontalGroup(
+                stepsLayout.createParallelGroup(GroupLayout.LEADING)
+                .add(stepsLayout.createSequentialGroup()
+                        .addContainerGap()
+                        .add(stepsLayout.createParallelGroup(GroupLayout.TRAILING)
+                                .add(GroupLayout.LEADING, lastHint, 0, 0, Short.MAX_VALUE)
+                                .add(GroupLayout.LEADING, step04, 0, 0, Short.MAX_VALUE)
+                                .add(GroupLayout.LEADING, step03, 0, 0, Short.MAX_VALUE)
+                                .add(GroupLayout.LEADING, step02, 0, 0, Short.MAX_VALUE)
+                                .add(GroupLayout.LEADING, step01, GroupLayout.DEFAULT_SIZE, 496, Short.MAX_VALUE))
+                                .add(18, 18, 18))
+        );
+        stepsLayout.setVerticalGroup(
+                stepsLayout.createParallelGroup(GroupLayout.LEADING)
+                .add(stepsLayout.createSequentialGroup()
+                        .add(step01, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
+                        .addPreferredGap(LayoutStyle.RELATED)
+                        .add(step02, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
+                        .addPreferredGap(LayoutStyle.RELATED)
+                        .add(step03, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
+                        .addPreferredGap(LayoutStyle.RELATED)
+                        .add(step04, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
+                        .addPreferredGap(LayoutStyle.RELATED)
+                        .add(lastHint, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
+                        .addContainerGap(22, Short.MAX_VALUE))
+        );
+
+        scrollableSteps.setViewportView(steps);
+
+        dontShow.setText(tr("Don''t show this again"));
+
+        GroupLayout IntroLayout = new GroupLayout(Intro);
+        Intro.setLayout(IntroLayout);
+        IntroLayout.setHorizontalGroup(
+                IntroLayout.createParallelGroup(GroupLayout.LEADING)
+                .add(IntroLayout.createSequentialGroup()
+                        .addContainerGap()
+                        .add(dontShow, GroupLayout.PREFERRED_SIZE, 245, GroupLayout.PREFERRED_SIZE)
+                        .addContainerGap(283, Short.MAX_VALUE))
+                        .add(scrollableSteps, GroupLayout.DEFAULT_SIZE, 534, Short.MAX_VALUE)
+                        .add(introText, GroupLayout.DEFAULT_SIZE, 534, Short.MAX_VALUE)
+        );
+        IntroLayout.setVerticalGroup(
+                IntroLayout.createParallelGroup(GroupLayout.LEADING)
+                .add(GroupLayout.TRAILING, IntroLayout.createSequentialGroup()
+                        .add(introText, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
+                        .addPreferredGap(LayoutStyle.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                        .add(scrollableSteps, GroupLayout.PREFERRED_SIZE, 209, GroupLayout.PREFERRED_SIZE)
+                        .addPreferredGap(LayoutStyle.UNRELATED)
+                        .add(dontShow)
+                        .addContainerGap())
+        );
+
+        GroupLayout layout = new GroupLayout(this);
+        this.setLayout(layout);
+        layout.setHorizontalGroup(
+                layout.createParallelGroup(GroupLayout.LEADING)
+                .add(GroupLayout.TRAILING, layout.createSequentialGroup()
+                        .addContainerGap()
+                        .add(layout.createParallelGroup(GroupLayout.TRAILING)
+                                .add(GroupLayout.LEADING, separator, GroupLayout.DEFAULT_SIZE, 534, Short.MAX_VALUE)
+                                .add(Title, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                                .add(Intro, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+                                .addContainerGap())
+        );
+        layout.setVerticalGroup(
+                layout.createParallelGroup(GroupLayout.LEADING)
+                .add(layout.createSequentialGroup()
+                        .addContainerGap()
+                        .add(Title, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
+                        .addPreferredGap(LayoutStyle.UNRELATED)
+                        .add(separator, GroupLayout.PREFERRED_SIZE, 17, GroupLayout.PREFERRED_SIZE)
+                        .addPreferredGap(LayoutStyle.RELATED)
+                        .add(Intro, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
+                        .addContainerGap(45, Short.MAX_VALUE))
+        );
+    }
+
+
+    private JLabel Icon;
+    private JPanel Intro;
+    private JPanel Title;
+    private JLabel WelcomeTo;
+    private JCheckBox dontShow;
+    private JLabel introText;
+    private JLabel lastHint;
+    private JScrollPane scrollableSteps;
+    private JSeparator separator;
+    private JLabel step01;
+    private JLabel step02;
+    private JLabel step03;
+    private JLabel step04;
+    private JPanel steps;
+
+    public boolean isChkBoxSelected() {
+        return dontShow.isSelected();
+    }
 
 }
