Index: trunk/src/org/openstreetmap/josm/data/Preferences.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 2371)
+++ trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 2372)
@@ -323,5 +323,5 @@
     public void save() throws IOException {
         /* currently unused, but may help to fix configuration issues in future */
-        properties.put("josm.version", Version.getInstance().getVersionString());
+        putInteger("josm.version", Version.getInstance().getVersion());
 
         updateSystemProperties();
Index: trunk/src/org/openstreetmap/josm/gui/MainMenu.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MainMenu.java	(revision 2371)
+++ trunk/src/org/openstreetmap/josm/gui/MainMenu.java	(revision 2372)
@@ -3,5 +3,4 @@
 package org.openstreetmap.josm.gui;
 
-import static org.openstreetmap.josm.tools.I18n.marktr;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
@@ -159,11 +158,11 @@
     public final JosmAction statusreport = new ShowStatusReportAction();
 
-    public final JMenu fileMenu = addMenu(marktr("File"), KeyEvent.VK_F, 0, ht("/Menu/File"));
-    public final JMenu editMenu = addMenu(marktr("Edit"), KeyEvent.VK_E, 1, ht("/Menu/Edit"));
-    public final JMenu viewMenu = addMenu(marktr("View"), KeyEvent.VK_V, 2, ht("/Menu/View"));
-    public final JMenu toolsMenu = addMenu(marktr("Tools"), KeyEvent.VK_T, 3, ht("/Menu/Tools"));
-    public final JMenu presetsMenu = addMenu(marktr("Presets"), KeyEvent.VK_P, 4, ht("/Menu/Presets"));
+    public final JMenu fileMenu = addMenu(tr("File"), KeyEvent.VK_F, 0, ht("/Menu/File"));
+    public final JMenu editMenu = addMenu(tr("Edit"), KeyEvent.VK_E, 1, ht("/Menu/Edit"));
+    public final JMenu viewMenu = addMenu(tr("View"), KeyEvent.VK_V, 2, ht("/Menu/View"));
+    public final JMenu toolsMenu = addMenu(tr("Tools"), KeyEvent.VK_T, 3, ht("/Menu/Tools"));
+    public final JMenu presetsMenu = addMenu(tr("Presets"), KeyEvent.VK_P, 4, ht("/Menu/Presets"));
     public JMenu audioMenu = null;
-    public final JMenu helpMenu = addMenu(marktr("Help"), KeyEvent.VK_H, 5, ht("/Menu/Help"));
+    public final JMenu helpMenu = addMenu(tr("Help"), KeyEvent.VK_H, 5, ht("/Menu/Help"));
     public final int defaultMenuPos = 5;
 
@@ -185,12 +184,7 @@
         return menuitem;
     }
-    
-    @Deprecated
-    public JMenu addMenu(String name, int mnemonicKey, int position) {
-        return addMenu(name, mnemonicKey, position, "/Menu/" + name);
-    }
-    
+
     public JMenu addMenu(String name, int mnemonicKey, int position, String relativeHelpTopic) {
-        JMenu menu = new JMenu(tr(name));
+        JMenu menu = new JMenu(name);
         Shortcut.registerShortcut("menu:" + name, tr("Menu: {0}", tr(name)), mnemonicKey,
                 Shortcut.GROUP_MNEMONIC).setMnemonic(menu);
@@ -314,5 +308,5 @@
 
         if (!Main.pref.getBoolean("audio.menuinvisible", false)) {
-            audioMenu = addMenu(marktr("Audio"), KeyEvent.VK_A, 5, ht("/Menu/Audio"));
+            audioMenu = addMenu(tr("Audio"), KeyEvent.VK_A, 5, ht("/Menu/Audio"));
             add(audioMenu, audioPlayPause);
             add(audioMenu, audioNext);
Index: trunk/src/org/openstreetmap/josm/plugins/PluginDownloader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/plugins/PluginDownloader.java	(revision 2371)
+++ trunk/src/org/openstreetmap/josm/plugins/PluginDownloader.java	(revision 2372)
@@ -39,8 +39,10 @@
         private String errors = "";
         private int count = 0;
+        private boolean restart;
 
-        private UpdateTask(Collection<PluginInformation> toUpdate, boolean up) {
+        private UpdateTask(Collection<PluginInformation> toUpdate, boolean up, boolean restart) {
             super(up ? tr("Update Plugins") : tr("Download Plugins"));
             this.toUpdate = toUpdate;
+            this.restart = restart;
         }
 
@@ -58,7 +60,11 @@
                 );
             } else {
+                String txt = trn("{0} Plugin successfully downloaded.", "{0} Plugins successfully downloaded.", count, count);
+                if(restart)
+                    txt += "\n"+tr("Please restart JOSM.");
+
                 JOptionPane.showMessageDialog(
                         Main.parent,
-                        trn("{0} Plugin successfully downloaded. Please restart JOSM.", "{0} Plugins successfully downloaded. Please restart JOSM.", count, count),
+                        txt,
                         tr("Information"),
                         JOptionPane.INFORMATION_MESSAGE
@@ -154,6 +160,6 @@
     }
 
-    public static void update(Collection<PluginInformation> update) {
-        Main.worker.execute(new UpdateTask(update, true));
+    public static void update(Collection<PluginInformation> update, boolean restart) {
+        Main.worker.execute(new UpdateTask(update, true, restart));
     }
 
@@ -162,5 +168,5 @@
         // Waiting for result is not a good idea because the waiting thread will probably be either EDT
         // or worker thread. Blocking one of these threads will cause deadlock
-        UpdateTask t = new UpdateTask(download, false);
+        UpdateTask t = new UpdateTask(download, false, true);
         t.run();
         return t.failed;
Index: trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 2371)
+++ trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 2372)
@@ -91,7 +91,46 @@
         }
 
