예제 #1
0
 @Override
 public void stateChanged(ChangeEvent e) {
   int index = getSelectedIndex();
   Component sel = getSelectedComponent();
   if (index > -1 && sel instanceof PreferenceTab) {
     PreferenceTab tab = (PreferenceTab) sel;
     TabPreferenceSetting preferenceSettings = tab.getTabPreferenceSetting();
     if (!settingsInitialized.contains(preferenceSettings)) {
       try {
         getModel().removeChangeListener(this);
         preferenceSettings.addGui(this);
         // Add GUI for sub preferences
         for (PreferenceSetting setting : settings) {
           if (setting instanceof SubPreferenceSetting) {
             SubPreferenceSetting sps = (SubPreferenceSetting) setting;
             if (sps.getTabPreferenceSetting(this) == preferenceSettings) {
               try {
                 sps.addGui(this);
               } catch (SecurityException ex) {
                 ex.printStackTrace();
               } catch (Throwable ex) {
                 BugReportExceptionHandler.handleException(ex);
               } finally {
                 settingsInitialized.add(sps);
               }
             }
           }
         }
         Icon icon = getIconAt(index);
         remove(index);
         insertGUITabsForSetting(icon, preferenceSettings, index);
         setSelectedIndex(index);
       } catch (SecurityException ex) {
         ex.printStackTrace();
       } catch (Throwable ex) {
         // allow to change most settings even if e.g. a plugin fails
         BugReportExceptionHandler.handleException(ex);
       } finally {
         settingsInitialized.add(preferenceSettings);
         getModel().addChangeListener(this);
       }
     }
   }
 }