Index: /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/DefaultMapController.java
===================================================================
--- /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/DefaultMapController.java	(revision 14052)
+++ /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/DefaultMapController.java	(revision 14053)
@@ -17,135 +17,134 @@
  * 
  */
-public class DefaultMapController extends JMapController implements MouseListener,
-		MouseMotionListener, MouseWheelListener {
+public class DefaultMapController extends JMapController implements MouseListener, MouseMotionListener,
+        MouseWheelListener {
 
-	private static final int MOUSE_BUTTONS_MASK =
-			MouseEvent.BUTTON3_DOWN_MASK | MouseEvent.BUTTON1_DOWN_MASK
-					| MouseEvent.BUTTON2_DOWN_MASK;
+    private static final int MOUSE_BUTTONS_MASK = MouseEvent.BUTTON3_DOWN_MASK | MouseEvent.BUTTON1_DOWN_MASK
+            | MouseEvent.BUTTON2_DOWN_MASK;
 
-	public DefaultMapController(JMapViewer map) {
-		super(map);
-	}
+    public DefaultMapController(JMapViewer map) {
+        super(map);
+    }
 
-	private Point lastDragPoint;
+    private Point lastDragPoint;
 
-	private boolean isMoving = false;
+    private boolean isMoving = false;
 
-	private boolean movementEnabled = true;
+    private boolean movementEnabled = true;
 
-	private int movementMouseButton = MouseEvent.BUTTON3;
-	private int movementMouseButtonMask = MouseEvent.BUTTON3_DOWN_MASK;
+    private int movementMouseButton = MouseEvent.BUTTON3;
+    private int movementMouseButtonMask = MouseEvent.BUTTON3_DOWN_MASK;
 
-	private boolean wheelZoomEnabled = true;
-	private boolean doubleClickZoomEnabled = true;
+    private boolean wheelZoomEnabled = true;
+    private boolean doubleClickZoomEnabled = true;
 
-	public void mouseDragged(MouseEvent e) {
-		if (!movementEnabled || !isMoving)
-			return;
-		// Is only the selected mouse button pressed?
-		if ((e.getModifiersEx() & MOUSE_BUTTONS_MASK) == movementMouseButtonMask) {
-			Point p = e.getPoint();
-			if (lastDragPoint != null) {
-				int diffx = lastDragPoint.x - p.x;
-				int diffy = lastDragPoint.y - p.y;
-				map.moveMap(diffx, diffy);
-			}
-			lastDragPoint = p;
-		}
-	}
+    public void mouseDragged(MouseEvent e) {
+        if (!movementEnabled || !isMoving)
+            return;
+        // Is only the selected mouse button pressed?
+        if ((e.getModifiersEx() & MOUSE_BUTTONS_MASK) == movementMouseButtonMask) {
+            Point p = e.getPoint();
+            if (lastDragPoint != null) {
+                int diffx = lastDragPoint.x - p.x;
+                int diffy = lastDragPoint.y - p.y;
+                map.moveMap(diffx, diffy);
+            }
+            lastDragPoint = p;
+        }
+    }
 
-	public void mouseClicked(MouseEvent e) {
-		if (doubleClickZoomEnabled && e.getClickCount() == 2 && e.getButton() == MouseEvent.BUTTON1)
-			map.zoomIn(e.getPoint());
-	}
+    public void mouseClicked(MouseEvent e) {
+        if (doubleClickZoomEnabled && e.getClickCount() == 2 && e.getButton() == MouseEvent.BUTTON1)
+            map.zoomIn(e.getPoint());
+    }
 
-	public void mousePressed(MouseEvent e) {
-		if (e.getButton() == movementMouseButton) {
-			lastDragPoint = null;
-			isMoving = true;
-		}
-	}
+    public void mousePressed(MouseEvent e) {
+        if (e.getButton() == movementMouseButton) {
+            lastDragPoint = null;
+            isMoving = true;
+        }
+    }
 
-	public void mouseReleased(MouseEvent e) {
-		if (e.getButton() == movementMouseButton) {
-			lastDragPoint = null;
-			isMoving = false;
-		}
-	}
+    public void mouseReleased(MouseEvent e) {
+        if (e.getButton() == movementMouseButton) {
+            lastDragPoint = null;
+            isMoving = false;
+        }
+    }
 
-	public void mouseWheelMoved(MouseWheelEvent e) {
-		if (wheelZoomEnabled)
-			map.setZoom(map.getZoom() - e.getWheelRotation(), e.getPoint());
-	}
+    public void mouseWheelMoved(MouseWheelEvent e) {
+        if (wheelZoomEnabled)
+            map.setZoom(map.getZoom() - e.getWheelRotation(), e.getPoint());
+    }
 
-	public boolean isMovementEnabled() {
-		return movementEnabled;
-	}
+    public boolean isMovementEnabled() {
+        return movementEnabled;
+    }
 
-	/**
-	 * Enables or disables that the map pane can be moved using the mouse.
-	 * 
-	 * @param movementEnabled
-	 */
-	public void setMovementEnabled(boolean movementEnabled) {
-		this.movementEnabled = movementEnabled;
-	}
+    /**
+     * Enables or disables that the map pane can be moved using the mouse.
+     * 
+     * @param movementEnabled
+     */
+    public void setMovementEnabled(boolean movementEnabled) {
+        this.movementEnabled = movementEnabled;
+    }
 
-	public int getMovementMouseButton() {
-		return movementMouseButton;
-	}
+    public int getMovementMouseButton() {
+        return movementMouseButton;
+    }
 
-	/**
-	 * Sets the mouse button that is used for moving the map. Possible values
-	 * are:
-	 * <ul>
-	 * <li>{@link MouseEvent#BUTTON1} (left mouse button)</li>
-	 * <li>{@link MouseEvent#BUTTON2} (middle mouse button)</li>
-	 * <li>{@link MouseEvent#BUTTON3} (right mouse button)</li>
-	 * </ul>
-	 * 
-	 * @param movementMouseButton
-	 */
-	public void setMovementMouseButton(int movementMouseButton) {
-		this.movementMouseButton = movementMouseButton;
-		switch (movementMouseButton) {
-		case MouseEvent.BUTTON1:
-			movementMouseButtonMask = MouseEvent.BUTTON1_DOWN_MASK;
-			break;
-		case MouseEvent.BUTTON2:
-			movementMouseButtonMask = MouseEvent.BUTTON2_DOWN_MASK;
-			break;
-		case MouseEvent.BUTTON3:
-			movementMouseButtonMask = MouseEvent.BUTTON3_DOWN_MASK;
-			break;
-		default:
-			throw new RuntimeException("Unsupported button");
-		}
-	}
+    /**
+     * Sets the mouse button that is used for moving the map. Possible values
+     * are:
+     * <ul>
+     * <li>{@link MouseEvent#BUTTON1} (left mouse button)</li>
+     * <li>{@link MouseEvent#BUTTON2} (middle mouse button)</li>
+     * <li>{@link MouseEvent#BUTTON3} (right mouse button)</li>
+     * </ul>
+     * 
+     * @param movementMouseButton
+     */
+    public void setMovementMouseButton(int movementMouseButton) {
+        this.movementMouseButton = movementMouseButton;
+        switch (movementMouseButton) {
+        case MouseEvent.BUTTON1:
+            movementMouseButtonMask = MouseEvent.BUTTON1_DOWN_MASK;
+            break;
+        case MouseEvent.BUTTON2:
+            movementMouseButtonMask = MouseEvent.BUTTON2_DOWN_MASK;
+            break;
+        case MouseEvent.BUTTON3:
+            movementMouseButtonMask = MouseEvent.BUTTON3_DOWN_MASK;
+            break;
+        default:
+            throw new RuntimeException("Unsupported button");
+        }
+    }
 
-	public boolean isWheelZoomEnabled() {
-		return wheelZoomEnabled;
-	}
+    public boolean isWheelZoomEnabled() {
+        return wheelZoomEnabled;
+    }
 
-	public void setWheelZoomEnabled(boolean wheelZoomEnabled) {
-		this.wheelZoomEnabled = wheelZoomEnabled;
-	}
+    public void setWheelZoomEnabled(boolean wheelZoomEnabled) {
+        this.wheelZoomEnabled = wheelZoomEnabled;
+    }
 
-	public boolean isDoubleClickZoomEnabled() {
-		return doubleClickZoomEnabled;
-	}
+    public boolean isDoubleClickZoomEnabled() {
+        return doubleClickZoomEnabled;
+    }
 
-	public void setDoubleClickZoomEnabled(boolean doubleClickZoomEnabled) {
-		this.doubleClickZoomEnabled = doubleClickZoomEnabled;
-	}
+    public void setDoubleClickZoomEnabled(boolean doubleClickZoomEnabled) {
+        this.doubleClickZoomEnabled = doubleClickZoomEnabled;
+    }
 
-	public void mouseEntered(MouseEvent e) {
-	}
+    public void mouseEntered(MouseEvent e) {
+    }
 
-	public void mouseExited(MouseEvent e) {
-	}
+    public void mouseExited(MouseEvent e) {
+    }
 
-	public void mouseMoved(MouseEvent e) {
-	}
+    public void mouseMoved(MouseEvent e) {
+    }
 
 }
Index: /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/Demo.java
===================================================================
--- /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/Demo.java	(revision 14052)
+++ /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/Demo.java	(revision 14053)
@@ -28,100 +28,97 @@
 public class Demo extends JFrame {
 
-	private static final long serialVersionUID = 1L;
+    private static final long serialVersionUID = 1L;
 
-	public Demo() {
-		super("JMapViewer Demo");
-		setSize(400, 400);
-		final JMapViewer map = new JMapViewer();
-		// final JMapViewer map = new JMapViewer(new MemoryTileCache(),4);
-		// map.setTileLoader(new OsmFileCacheTileLoader(map));
-		// new DefaultMapController(map);
-		setLayout(new BorderLayout());
-		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
-		setExtendedState(JFrame.MAXIMIZED_BOTH);
-		JPanel panel = new JPanel();
-		JPanel helpPanel = new JPanel();
-		add(panel, BorderLayout.NORTH);
-		add(helpPanel, BorderLayout.SOUTH);
-		JLabel helpLabel =
-				new JLabel("Use right mouse button to move,\n "
-						+ "left double click or mouse wheel to zoom.");
-		helpPanel.add(helpLabel);
-		JButton button = new JButton("setDisplayToFitMapMarkers");
-		button.addActionListener(new ActionListener() {
+    public Demo() {
+        super("JMapViewer Demo");
+        setSize(400, 400);
+        final JMapViewer map = new JMapViewer();
+        // final JMapViewer map = new JMapViewer(new MemoryTileCache(),4);
+        // map.setTileLoader(new OsmFileCacheTileLoader(map));
+        // new DefaultMapController(map);
+        setLayout(new BorderLayout());
+        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        setExtendedState(JFrame.MAXIMIZED_BOTH);
+        JPanel panel = new JPanel();
+        JPanel helpPanel = new JPanel();
+        add(panel, BorderLayout.NORTH);
+        add(helpPanel, BorderLayout.SOUTH);
+        JLabel helpLabel = new JLabel("Use right mouse button to move,\n "
+                + "left double click or mouse wheel to zoom.");
+        helpPanel.add(helpLabel);
+        JButton button = new JButton("setDisplayToFitMapMarkers");
+        button.addActionListener(new ActionListener() {
 
-			public void actionPerformed(ActionEvent e) {
-				map.setDisplayToFitMapMarkers();
-			}
-		});
-		JComboBox tileSourceSelector =
-				new JComboBox(new TileSource[] { new OsmTileSource.Mapnik(),
-						new OsmTileSource.TilesAtHome(), new OsmTileSource.CycleMap() });
-		tileSourceSelector.addItemListener(new ItemListener() {
-			public void itemStateChanged(ItemEvent e) {
-				map.setTileSource((TileSource) e.getItem());
-			}
-		});
-		JComboBox tileLoaderSelector =
-				new JComboBox(new TileLoader[] { new OsmFileCacheTileLoader(map),
-						new OsmTileLoader(map) });
-		tileLoaderSelector.addItemListener(new ItemListener() {
-			public void itemStateChanged(ItemEvent e) {
-				map.setTileLoader((TileLoader) e.getItem());
-			}
-		});
-		map.setTileLoader((TileLoader) tileLoaderSelector.getSelectedItem());
-		panel.add(tileSourceSelector);
-		panel.add(tileLoaderSelector);
-		final JCheckBox showMapMarker = new JCheckBox("Map markers visible");
-		showMapMarker.setSelected(map.getMapMarkersVisible());
-		showMapMarker.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                map.setDisplayToFitMapMarkers();
+            }
+        });
+        JComboBox tileSourceSelector = new JComboBox(new TileSource[] { new OsmTileSource.Mapnik(),
+                new OsmTileSource.TilesAtHome(), new OsmTileSource.CycleMap() });
+        tileSourceSelector.addItemListener(new ItemListener() {
+            public void itemStateChanged(ItemEvent e) {
+                map.setTileSource((TileSource) e.getItem());
+            }
+        });
+        JComboBox tileLoaderSelector = new JComboBox(new TileLoader[] { new OsmFileCacheTileLoader(map),
+                new OsmTileLoader(map) });
+        tileLoaderSelector.addItemListener(new ItemListener() {
+            public void itemStateChanged(ItemEvent e) {
+                map.setTileLoader((TileLoader) e.getItem());
+            }
+        });
+        map.setTileLoader((TileLoader) tileLoaderSelector.getSelectedItem());
+        panel.add(tileSourceSelector);
+        panel.add(tileLoaderSelector);
+        final JCheckBox showMapMarker = new JCheckBox("Map markers visible");
+        showMapMarker.setSelected(map.getMapMarkersVisible());
+        showMapMarker.addActionListener(new ActionListener() {
 
-			public void actionPerformed(ActionEvent e) {
-				map.setMapMarkerVisible(showMapMarker.isSelected());
-			}
-		});
-		panel.add(showMapMarker);
-		final JCheckBox showTileGrid = new JCheckBox("Tile grid visible");
-		showTileGrid.setSelected(map.isTileGridVisible());
-		showTileGrid.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                map.setMapMarkerVisible(showMapMarker.isSelected());
+            }
+        });
+        panel.add(showMapMarker);
+        final JCheckBox showTileGrid = new JCheckBox("Tile grid visible");
+        showTileGrid.setSelected(map.isTileGridVisible());
+        showTileGrid.addActionListener(new ActionListener() {
 
-			public void actionPerformed(ActionEvent e) {
-				map.setTileGridVisible(showTileGrid.isSelected());
-			}
-		});
-		panel.add(showTileGrid);
-		final JCheckBox showZoomControls = new JCheckBox("Show zoom controls");
-		showZoomControls.setSelected(map.getZoomContolsVisible());
-		showZoomControls.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                map.setTileGridVisible(showTileGrid.isSelected());
+            }
+        });
+        panel.add(showTileGrid);
+        final JCheckBox showZoomControls = new JCheckBox("Show zoom controls");
+        showZoomControls.setSelected(map.getZoomContolsVisible());
+        showZoomControls.addActionListener(new ActionListener() {
 
-			public void actionPerformed(ActionEvent e) {
-				map.setZoomContolsVisible(showZoomControls.isSelected());
-			}
-		});
-		panel.add(showZoomControls);
-		panel.add(button);
-		add(map, BorderLayout.CENTER);
+            public void actionPerformed(ActionEvent e) {
+                map.setZoomContolsVisible(showZoomControls.isSelected());
+            }
+        });
+        panel.add(showZoomControls);
+        panel.add(button);
+        add(map, BorderLayout.CENTER);
 
