Index: src/org/openstreetmap/josm/plugins/PluginSelection.java
===================================================================
--- src/org/openstreetmap/josm/plugins/PluginSelection.java	(revision 2147)
+++ src/org/openstreetmap/josm/plugins/PluginSelection.java	(working copy)
@@ -70,6 +70,7 @@
                     JOptionPane.ERROR_MESSAGE
             );
         }
+        loadPlugins();
         drawPanel(pluginPanel);
     }
 
@@ -77,6 +78,7 @@
         // refresh description
         int num = PluginDownloader.downloadDescription();
         Boolean done = false;
+        loadPlugins();
         drawPanel(pluginPanel);
 
         Set<PluginInformation> toUpdate = new HashSet<PluginInformation>();
@@ -119,6 +121,7 @@
         if (done && num >= 1) {
             Main.pref.put("pluginmanager.lastupdate", Long.toString(System.currentTimeMillis()));
         }
+        loadPlugins();
         drawPanel(pluginPanel);
     }
 
@@ -169,7 +172,6 @@
 
     /* return true when plugin list changed */
     public void drawPanel(JPanel pluginPanel) {
-        loadPlugins();
         Collection<String> enabledPlugins = Main.pref.getCollection("plugins", null);
 
         if (pluginMap == null) {
@@ -298,7 +300,7 @@
         return canHas;
     }
 
-    private void loadPlugins() {
+    public void loadPlugins() {
         availablePlugins = new TreeMap<String, PluginInformation>(new Comparator<String>(){
             public int compare(String o1, String o2) {
                 return o1.compareToIgnoreCase(o2);
Index: src/org/openstreetmap/josm/gui/preferences/PluginPreference.java
===================================================================
--- src/org/openstreetmap/josm/gui/preferences/PluginPreference.java	(revision 2147)
+++ src/org/openstreetmap/josm/gui/preferences/PluginPreference.java	(working copy)
@@ -104,6 +104,7 @@
         plugin.add(configureSites, GBC.std());
 
         selection.passTxtFilter(txtFilter);
+        selection.loadPlugins();
         selection.drawPanel(pluginPanel);
     }
 
