Index: trunk/src/org/openstreetmap/josm/gui/preferences/PluginPreference.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/PluginPreference.java	(revision 4969)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/PluginPreference.java	(revision 4970)
@@ -228,5 +228,5 @@
      */
     public List<PluginInformation> getPluginsScheduledForUpdateOrDownload() {
-        return model.getPluginsScheduledForUpdateOrDownload();
+        return model != null ? model.getPluginsScheduledForUpdateOrDownload() : null;
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java	(revision 4969)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java	(revision 4970)
@@ -230,5 +230,5 @@
         final List<PluginInformation> toDownload = preference.getPluginsScheduledForUpdateOrDownload();
         final PluginDownloadTask task;
-        if (! toDownload.isEmpty()) {
+        if (toDownload != null && ! toDownload.isEmpty()) {
             task = new PluginDownloadTask(this, toDownload, tr("Download plugins"));
         } else {
@@ -247,5 +247,5 @@
                 }
 
-                for (PreferenceSetting setting : settings) {
+                for (PreferenceSetting setting : settingsInitialized) {
                     if (setting.ok()) {
                         requiresRestart = true;
@@ -463,8 +463,6 @@
             PreferenceTab tab = (PreferenceTab) sel;
             TabPreferenceSetting preferenceSettings = tab.getTabPreferenceSetting();
-            //System.out.println(preferenceSettings);
             if (!settingsInitialized.contains(preferenceSettings)) {
                 try {
-                    //System.out.println("adding GUI for "+preferenceSettings);
                     getModel().removeChangeListener(this);
                     preferenceSettings.addGui(this);
@@ -474,6 +472,13 @@
                             SubPreferenceSetting sps = (SubPreferenceSetting) setting;
                             if (sps.getTabPreferenceSetting(this) == preferenceSettings) {
-                                //System.out.println("adding GUI for "+sps);
-                                sps.addGui(this);
+                                try {
+                                    sps.addGui(this);
+                                } catch (SecurityException ex) {
+                                    ex.printStackTrace();
+                                } catch (Throwable ex) {
+                                    BugReportExceptionHandler.handleException(ex);
+                                } finally {
+                                    settingsInitialized.add(sps);
+                                }
                             }
                         }