-		//
-		map.addMapMarker(new MapMarkerDot(49.814284999, 8.642065999));
-		map.addMapMarker(new MapMarkerDot(49.91, 8.24));
-		map.addMapMarker(new MapMarkerDot(49.71, 8.64));
-		map.addMapMarker(new MapMarkerDot(48.71, -1));
-		map.addMapMarker(new MapMarkerDot(49.8588, 8.643));
+        //
+        map.addMapMarker(new MapMarkerDot(49.814284999, 8.642065999));
+        map.addMapMarker(new MapMarkerDot(49.91, 8.24));
+        map.addMapMarker(new MapMarkerDot(49.71, 8.64));
+        map.addMapMarker(new MapMarkerDot(48.71, -1));
+        map.addMapMarker(new MapMarkerDot(49.8588, 8.643));
 
-		// map.setDisplayPositionByLatLon(49.807, 8.6, 11);
-		// map.setTileGridVisible(true);
-	}
+        // map.setDisplayPositionByLatLon(49.807, 8.6, 11);
+        // map.setTileGridVisible(true);
+    }
 
-	/**
-	 * @param args
-	 */
-	public static void main(String[] args) {
-		// java.util.Properties systemProperties = System.getProperties();
-		// systemProperties.setProperty("http.proxyHost", "localhost");
-		// systemProperties.setProperty("http.proxyPort", "8008");
-		new Demo().setVisible(true);
-	}
+    /**
+     * @param args
+     */
+    public static void main(String[] args) {
+        // java.util.Properties systemProperties = System.getProperties();
+        // systemProperties.setProperty("http.proxyHost", "localhost");
+        // systemProperties.setProperty("http.proxyPort", "8008");
+        new Demo().setVisible(true);
+    }
 
 }