-
         if (plugins.isEmpty())
             return;
+
+        if(early)
+        {
+            String doUpdate = null;
+            String check = null;
+            int v = Version.getInstance().getVersion();
+            if(Main.pref.getInteger("pluginmanager.version", 0) < v)
+            {
+                doUpdate = tr("You updated your JOSM software\nTo prevent problems the plugins should be updated as well.\n"
+                        + "Update plugins now?");
+                check = "pluginmanger.version";
+            }
+            else
+            {
+                long tim = System.currentTimeMillis();
+                long last = Main.pref.getLong("pluginmanager.lastupdate", 0);
+                Integer maxTime = Main.pref.getInteger("pluginmanager.warntime", 60);
+                long d = (tim - last)/(24*60*60*1000l);
+                if ((last <= 0) || (maxTime <= 0)) {
+                    Main.pref.put("pluginmanager.lastupdate",Long.toString(tim));
+                } else if (d > maxTime) {
+                    doUpdate = tr("Last plugin update more than {0} days ago.", d);
+                    check = "pluginmanager.time";
+                }
+            }
+            if(doUpdate != null)
+            {
+                ExtendedDialog dialog = new ExtendedDialog(
+                        Main.parent,
+                        tr("Update plugins"),
+                        new String[] {tr("Update plugins"), tr("Skip update")}
+                );
+                dialog.setContent(doUpdate);
+                dialog.toggleEnable(check);
+                dialog.setButtonIcons( new String[] {"dialogs/refresh.png", "cancel.png"});
+                dialog.showDialog();
+                if(dialog.getValue() == 1)
+                    new PluginSelection().update();
+            }
+        }
 
         SortedMap<Integer, Collection<PluginInformation>> p = new TreeMap<Integer, Collection<PluginInformation>>();
@@ -143,24 +182,4 @@
                         tr("Error"),
                         JOptionPane.ERROR_MESSAGE
-                );
-            }
-        }
-
-        if (!early) {
-            long tim = System.currentTimeMillis();
-            long last = Main.pref.getLong("pluginmanager.lastupdate", 0);
-            Integer maxTime = Main.pref.getInteger("pluginmanager.warntime", 30);
-            long d = (tim - last)/(24*60*60*1000l);
-            if ((last <= 0) || (maxTime <= 0)) {
-                Main.pref.put("pluginmanager.lastupdate",Long.toString(tim));
-            } else if (d > maxTime) {
-                JOptionPane.showMessageDialog(Main.parent,
-                        "<html>" +
-                        tr("Last plugin update more than {0} days ago.", d) +
-                        "<br><em>" +
-                        tr("(You can change the number of days after which this warning appears<br>by setting the config option 'pluginmanager.warntime'.)") +
-                        "</html>",
-                        tr("Warning"),
-                        JOptionPane.WARNING_MESSAGE
                 );
             }
Index: trunk/src/org/openstreetmap/josm/plugins/PluginSelection.java
===================================================================
--- trunk/src/org/openstreetmap/josm/plugins/PluginSelection.java	(revision 2371)
+++ trunk/src/org/openstreetmap/josm/plugins/PluginSelection.java	(revision 2372)
@@ -38,4 +38,5 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.Version;
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.tools.OpenBrowser;
@@ -75,4 +76,8 @@
     }
 
+    public void update() {
+        update(null);
+    }
+
     public void update(JPanel pluginPanel) {
         // refresh description
@@ -80,5 +85,6 @@
         Boolean done = false;
         loadPlugins();
-        drawPanel(pluginPanel);
+        if(pluginPanel != null)
+            drawPanel(pluginPanel);
 
         Set<PluginInformation> toUpdate = new HashSet<PluginInformation>();
@@ -115,5 +121,5 @@
 
             if (ed.getValue() == 1) {
-                PluginDownloader.update(toUpdate);
+                PluginDownloader.update(toUpdate, pluginPanel != null);
                 done = true;
             }
@@ -121,7 +127,9 @@
         if (done && num >= 1) {
             Main.pref.put("pluginmanager.lastupdate", Long.toString(System.currentTimeMillis()));
+            Main.pref.putInteger("pluginmanager.version", Version.getInstance().getVersion());
         }
         loadPlugins();
-        drawPanel(pluginPanel);
+        if(pluginPanel != null)
+            drawPanel(pluginPanel);
     }
 
