Index: /src/org/openstreetmap/josm/Main.java
===================================================================
--- /src/org/openstreetmap/josm/Main.java	(revision 265)
+++ /src/org/openstreetmap/josm/Main.java	(revision 266)
@@ -11,8 +11,8 @@
 import java.net.URI;
 import java.net.URISyntaxException;
-import java.util.Arrays;
 import java.net.URL;
 import java.net.URLClassLoader;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.LinkedList;
@@ -42,4 +42,5 @@
 import org.openstreetmap.josm.data.projection.Epsg4326;
 import org.openstreetmap.josm.data.projection.Projection;
+import org.openstreetmap.josm.gui.GettingStarted;
 import org.openstreetmap.josm.gui.MainMenu;
 import org.openstreetmap.josm.gui.MapFrame;
@@ -125,5 +126,4 @@
 		if (map != null) {
 			map.fillPanel(panel);
-			panel.setVisible(true);
 			map.mapView.addLayerChangeListener(new LayerChangeListener(){
 				public void activeLayerChange(final Layer oldLayer, final Layer newLayer) {
@@ -143,6 +143,9 @@
 			if (map.mapView.editLayer != null)
 				map.mapView.editLayer.listenerCommands.add(redoUndoListener);
-		} else
+		} else {
 			old.destroy();
+			panel.add(new GettingStarted(), BorderLayout.CENTER);
+		}
+		panel.setVisible(true);
 		redoUndoListener.commandChanged(0,0);
 
@@ -183,4 +186,5 @@
 		main = this;
 		contentPane.add(panel, BorderLayout.CENTER);
+		panel.add(new GettingStarted(), BorderLayout.CENTER);
 		menu = new MainMenu();
 
Index: /src/org/openstreetmap/josm/actions/AboutAction.java
===================================================================
--- /src/org/openstreetmap/josm/actions/AboutAction.java	(revision 265)
+++ /src/org/openstreetmap/josm/actions/AboutAction.java	(revision 266)
@@ -10,4 +10,5 @@
 import java.io.BufferedReader;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.net.URL;
@@ -15,4 +16,5 @@
 import java.util.regex.Pattern;
 
+import javax.swing.BorderFactory;
 import javax.swing.JLabel;
 import javax.swing.JOptionPane;
@@ -21,4 +23,5 @@
 import javax.swing.JTabbedPane;
 import javax.swing.JTextArea;
+import javax.swing.SwingUtilities;
 
 import org.openstreetmap.josm.Main;
@@ -39,9 +42,9 @@
 	public static final String version;
 
-	private static JTextArea revision;
+	private final static JTextArea revision;
 	private static String time;
 
 	static {
-		JTextArea revision = loadFile(Main.class.getResource("/REVISION"));
+		revision = loadFile(Main.class.getResource("/REVISION"));
 
 		Pattern versionPattern = Pattern.compile(".*?Revision: ([0-9]*).*", Pattern.CASE_INSENSITIVE|Pattern.DOTALL);
@@ -65,19 +68,40 @@
 
 		JPanel info = new JPanel(new GridBagLayout());
-		info.add(new JLabel(tr("Java OpenStreetMap Editor Version {0}",version)), GBC.eop());
-		info.add(new JLabel(tr("last change at {0}",time)), GBC.eop());
-		info.add(new JLabel(tr("Java Version {0}",System.getProperty("java.version"))), GBC.eop());
+		info.add(new JLabel(tr("Java OpenStreetMap Editor Version {0}",version)), GBC.eol());
+		info.add(new JLabel(tr("last change at {0}",time)), GBC.eol());
+		info.add(new JLabel(tr("Java Version {0}",System.getProperty("java.version"))), GBC.eol());
+		info.add(new JLabel(tr("Latest Version on JOSM homepage is")), GBC.std().insets(0,0,5,0));
+		final JLabel checkVersionLabel = new JLabel("<html><em>"+tr("checking...")+"</em></html>");
+		info.add(checkVersionLabel, GBC.eol());
+		new Thread(){
+			@Override public void run() {
+				final String version = checkLatestVersion();
+				try {
+					if (version == null)
+						throw new NullPointerException();
+	                SwingUtilities.invokeAndWait(new Runnable(){
+	                	public void run() {
+	                		checkVersionLabel.setText(version);
+	                    }
+	                });
+                } catch (Exception e) {
+	                checkVersionLabel.setText("failed.");
+                }
+            }
+		}.start();
+		
+		info.add(GBC.glue(0,10), GBC.eol());
+		
 		info.add(new JLabel(tr("Homepage")), GBC.std().insets(0,0,10,0));
-		info.add(new UrlLabel("http://josm.eigenheimstrasse.de"), GBC.eol());
+		info.add(new UrlLabel("http://josm.openstreetmap.de"), GBC.eol());
 		info.add(new JLabel(tr("Bug Reports")), GBC.std().insets(0,0,10,0));
-		info.add(new UrlLabel("http://josm.eigenheimstrasse.de/newticket"), GBC.eol());
+		info.add(new UrlLabel("http://josm.openstreetmap.de/newticket"), GBC.eol());
 		info.add(new JLabel(tr("News about JOSM")), GBC.std().insets(0,0,10,0));
 		info.add(new UrlLabel("http://www.opengeodata.org/?cat=17"), GBC.eol());
 
-
 		about.addTab(tr("Info"), info);
-		about.addTab(tr("Readme"), new JScrollPane(readme));
-		about.addTab(tr("Revision"), new JScrollPane(revision));
-		about.addTab(tr("Contribution"), new JScrollPane(contribution));
+		about.addTab(tr("Readme"), createScrollPane(readme));
+		about.addTab(tr("Revision"), createScrollPane(revision));
+		about.addTab(tr("Contribution"), createScrollPane(contribution));
 
 		about.setPreferredSize(new Dimension(500,300));
@@ -86,4 +110,31 @@
 				JOptionPane.INFORMATION_MESSAGE, ImageProvider.get("logo"));
 	}
+
+	private JScrollPane createScrollPane(JTextArea area) {
+		area.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
+		area.setOpaque(false);
+	    JScrollPane sp = new JScrollPane(area);
+		sp.setBorder(null);
+		sp.setOpaque(false);
+	    return sp;
+    }
+
+	/**
+	 * Retrieve the latest JOSM version from the JOSM homepage.
+	 * @return An string with the latest version or "UNKNOWN" in case
+	 * 		of problems (e.g. no internet connection).
+	 */
+	public static String checkLatestVersion() {
+        String latest;
+        try {
+        	InputStream s = new URL("http://josm.openstreetmap.de/current").openStream();
+        	latest = new BufferedReader(new InputStreamReader(s)).readLine();
+        	s.close();
+        } catch (IOException x) {
+        	x.printStackTrace();
+        	return "UNKNOWN";
+        }
+        return latest;
+    }
 
 	/**
Index: /src/org/openstreetmap/josm/gui/GettingStarted.java
===================================================================
--- /src/org/openstreetmap/josm/gui/GettingStarted.java	(revision 266)
+++ /src/org/openstreetmap/josm/gui/GettingStarted.java	(revision 266)
@@ -0,0 +1,92 @@
+package org.openstreetmap.josm.gui;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.GridBagLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JButton;
+import javax.swing.JEditorPane;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.event.HyperlinkEvent;
+import javax.swing.event.HyperlinkListener;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.OpenBrowser;
+
+public class GettingStarted extends JPanel implements ActionListener {
+
+	private JPanel panel;
+
+	public class LinkLabel extends JEditorPane implements HyperlinkListener {
+		private String action;
+		public LinkLabel(String text, String action) {
+			this.action = action;
+			String normalized = text.replaceAll("\\[([^\\]]*)\\]", "$1");
+			String link = "<html><h2>"+text.replaceAll("\\[([^\\]]*)\\]", "<a href='"+action+"'>$1</a>")+"</h2></html>";
+			setContentType("text/html");
+			setText(link);
+			setToolTipText(normalized);
+			setEditable(false);
+			setOpaque(false);
+			addHyperlinkListener(this);
+        }
+		public void hyperlinkUpdate(HyperlinkEvent e) {
+			if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED)
+				actionPerformed(new ActionEvent(e.getSource(), 0, action));
+        }
+    }
+
+	public GettingStarted() {
+		super(new GridBagLayout());
+		
+		panel = new JPanel(new GridBagLayout());
+
+		addGettingStarted();
+		addGettingHelp();
+		
+		panel.add(GBC.glue(0,140), GBC.eol());
+		add(panel);
+    }
+
+	public void addGettingStarted() {
+		addCategory(tr("Getting Started"));
+		addLine("download",tr("[Download] some data from the OSM server"));
+	}
+	
+	public void addGettingHelp() {
+	    addCategory(tr("Getting Help"));
+		addLine("help",tr("Open the [online help] (english only)"));
+		addLine("tutorial",tr("Watch some [tutorial videos]"));
+		addLine("mailinglist",tr("Join the newbie [mailing list]"));
+    }
+
+	public void addCategory(String category) {
+	    panel.add(new JLabel("<html><h1>"+category+"</h1></html>"), GBC.eop().fill(GBC.HORIZONTAL).insets(0,20,0,0));
+    }
+
+	public void addLine(String action, String text) {
+	    JButton button = new JButton(ImageProvider.get("getting_started"));
+        button.setBorder(null);
+        button.addActionListener(this);
+        button.setActionCommand(action);
+		panel.add(button, GBC.std().insets(40,0,15,0));
+		panel.add(new LinkLabel(text,action),GBC.eol());
+    }
+
+
+	public void actionPerformed(ActionEvent e) {
+		if (e.getActionCommand().equals("download"))
+			Main.main.menu.download.actionPerformed(e);
+		else if (e.getActionCommand().equals("help"))
+			Main.main.menu.help.actionPerformed(e);
+		else if (e.getActionCommand().equals("tutorial"))
+			OpenBrowser.displayUrl("http://josm.openstreetmap.de/wiki/TutorialVideos");
+		else if (e.getActionCommand().equals("mailinglist"))
+			OpenBrowser.displayUrl("mailto:newbies-subscribe@openstreetmap.org?subject=subscribe");
+    }
+}
Index: /src/org/openstreetmap/josm/gui/preferences/DrawingPreference.java
===================================================================
--- /src/org/openstreetmap/josm/gui/preferences/DrawingPreference.java	(revision 265)
+++ /src/org/openstreetmap/josm/gui/preferences/DrawingPreference.java	(revision 266)
@@ -56,5 +56,5 @@
 		// downloaded area
 		sourceBounds.setToolTipText(tr("Draw the boundaries of data loaded from the server."));
-		sourceBounds.setSelected(Main.pref.getBoolean("draw.data.downloaded_area"));
+		sourceBounds.setSelected(Main.pref.getBoolean("draw.data.downloaded_area", true));
 		gui.display.add(sourceBounds, GBC.eop().insets(20,0,0,0));
 	}
Index: /test/org/openstreetmap/josm/gui/annotation/AnnotationPresetTest.java
===================================================================
--- /test/org/openstreetmap/josm/gui/annotation/AnnotationPresetTest.java	(revision 265)
+++ /test/org/openstreetmap/josm/gui/annotation/AnnotationPresetTest.java	(revision 266)
@@ -16,5 +16,4 @@
 import org.openstreetmap.josm.gui.annotation.AnnotationPreset.Label;
 import org.openstreetmap.josm.gui.annotation.AnnotationPreset.Text;
-import org.openstreetmap.josm.tools.ImageProvider;
 
 public class AnnotationPresetTest extends TestCase {
