Index: trunk/src/org/openstreetmap/josm/Main.java
===================================================================
--- trunk/src/org/openstreetmap/josm/Main.java	(revision 1137)
+++ trunk/src/org/openstreetmap/josm/Main.java	(revision 1138)
@@ -249,7 +249,15 @@
                 if (info.early != early)
                     continue;
-                if (info.mainversion != null && info.mainversion.compareTo(AboutAction.version) > 0) {
-                    JOptionPane.showMessageDialog(Main.parent, tr("Plugin requires JOSM update: {0}.", pluginName));
-                    continue;
+                if (info.mainversion != null) {
+                    int requiredJOSMVersion = 0;
+                    try {
+                        requiredJOSMVersion = Integer.parseInt(info.mainversion);
+                    } catch(NumberFormatException e) {
+                        e.printStackTrace();
+                    }
+                    if (requiredJOSMVersion > AboutAction.getVersionNumber()) {
+                        JOptionPane.showMessageDialog(Main.parent, tr("Plugin requires JOSM update: {0}.", pluginName));
+                        continue;
+                    }
                 }
                 if (!p.containsKey(info.stage))
Index: trunk/src/org/openstreetmap/josm/actions/AboutAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/AboutAction.java	(revision 1137)
+++ trunk/src/org/openstreetmap/josm/actions/AboutAction.java	(revision 1138)
@@ -13,4 +13,5 @@
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.Map.Entry;
@@ -44,17 +45,28 @@
  * @author imi
  */
+/**
+ * @author Stephan
+ *
+ */
 public class AboutAction extends JosmAction {
 
-	public static final String version;
+	private static final String version;
 
 	private final static JTextArea revision;
 	private static String time;
 
-	static {
-		URL u = Main.class.getResource("/REVISION");
-		if(u == null) u = Main.class.getResource("/META-INF/MANIFEST.MF");
+    static {
+        URL u = Main.class.getResource("/REVISION");
+        if(u == null) {
+            try {
+                u = new URL("jar:" + Main.class.getProtectionDomain().getCodeSource().getLocation().toString() 
+                        + "!/META-INF/MANIFEST.MF");
+            } catch (MalformedURLException e) {
+                e.printStackTrace();
+            }
+        }
 		revision = loadFile(u);
 
-		Pattern versionPattern = Pattern.compile(".*?(?:Revision|Main-Version): ([0-9]*).*", Pattern.CASE_INSENSITIVE|Pattern.DOTALL);
+		Pattern versionPattern = Pattern.compile(".*?(?:Revision|Main-Version): ([0-9]*(?: SVN)?).*", Pattern.CASE_INSENSITIVE|Pattern.DOTALL);
 		Matcher match = versionPattern.matcher(revision.getText());
 		version = match.matches() ? match.group(1) : tr("UNKNOWN");
@@ -65,8 +77,35 @@
 	}
 
-	static public String getVersion() {
+	/**
+	 * Return string describing version.
+	 * Note that the strinc contains the version number plus an optional suffix of " SVN" to indicate an unofficial development build.
+	 * @return version string
+	 */
+	static public String getVersionString() {
 		return version;
 	}
 
+    /**
+     * Return the number part of the version string.
+     * @return integer part of version number or Integer.MAX_VALUE if not available
+     */
+    public static int getVersionNumber() {
+        int myVersion=Integer.MAX_VALUE;
+        try {
+            myVersion = Integer.parseInt(version.split(" ")[0]);
+        } catch (NumberFormatException e) {
+            e.printStackTrace();
+        }
+        return myVersion;
+    }
+	
+    /**
+     * check whether the version is a development build out of SVN.
+     * @return true if it is a SVN unofficial build
+     */
+    public static boolean isDevelopmentVersion() {
+        return version.endsWith(" SVN");
+    }
+	
 	public AboutAction() {
 		super(tr("About"), "about", tr("Display the about screen."), Shortcut.registerShortcut("system:about", tr("About"), KeyEvent.VK_F1, Shortcut.GROUP_DIRECT, Shortcut.SHIFT_DEFAULT), true);
Index: trunk/src/org/openstreetmap/josm/actions/AddNodeAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/AddNodeAction.java	(revision 1137)
+++ trunk/src/org/openstreetmap/josm/actions/AddNodeAction.java	(revision 1138)
@@ -48,5 +48,6 @@
     public AddNodeAction() {
     	super(tr("Add Node"), "addnode", tr("Add a node by entering latitude and longitude."),
-			Shortcut.registerShortcut("addnode", tr("Edit: {0}", tr("Add Node")), KeyEvent.VK_D, Shortcut.GROUP_MENU), true);
+		Shortcut.registerShortcut("addnode", tr("Edit: {0}", tr("Add Node")), KeyEvent.VK_D, Shortcut.GROUP_EDIT,
+		Shortcut.SHIFT_DEFAULT), true);
     }
 
Index: trunk/src/org/openstreetmap/josm/actions/ToggleGPXLinesAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ToggleGPXLinesAction.java	(revision 1137)
+++ trunk/src/org/openstreetmap/josm/actions/ToggleGPXLinesAction.java	(revision 1138)
@@ -14,5 +14,5 @@
 	public ToggleGPXLinesAction() {
 		super(tr("Toggle GPX Lines"), "gps-lines", tr("Toggles the global setting ''{0}''.", tr("Draw lines between raw gps points.")),
-		Shortcut.registerShortcut("view:gpxlines", tr("View: {0}", tr("Toggle GPX Lines")), KeyEvent.VK_X, Shortcut.GROUP_MENU), true);
+		Shortcut.registerShortcut("view:gpxlines", tr("View: {0}", tr("Toggle GPX Lines")), KeyEvent.VK_X, Shortcut.GROUP_MENU, Shortcut.SHIFT_DEFAULT), true);
 	}
 
Index: trunk/src/org/openstreetmap/josm/gui/GettingStarted.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/GettingStarted.java	(revision 1137)
+++ trunk/src/org/openstreetmap/josm/gui/GettingStarted.java	(revision 1138)
@@ -57,10 +57,5 @@
             }
 
-            int myVersion;
-            try {
-                myVersion = Integer.parseInt(AboutAction.getVersion());
-            } catch (NumberFormatException e) {
-                myVersion = 0;
-            }
+            int myVersion = AboutAction.getVersionNumber();
 
             Pattern commentPattern = Pattern.compile("\\<p\\>\\s*\\/\\*[^\\*]*\\*\\/\\s*\\<\\/p\\>", Pattern.CASE_INSENSITIVE|Pattern.DOTALL|Pattern.MULTILINE);
Index: trunk/src/org/openstreetmap/josm/gui/SplashScreen.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/SplashScreen.java	(revision 1137)
+++ trunk/src/org/openstreetmap/josm/gui/SplashScreen.java	(revision 1138)
@@ -73,5 +73,5 @@
 
 		// Add the version number
-		JLabel version = new JLabel(tr("Version {0}", AboutAction.version));
+		JLabel version = new JLabel(tr("Version {0}", AboutAction.getVersionString()));
 		gbc.gridy = 1;
 		gbc.insets = new Insets(0, 0, 0, 0);