Index: /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/JMapController.java
===================================================================
--- /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/JMapController.java	(revision 14052)
+++ /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/JMapController.java	(revision 14053)
@@ -21,15 +21,15 @@
 public abstract class JMapController {
 
-	protected JMapViewer map;
+    protected JMapViewer map;
 
-	public JMapController(JMapViewer map) {
-		this.map = map;
-		if (this instanceof MouseListener)
-			map.addMouseListener((MouseListener) this);
-		if (this instanceof MouseWheelListener)
-			map.addMouseWheelListener((MouseWheelListener) this);
-		if (this instanceof MouseMotionListener)
-			map.addMouseMotionListener((MouseMotionListener) this);
-	}
+    public JMapController(JMapViewer map) {
+        this.map = map;
+        if (this instanceof MouseListener)
+            map.addMouseListener((MouseListener) this);
+        if (this instanceof MouseWheelListener)
+            map.addMouseWheelListener((MouseWheelListener) this);
+        if (this instanceof MouseMotionListener)
+            map.addMouseMotionListener((MouseMotionListener) this);
+    }
 
 }
Index: /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/JobDispatcher.java
===================================================================
--- /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/JobDispatcher.java	(revision 14052)
+++ /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/JobDispatcher.java	(revision 14053)
@@ -18,128 +18,128 @@
 public class JobDispatcher {
 
-	private static JobDispatcher instance;
+    private static JobDispatcher instance;
 
-	/**
-	 * @return the singelton instance of the {@link JobDispatcher}
-	 */
-	public static JobDispatcher getInstance() {
-		// for speed reasons we check if the instance has been created
-		// one time before we enter the synchronized section...
-		if (instance != null)
-			return instance;
-		synchronized (JobDispatcher.class) {
-			// ... and for thread safety reasons one time inside the
-			// synchronized section.
-			if (instance != null)
-				return instance;
-			new JobDispatcher();
-			return instance;
-		}
-	}
+    /**
+     * @return the singelton instance of the {@link JobDispatcher}
+     */
+    public static JobDispatcher getInstance() {
+        // for speed reasons we check if the instance has been created
+        // one time before we enter the synchronized section...
+        if (instance != null)
+            return instance;
+        synchronized (JobDispatcher.class) {
+            // ... and for thread safety reasons one time inside the
+            // synchronized section.
+            if (instance != null)
+                return instance;
+            new JobDispatcher();
+            return instance;
+        }
+    }
 
-	private JobDispatcher() {
-		instance = this;
-		addWorkerThread().firstThread = true;
-	}
+    private JobDispatcher() {
+        instance = this;
+        addWorkerThread().firstThread = true;
+    }
 
-	protected BlockingQueue<Runnable> jobQueue = new LinkedBlockingQueue<Runnable>();
+    protected BlockingQueue<Runnable> jobQueue = new LinkedBlockingQueue<Runnable>();
 
-	public static int WORKER_THREAD_MAX_COUNT = 8;
+    public static int WORKER_THREAD_MAX_COUNT = 8;
 
-	/**
-	 * Specifies the time span in seconds that a worker thread waits for new
-	 * jobs to perform. If the time span has elapsed the worker thread
-	 * terminates itself. Only the first worker thread works differently, it
-	 * ignores the timeout and will never terminate itself.
-	 */
-	public static int WORKER_THREAD_TIMEOUT = 30;
+    /**
+     * Specifies the time span in seconds that a worker thread waits for new
+     * jobs to perform. If the time span has elapsed the worker thread
+     * terminates itself. Only the first worker thread works differently, it
+     * ignores the timeout and will never terminate itself.
+     */
+    public static int WORKER_THREAD_TIMEOUT = 30;
 
-	/**
-	 * Total number of worker threads currently idle or active
-	 */
-	protected int workerThreadCount = 0;
+    /**
+     * Total number of worker threads currently idle or active
+     */
+    protected int workerThreadCount = 0;
 
-	/**
-	 * Number of worker threads currently idle
-	 */
-	protected int workerThreadIdleCount = 0;
+    /**
+     * Number of worker threads currently idle
+     */
+    protected int workerThreadIdleCount = 0;
 
-	/**
-	 * Just an id for identifying an worker thread instance
-	 */
-	protected int workerThreadId = 0;
+    /**
+     * Just an id for identifying an worker thread instance
+     */
+    protected int workerThreadId = 0;
 
-	/**
-	 * Removes all jobs from the queue that are currently not being processed.
-	 */
-	public void cancelOutstandingJobs() {
-		jobQueue.clear();
-	}
+    /**
+     * Removes all jobs from the queue that are currently not being processed.
+     */
+    public void cancelOutstandingJobs() {
+        jobQueue.clear();
+    }
 
-	public void addJob(Runnable job) {
-		try {
-			jobQueue.put(job);
-			if (workerThreadIdleCount == 0 && workerThreadCount < WORKER_THREAD_MAX_COUNT)
-				addWorkerThread();
-		} catch (InterruptedException e) {
-		}
-	}
+    public void addJob(Runnable job) {
+        try {
+            jobQueue.put(job);
+            if (workerThreadIdleCount == 0 && workerThreadCount < WORKER_THREAD_MAX_COUNT)
+                addWorkerThread();
+        } catch (InterruptedException e) {
+        }
+    }
 
-	protected JobThread addWorkerThread() {
-		JobThread jobThread = new JobThread(++workerThreadId);
-		synchronized (this) {
-			workerThreadCount++;
-		}
-		return jobThread;
-	}
+    protected JobThread addWorkerThread() {
+        JobThread jobThread = new JobThread(++workerThreadId);
+        synchronized (this) {
+            workerThreadCount++;
+        }
+        return jobThread;
+    }
 
-	protected class JobThread extends Thread {
+    protected class JobThread extends Thread {
 
-		Runnable job;
-		boolean firstThread = false;
+        Runnable job;
+        boolean firstThread = false;
 
-		public JobThread(int threadId) {
-			super("OSMJobThread " + threadId);
-			setDaemon(true);
-			job = null;
-			start();
-		}
+        public JobThread(int threadId) {
+            super("OSMJobThread " + threadId);
+            setDaemon(true);
+            job = null;
+            start();
+        }
 
-		@Override
-		public void run() {
-			executeJobs();
-			synchronized (instance) {
-				workerThreadCount--;
-			}
-		}
+        @Override
+        public void run() {
+            executeJobs();
+            synchronized (instance) {
+                workerThreadCount--;
+            }
+        }
 
-		protected void executeJobs() {
-			while (!isInterrupted()) {
-				try {
-					synchronized (instance) {
-						workerThreadIdleCount++;
-					}
-					if (firstThread)
-						job = jobQueue.take();
-					else
-						job = jobQueue.poll(WORKER_THREAD_TIMEOUT, TimeUnit.SECONDS);
-				} catch (InterruptedException e1) {
-					return;
-				} finally {
-					synchronized (instance) {
-						workerThreadIdleCount--;
-					}
-				}
-				if (job == null)
-					return;
-				try {
-					job.run();
-					job = null;
-				} catch (Exception e) {
-					e.printStackTrace();
-				}
-			}
-		}
-	}
+        protected void executeJobs() {
+            while (!isInterrupted()) {
+                try {
+                    synchronized (instance) {
+                        workerThreadIdleCount++;
+                    }
+                    if (firstThread)
+                        job = jobQueue.take();
+                    else
+                        job = jobQueue.poll(WORKER_THREAD_TIMEOUT, TimeUnit.SECONDS);
+                } catch (InterruptedException e1) {
+                    return;
+                } finally {
+                    synchronized (instance) {
+                        workerThreadIdleCount--;
+                    }
+                }
+                if (job == null)
+                    return;
+                try {
+                    job.run();
+                    job = null;
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
 
 }
Index: /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/MapMarkerDot.java
===================================================================
--- /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/MapMarkerDot.java	(revision 14052)
+++ /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/MapMarkerDot.java	(revision 14053)
@@ -19,40 +19,40 @@
 public class MapMarkerDot implements MapMarker {
 
-	double lat;
-	double lon;
-	Color color;
+    double lat;
+    double lon;
+    Color color;
 
-	public MapMarkerDot(double lat, double lon) {
-		this(Color.YELLOW, lat, lon);
-	}
+    public MapMarkerDot(double lat, double lon) {
+        this(Color.YELLOW, lat, lon);
+    }
 
-	public MapMarkerDot(Color color, double lat, double lon) {
-		super();
-		this.color = color;
-		this.lat = lat;
-		this.lon = lon;
-	}
+    public MapMarkerDot(Color color, double lat, double lon) {
+        super();
+        this.color = color;
+        this.lat = lat;
+        this.lon = lon;
+    }
 
-	public double getLat() {
-		return lat;
-	}
+    public double getLat() {
+        return lat;
+    }
 
-	public double getLon() {
-		return lon;
-	}
+    public double getLon() {
+        return lon;
+    }
 
-	public void paint(Graphics g, Point position) {
-		int size_h = 5;
-		int size = size_h * 2;
-		g.setColor(color);
-		g.fillOval(position.x - size_h, position.y - size_h, size, size);
-		g.setColor(Color.BLACK);
-		g.drawOval(position.x - size_h, position.y - size_h, size, size);
-	}
+    public void paint(Graphics g, Point position) {
+        int size_h = 5;
+        int size = size_h * 2;
+        g.setColor(color);
+        g.fillOval(position.x - size_h, position.y - size_h, size, size);
+        g.setColor(Color.BLACK);
+        g.drawOval(position.x - size_h, position.y - size_h, size, size);
+    }
 
-	@Override
-	public String toString() {
-		return "MapMarker at " + lat + " " + lon;
-	}
+    @Override
+    public String toString() {
+        return "MapMarker at " + lat + " " + lon;
+    }
 
 }
Index: /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/MemoryTileCache.java
===================================================================
--- /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/MemoryTileCache.java	(revision 14052)
+++ /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/MemoryTileCache.java	(revision 14053)
@@ -18,176 +18,207 @@
 public class MemoryTileCache implements TileCache {
 
-	protected static final Logger log = Logger.getLogger(MemoryTileCache.class.getName());
-
-	/**
-	 * Default cache size
-	 */
-	protected int cacheSize = 200;
-
-	protected Hashtable<String, CacheEntry> hashtable;
-
-	/**
-	 * List of all tiles in their last recently used order
-	 */
-	protected CacheLinkedListElement lruTiles;
-
-	public MemoryTileCache() {
-		hashtable = new Hashtable<String, CacheEntry>(cacheSize);
-		lruTiles = new CacheLinkedListElement();
-	}
-
-	public void addTile(Tile tile) {
-		CacheEntry entry = createCacheEntry(tile);
-		hashtable.put(tile.getKey(), entry);
-		lruTiles.addFirst(entry);
-		if (hashtable.size() > cacheSize)
-			removeOldEntries();
-	}
-
-	public Tile getTile(TileSource source, int x, int y, int z) {
-		CacheEntry entry = hashtable.get(Tile.getTileKey(source, x, y, z));
-		if (entry == null)
-			return null;
-		// We don't care about placeholder tiles and hourglass image tiles, the
-		// important tiles are the loaded ones
-		if (entry.tile.isLoaded())
-			lruTiles.moveElementToFirstPos(entry);
-		return entry.tile;
-	}
-
-	/**
-	 * Removes the least recently used tiles
-	 */
-	protected void removeOldEntries() {
-		synchronized (lruTiles) {
-			try {
-				while (lruTiles.getElementCount() > cacheSize) {
-					removeEntry(lruTiles.getLastElement());
-				}
-			} catch (Exception e) {
-				log.warning(e.getMessage());
-			}
-		}
-	}
-
-	protected void removeEntry(CacheEntry entry) {
-		hashtable.remove(entry.tile.getKey());
-		lruTiles.removeEntry(entry);
-	}
-
-	protected CacheEntry createCacheEntry(Tile tile) {
-		return new CacheEntry(tile);
-	}
-
-	public int getTileCount() {
-		return hashtable.size();
-	}
-
-	public int getCacheSize() {
-		return cacheSize;
-	}
-
-	/**
-	 * Changes the maximum number of {@link Tile} objects that this cache holds.
-	 * 
-	 * @param cacheSize
-	 *            new maximum number of tiles
-	 */
-	public void setCacheSize(int cacheSize) {
-		this.cacheSize = cacheSize;
-		if (hashtable.size() > cacheSize)
-			removeOldEntries();
-	}
-
-	/**
-	 * Linked list element holding the {@link Tile} and links to the
-	 * {@link #next} and {@link #prev} item in the list.
-	 */
-	protected static class CacheEntry {
-		Tile tile;
-
-		CacheEntry next;
-		CacheEntry prev;
-
-		protected CacheEntry(Tile tile) {
-			this.tile = tile;
-		}
-
-	}
-
-	/**
-	 * Special implementation of a double linked list for {@link CacheEntry}
-	 * elements. It supports element removal in constant time - in difference to
-	 * the Java implementation which needs O(n).
-	 * 
-	 * @author Jan Peter Stotz
-	 */
-	protected static class CacheLinkedListElement {
-		protected CacheEntry firstElement = null;
-		protected CacheEntry lastElement;
-		protected int elementCount;
-
-		public CacheLinkedListElement() {
-			elementCount = 0;
-			firstElement = null;
-			lastElement = null;
-		}
-
-		/**
-		 * Add the element to the head of the list.
-		 * 
-		 * @param new element to be added
-		 */
-		public synchronized void addFirst(CacheEntry element) {
-			if (elementCount == 0) {
-				firstElement = element;
-				lastElement = element;
-				element.prev = null;
-				element.next = null;
-			} else {
-				element.next = firstElement;
-				firstElement.prev = element;
-				element.prev = null;
-				firstElement = element;
-			}
-			elementCount++;
-		}
-
-		/**
-		 * Removes the specified elemntent form the list.
-		 * 
-		 * @param element
-		 *            to be removed
-		 */
-		public synchronized void removeEntry(CacheEntry element) {
-			if (element.next != null) {
-				element.next.prev = element.prev;
-			}
-			if (element.prev != null) {
-				element.prev.next = element.next;
-			}
-			if (element == firstElement)
-				firstElement = element.next;
-			if (element == lastElement)
-				lastElement = element.prev;
-			element.next = null;
-			element.prev = null;
-			elementCount--;
-		}
-
-		public synchronized void moveElementToFirstPos(CacheEntry entry) {
-			if (firstElement == entry)
-				return;
-			removeEntry(entry);
-			addFirst(entry);
-		}
-
-		public int getElementCount() {
-			return elementCount;
-		}
-
-		public CacheEntry getLastElement() {
-			return lastElement;
-		}
-	}
+    protected static final Logger log = Logger.getLogger(MemoryTileCache.class.getName());
+
+    /**
+     * Default cache size
+     */
+    protected int cacheSize = 200;
+
+    protected Hashtable<String, CacheEntry> hashtable;
+
+    /**
+     * List of all tiles in their last recently used order
+     */
+    protected CacheLinkedListElement lruTiles;
+
+    public MemoryTileCache() {
+        hashtable = new Hashtable<String, CacheEntry>(cacheSize);
+        lruTiles = new CacheLinkedListElement();
+    }
+
+    public void addTile(Tile tile) {
+        CacheEntry entry = createCacheEntry(tile);
+        hashtable.put(tile.getKey(), entry);
+        lruTiles.addFirst(entry);
+        if (hashtable.size() > cacheSize)
+            removeOldEntries();
+    }
+
+    public Tile getTile(TileSource source, int x, int y, int z) {
+        CacheEntry entry = hashtable.get(Tile.getTileKey(source, x, y, z));
+        if (entry == null)
+            return null;
+        // We don't care about placeholder tiles and hourglass image tiles, the
+        // important tiles are the loaded ones
+        if (entry.tile.isLoaded())
+            lruTiles.moveElementToFirstPos(entry);
+        return entry.tile;
+    }
+
+    /**
+     * Removes the least recently used tiles
+     */
+    protected void removeOldEntries() {
+        synchronized (lruTiles) {
+            try {
+                while (lruTiles.getElementCount() > cacheSize) {
+                    removeEntry(lruTiles.getLastElement());
+                }
+            } catch (Exception e) {
+                log.warning(e.getMessage());
+            }
+        }
+    }
+
+    protected void removeEntry(CacheEntry entry) {
+        hashtable.remove(entry.tile.getKey());
+        lruTiles.removeEntry(entry);
+    }
+
+    protected CacheEntry createCacheEntry(Tile tile) {
+        return new CacheEntry(tile);
+    }
+
+    /**
+     * Clears the cache deleting all tiles from memory 
+     */
+    public void clear() {
+        synchronized (lruTiles) {
+            hashtable.clear();
+            lruTiles.clear();
+        }
+    }
+
+    public int getTileCount() {
+        return hashtable.size();
+    }
+
+    public int getCacheSize() {
+        return cacheSize;
+    }
+
+    /**
+     * Changes the maximum number of {@link Tile} objects that this cache holds.
+     * 
+     * @param cacheSize
+     *            new maximum number of tiles
+     */
+    public void setCacheSize(int cacheSize) {
+        this.cacheSize = cacheSize;
+        if (hashtable.size() > cacheSize)
+            removeOldEntries();
+    }
+
+    /**
+     * Linked list element holding the {@link Tile} and links to the
+     * {@link #next} and {@link #prev} item in the list.
+     */
+    protected static class CacheEntry {
+        Tile tile;
+
+        CacheEntry next;
+        CacheEntry prev;
+
+        protected CacheEntry(Tile tile) {
+            this.tile = tile;
+        }
+
+        public Tile getTile() {
+            return tile;
+        }
+
+        public CacheEntry getNext() {
+            return next;
+        }
+
+        public CacheEntry getPrev() {
+            return prev;
+        }
+
+    }
+
+    /**
+     * Special implementation of a double linked list for {@link CacheEntry}
+     * elements. It supports element removal in constant time - in difference to
+     * the Java implementation which needs O(n).
+     * 
+     * @author Jan Peter Stotz
+     */
+    protected static class CacheLinkedListElement {
+        protected CacheEntry firstElement = null;
+        protected CacheEntry lastElement;
+        protected int elementCount;
+
+        public CacheLinkedListElement() {
+            clear();
+        }
+
+        public synchronized void clear() {
+            elementCount = 0;
+            firstElement = null;
+            lastElement = null;
+        }
+
+        /**
+         * Add the element to the head of the list.
+         * 
+         * @param new element to be added
+         */
+        public synchronized void addFirst(CacheEntry element) {
+            if (elementCount == 0) {
+                firstElement = element;
+                lastElement = element;
+                element.prev = null;
+                element.next = null;
+            } else {
+                element.next = firstElement;
+                firstElement.prev = element;
+                element.prev = null;
+                firstElement = element;
+            }
+            elementCount++;
+        }
+
+        /**
+         * Removes the specified elemntent form the list.
+         * 
+         * @param element
+         *            to be removed
+         */
+        public synchronized void removeEntry(CacheEntry element) {
+            if (element.next != null) {
+                element.next.prev = element.prev;
+            }
+            if (element.prev != null) {
+                element.prev.next = element.next;
+            }
+            if (element == firstElement)
+                firstElement = element.next;
+            if (element == lastElement)
+                lastElement = element.prev;
+            element.next = null;
+            element.prev = null;
+            elementCount--;
+        }
+
+        public synchronized void moveElementToFirstPos(CacheEntry entry) {
+            if (firstElement == entry)
+                return;
+            removeEntry(entry);
+            addFirst(entry);
+        }
+
+        public int getElementCount() {
+            return elementCount;
+        }
+
+        public CacheEntry getLastElement() {
+            return lastElement;
+        }
+
+        public CacheEntry getFirstElement() {
+            return firstElement;
+        }
+
+    }
 }
Index: /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/OsmMercator.java
===================================================================
--- /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/OsmMercator.java	(revision 14052)
+++ /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/OsmMercator.java	(revision 14053)
@@ -16,92 +16,90 @@
 public class OsmMercator {
 
-	private static int TILE_SIZE = 256;
-	public static final double MAX_LAT = 85.05112877980659;
-	public static final double MIN_LAT = -85.05112877980659;
+    private static int TILE_SIZE = 256;
+    public static final double MAX_LAT = 85.05112877980659;
+    public static final double MIN_LAT = -85.05112877980659;
 
-	public static double radius(int aZoomlevel) {
-		return (TILE_SIZE * (1 << aZoomlevel)) / (2.0 * Math.PI);
-	}
+    public static double radius(int aZoomlevel) {
+        return (TILE_SIZE * (1 << aZoomlevel)) / (2.0 * Math.PI);
+    }
 
-	/**
-	 * Returns the absolut number of pixels in y or x, defined as: 2^Zoomlevel *
-	 * TILE_WIDTH where TILE_WIDTH is the width of a tile in pixels
-	 * 
-	 * @param aZoomlevel
-	 * @return
-	 */
-	public static int getMaxPixels(int aZoomlevel) {
-		return TILE_SIZE * (1 << aZoomlevel);
-	}
+    /**
+     * Returns the absolut number of pixels in y or x, defined as: 2^Zoomlevel *
+     * TILE_WIDTH where TILE_WIDTH is the width of a tile in pixels
+     * 
+     * @param aZoomlevel
+     * @return
+     */
+    public static int getMaxPixels(int aZoomlevel) {
+        return TILE_SIZE * (1 << aZoomlevel);
+    }
 
-	public static int falseEasting(int aZoomlevel) {
-		return getMaxPixels(aZoomlevel) / 2;
-	}
+    public static int falseEasting(int aZoomlevel) {
+        return getMaxPixels(aZoomlevel) / 2;
+    }
 
-	public static int falseNorthing(int aZoomlevel) {
-		return (-1 * getMaxPixels(aZoomlevel) / 2);
-	}
+    public static int falseNorthing(int aZoomlevel) {
+        return (-1 * getMaxPixels(aZoomlevel) / 2);
+    }
 
-	/**
-	 * Transform longitude to pixelspace
-	 * 
-	 * @param aLongitude
-	 *            [-180..180]
-	 * @return [0..2^Zoomlevel*TILE_SIZE[
-	 */
-	public static int LonToX(double aLongitude, int aZoomlevel) {
-		double longitude = Math.toRadians(aLongitude);
-		int x = (int) ((radius(aZoomlevel) * longitude) + falseEasting(aZoomlevel));
-		x = Math.min(x, getMaxPixels(aZoomlevel) - 1);
-		return x;
-	}
+    /**
+     * Transform longitude to pixelspace
+     * 
+     * @param aLongitude
+     *            [-180..180]
+     * @return [0..2^Zoomlevel*TILE_SIZE[
+     */
+    public static int LonToX(double aLongitude, int aZoomlevel) {
+        double longitude = Math.toRadians(aLongitude);
+        int x = (int) ((radius(aZoomlevel) * longitude) + falseEasting(aZoomlevel));
+        x = Math.min(x, getMaxPixels(aZoomlevel) - 1);
+        return x;
+    }
 
-	/**
-	 * Transforms latitude to pixelspace
-	 * 
-	 * @param aLat
-	 *            [-90...90]
-	 * @return [0..2^Zoomlevel*TILE_SIZE[
-	 */
-	public static int LatToY(double aLat, int aZoomlevel) {
-		if (aLat < MIN_LAT)
-			aLat = MIN_LAT;
-		else if (aLat > MAX_LAT)
-			aLat = MAX_LAT;
-		double latitude = Math.toRadians(aLat);
-		int y =
-				(int) (-1
-						* (radius(aZoomlevel) / 2.0 * Math.log((1.0 + Math.sin(latitude))
-								/ (1.0 - Math.sin(latitude)))) - falseNorthing(aZoomlevel));
-		y = Math.min(y, getMaxPixels(aZoomlevel) - 1);
-		return y;
-	}
+    /**
+     * Transforms latitude to pixelspace
+     * 
+     * @param aLat
+     *            [-90...90]
+     * @return [0..2^Zoomlevel*TILE_SIZE[
+     */
+    public static int LatToY(double aLat, int aZoomlevel) {
+        if (aLat < MIN_LAT)
+            aLat = MIN_LAT;
+        else if (aLat > MAX_LAT)
+            aLat = MAX_LAT;
+        double latitude = Math.toRadians(aLat);
+        int y = (int) (-1
+                * (radius(aZoomlevel) / 2.0 * Math.log((1.0 + Math.sin(latitude)) / (1.0 - Math.sin(latitude)))) - falseNorthing(aZoomlevel));
+        y = Math.min(y, getMaxPixels(aZoomlevel) - 1);
+        return y;
+    }
 
-	/**
-	 * Transforms pixel coordinate X to longitude
-	 * 
-	 * @param aX
-	 *            [0..2^Zoomlevel*TILE_WIDTH[
-	 * @return ]-180..180[
-	 */
-	public static double XToLon(int aX, int aZoomlevel) {
-		aX -= falseEasting(aZoomlevel);
-		double longRadians = aX / radius(aZoomlevel);
-		double longDegrees = Math.toDegrees(longRadians);
-		return longDegrees;
-	}
+    /**
+     * Transforms pixel coordinate X to longitude
+     * 
+     * @param aX
+     *            [0..2^Zoomlevel*TILE_WIDTH[
+     * @return ]-180..180[
+     */
+    public static double XToLon(int aX, int aZoomlevel) {
+        aX -= falseEasting(aZoomlevel);
+        double longRadians = aX / radius(aZoomlevel);
+        double longDegrees = Math.toDegrees(longRadians);
+        return longDegrees;
+    }
 
-	/**
-	 * Transforms pixel coordinate Y to latitude
-	 * 
-	 * @param aY
-	 *            [0..2^Zoomlevel*TILE_WIDTH[
-	 * @return [MIN_LAT..MAX_LAT] is about [-85..85]
-	 */
-	public static double YToLat(int aY, int aZoomlevel) {
-		aY += falseNorthing(aZoomlevel);
-		double latitude = (Math.PI / 2) - (2 * Math.atan(Math.exp(-1.0 * aY / radius(aZoomlevel))));
-		return -1 * Math.toDegrees(latitude);
-	}
+    /**
+     * Transforms pixel coordinate Y to latitude
+     * 
+     * @param aY
+     *            [0..2^Zoomlevel*TILE_WIDTH[
+     * @return [MIN_LAT..MAX_LAT] is about [-85..85]
+     */
+    public static double YToLat(int aY, int aZoomlevel) {
+        aY += falseNorthing(aZoomlevel);
+        double latitude = (Math.PI / 2) - (2 * Math.atan(Math.exp(-1.0 * aY / radius(aZoomlevel))));
+        return -1 * Math.toDegrees(latitude);
+    }
 
 }
Index: /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/OsmTileSource.java
===================================================================
--- /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/OsmTileSource.java	(revision 14052)
+++ /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/OsmTileSource.java	(revision 14053)
@@ -5,54 +5,54 @@
 public class OsmTileSource {
 
-	public static final String MAP_MAPNIK = "http://tile.openstreetmap.org";
-	public static final String MAP_OSMA = "http://tah.openstreetmap.org/Tiles/tile";
+    public static final String MAP_MAPNIK = "http://tile.openstreetmap.org";
+    public static final String MAP_OSMA = "http://tah.openstreetmap.org/Tiles/tile";
 
-	protected static abstract class AbstractOsmTileSource implements TileSource {
+    protected static abstract class AbstractOsmTileSource implements TileSource {
 
-		public int getMaxZoom() {
-			return 18;
-		}
+        public int getMaxZoom() {
+            return 18;
+        }
 
-		public int getMinZoom() {
+        public int getMinZoom() {
             return 0;
         }
 
-		public String getTileUrl(int zoom, int tilex, int tiley) {
-			return "/" + zoom + "/" + tilex + "/" + tiley + ".png";
-		}
+        public String getTileUrl(int zoom, int tilex, int tiley) {
+            return "/" + zoom + "/" + tilex + "/" + tiley + ".png";
+        }
 
-		@Override
-		public String toString() {
-			return getName();
-		}
+        @Override
+        public String toString() {
+            return getName();
+        }
 
-		public String getTileType() {
-			return "png";
-		}
-		
-	}
+        public String getTileType() {
+            return "png";
+        }
 
-	public static class Mapnik extends AbstractOsmTileSource {
+    }
 
-		public static String NAME = "Mapnik";
-		
-		public String getName() {
-			return NAME;
-		}
+    public static class Mapnik extends AbstractOsmTileSource {
 
-		@Override
-		public String getTileUrl(int zoom, int tilex, int tiley) {
-			return MAP_MAPNIK + super.getTileUrl(zoom, tilex, tiley);
-		}
+        public static String NAME = "Mapnik";
 
-		public TileUpdate getTileUpdate() {
-			return TileUpdate.IfNoneMatch;
-		}
+        public String getName() {
+            return NAME;
+        }
 
-	}
+        @Override
+        public String getTileUrl(int zoom, int tilex, int tiley) {
+            return MAP_MAPNIK + super.getTileUrl(zoom, tilex, tiley);
+        }
 
-	public static class CycleMap extends AbstractOsmTileSource {
-		
-	    private static final String PATTERN = "http://%s.andy.sandbox.cloudmade.com/tiles/cycle/%d/%d/%d.png";
+        public TileUpdate getTileUpdate() {
+            return TileUpdate.IfNoneMatch;
+        }
+
+    }
+
+    public static class CycleMap extends AbstractOsmTileSource {
+
+        private static final String PATTERN = "http://%s.andy.sandbox.cloudmade.com/tiles/cycle/%d/%d/%d.png";
         public static String NAME = "OSM Cycle Map";
 
@@ -68,34 +68,34 @@
         }
 
-		public String getName() {
-			return NAME;
-		}
+        public String getName() {
+            return NAME;
+        }
 
-		public TileUpdate getTileUpdate() {
-			return TileUpdate.LastModified;
-		}
+        public TileUpdate getTileUpdate() {
+            return TileUpdate.LastModified;
+        }
 
-	}
+    }
 
-	public static class TilesAtHome extends AbstractOsmTileSource {
+    public static class TilesAtHome extends AbstractOsmTileSource {
 
-		public static String NAME = "TilesAtHome";
+        public static String NAME = "TilesAtHome";
 
-		public int getMaxZoom() {
-			return 17;
-		}
+        public int getMaxZoom() {
+            return 17;
+        }
 
-		public String getName() {
-			return NAME;
-		}
+        public String getName() {
+            return NAME;
+        }
 
-		@Override
-		public String getTileUrl(int zoom, int tilex, int tiley) {
-			return MAP_OSMA + super.getTileUrl(zoom, tilex, tiley);
-		}
+        @Override
+        public String getTileUrl(int zoom, int tilex, int tiley) {
+            return MAP_OSMA + super.getTileUrl(zoom, tilex, tiley);
+        }
 
-		public TileUpdate getTileUpdate() {
-			return TileUpdate.IfModifiedSince;
-		}
-	}
+        public TileUpdate getTileUpdate() {
+            return TileUpdate.IfModifiedSince;
+        }
+    }
 }
Index: /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/interfaces/MapMarker.java
===================================================================
--- /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/interfaces/MapMarker.java	(revision 14052)
+++ /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/interfaces/MapMarker.java	(revision 14053)
@@ -17,21 +17,21 @@
 public interface MapMarker {
 
-	/**
-	 * @return Latitude of the map marker position
-	 */
-	public double getLat();
+    /**
+     * @return Latitude of the map marker position
+     */
+    public double getLat();
 
-	/**
-	 * @return Longitude of the map marker position
-	 */
-	public double getLon();
+    /**
+     * @return Longitude of the map marker position
+     */
+    public double getLon();
 
-	/**
-	 * Paints the map marker on the map. The <code>position</code> specifies the
-	 * coordinates within <code>g</code>
-	 * 
-	 * @param g
-	 * @param position
-	 */
-	public void paint(Graphics g, Point position);
+    /**
+     * Paints the map marker on the map. The <code>position</code> specifies the
+     * coordinates within <code>g</code>
+     * 
+     * @param g
+     * @param position
+     */
+    public void paint(Graphics g, Point position);
 }
Index: /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/interfaces/TileCache.java
===================================================================
--- /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/interfaces/TileCache.java	(revision 14052)
+++ /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/interfaces/TileCache.java	(revision 14053)
@@ -14,32 +14,32 @@
 public interface TileCache {
 
-	/**
-	 * Retrieves a tile from the cache if present, otherwise <code>null</code>
-	 * will be returned.
-	 * 
-	 * @param source
-	 * @param x
-	 *            tile number on the x axis of the tile to be retrieved
-	 * @param y
-	 *            tile number on the y axis of the tile to be retrieved
-	 * @param z
-	 *            zoom level of the tile to be retrieved
-	 * @return the requested tile or <code>null</code> if the tile is not
-	 *         present in the cache
-	 */
-	public Tile getTile(TileSource source, int x, int y, int z);
+    /**
+     * Retrieves a tile from the cache if present, otherwise <code>null</code>
+     * will be returned.
+     * 
+     * @param source
+     * @param x
+     *            tile number on the x axis of the tile to be retrieved
+     * @param y
+     *            tile number on the y axis of the tile to be retrieved
+     * @param z
+     *            zoom level of the tile to be retrieved
+     * @return the requested tile or <code>null</code> if the tile is not
+     *         present in the cache
+     */
+    public Tile getTile(TileSource source, int x, int y, int z);
 
-	/**
-	 * Adds a tile to the cache. How long after adding a tile can be retrieved
-	 * via {@link #getTile(int, int, int)} is unspecified and depends on the
-	 * implementation.
-	 * 
-	 * @param tile
-	 */
-	public void addTile(Tile tile);
+    /**
+     * Adds a tile to the cache. How long after adding a tile can be retrieved
+     * via {@link #getTile(int, int, int)} is unspecified and depends on the
+     * implementation.
+     * 
+     * @param tile
+     */
+    public void addTile(Tile tile);
 
-	/**
-	 * @return the number of tiles hold by the cache
-	 */
-	public int getTileCount();
+    /**
+     * @return the number of tiles hold by the cache
+     */
+    public int getTileCount();
 }
Index: /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/interfaces/TileLoader.java
===================================================================
--- /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/interfaces/TileLoader.java	(revision 14052)
+++ /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/interfaces/TileLoader.java	(revision 14053)
@@ -11,16 +11,16 @@
 public interface TileLoader {
 
-	/**
-	 * A typical {@link #createTileLoaderJob(int, int, int)} implementation
-	 * should create and return a new {@link Job} instance that performs the
-	 * load action.
-	 * 
-	 * @param tileLayerSource
-	 * @param tilex
-	 * @param tiley
-	 * @param zoom
-	 * @returns {@link Runnable} implementation that performs the desired load
-	 *          action.
-	 */
-	public Runnable createTileLoaderJob(TileSource tileLayerSource, int tilex, int tiley, int zoom);
+    /**
+     * A typical {@link #createTileLoaderJob(int, int, int)} implementation
+     * should create and return a new {@link Job} instance that performs the
+     * load action.
+     * 
+     * @param tileLayerSource
+     * @param tilex
+     * @param tiley
+     * @param zoom
+     * @returns {@link Runnable} implementation that performs the desired load
+     *          action.
+     */
+    public Runnable createTileLoaderJob(TileSource tileLayerSource, int tilex, int tiley, int zoom);
 }
Index: /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/interfaces/TileLoaderListener.java
===================================================================
--- /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/interfaces/TileLoaderListener.java	(revision 14052)
+++ /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/interfaces/TileLoaderListener.java	(revision 14053)
@@ -7,12 +7,12 @@
 public interface TileLoaderListener {
 
-	/**
-	 * Will be called if a new {@link Tile} has been loaded successfully. 
-	 * Loaded can mean downloaded or loaded from file cache. 
-	 * 
-	 * @param tile
-	 */
-	public void tileLoadingFinished(Tile tile, boolean success);
+    /**
+     * Will be called if a new {@link Tile} has been loaded successfully. 
+     * Loaded can mean downloaded or loaded from file cache. 
+     * 
+     * @param tile
+     */
+    public void tileLoadingFinished(Tile tile, boolean success);
 
-	public TileCache getTileCache();
+    public TileCache getTileCache();
 }
