Index: /trunk/src/org/openstreetmap/josm/plugins/PluginSelection.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/plugins/PluginSelection.java	(revision 1648)
+++ /trunk/src/org/openstreetmap/josm/plugins/PluginSelection.java	(revision 1649)
@@ -47,4 +47,5 @@
     private Map<String, Boolean> pluginMap;
     private Map<String, PluginInformation> availablePlugins;
+    private Map<String, PluginInformation> localPlugins;
 
     public void updateDescription(JPanel pluginPanel) {
@@ -68,7 +69,9 @@
         StringBuilder toUpdateStr = new StringBuilder();
         for (PluginProxy proxy : PluginHandler.pluginList) {
-            PluginInformation description = availablePlugins.get(proxy.info.name);
+            PluginInformation local = localPlugins.get(proxy.info.name);
+            PluginInformation description = availablePlugins.get(local.name);
+
             if (description != null && (description.version == null || description.version.equals("")) ?
-            (proxy.info.version != null && proxy.info.version.equals("")) : !description.version.equals(proxy.info.version)) {
+            (local.version != null && local.version.equals("")) : !description.version.equals(local.version)) {
                 toUpdate.add(description);
                 toUpdateStr.append(description.name+"\n");
@@ -102,5 +105,5 @@
                 String name = entry.getKey();
                 PluginInformation ap = availablePlugins.get(name);
-                PluginInformation pi = PluginInformation.findPlugin(name);
+                PluginInformation pi = localPlugins.get(name);
                 boolean add = false;
                 if(pi == null)
@@ -177,7 +180,8 @@
                 remoteversion = tr("unknown");
 
-            String localversion;
-            PluginInformation p = PluginInformation.findPlugin(plugin.name);
-            if (p != null) {
+            String localversion = "";
+            PluginInformation p = localPlugins.get(plugin.name);
+            if(p != null)
+            {
                 if (p.version != null && !p.version.equals(""))
                     localversion = p.version;
@@ -185,6 +189,5 @@
                     localversion = tr("unknown");
                 localversion = " (" + localversion + ")";
-            } else
-                localversion = "";
+            }
 
             final JCheckBox pluginCheck = new JCheckBox(
@@ -252,4 +255,9 @@
             }
         });
+        localPlugins = new TreeMap<String, PluginInformation>(new Comparator<String>(){
+            public int compare(String o1, String o2) {
+                return o1.compareToIgnoreCase(o2);
+            }
+        });
         for (String location : PluginInformation.getPluginLocations()) {
             File[] pluginFiles = new File(location).listFiles();
@@ -265,4 +273,13 @@
                             if (!availablePlugins.containsKey(info.name))
                                 availablePlugins.put(info.name, info);
+                            if (!localPlugins.containsKey(info.name))
+                                localPlugins.put(info.name, info);
+                        } catch (PluginException x) {
+                        }
+                    } else if (fname.endsWith(".jar.new")) {
+                        try {
+                            PluginInformation info = new PluginInformation(f,fname.substring(0,fname.length()-8));
+                            availablePlugins.put(info.name, info);
+                            localPlugins.put(info.name, info);
                         } catch (PluginException x) {
                         }
@@ -334,6 +351,10 @@
         }
         for (PluginProxy proxy : PluginHandler.pluginList)
+        {
             if (!availablePlugins.containsKey(proxy.info.name))
                 availablePlugins.put(proxy.info.name, proxy.info);
+            if (!localPlugins.containsKey(proxy.info.name))
+                localPlugins.put(proxy.info.name, proxy.info);
+        }
         return availablePlugins;
     }
