Ignore:
Timestamp:
2009-07-07T09:04:00+02:00 (15 years ago)
Author:
stoecker
Message:

fixed #2849 - patch by jttt - fix memory leak

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java

    r1415 r1742  
    77import java.awt.GridBagLayout;
    88import java.awt.ScrollPane;
     9import java.util.ArrayList;
    910import java.util.Collection;
    1011import java.util.Iterator;
    1112import java.util.LinkedList;
     13import java.util.List;
    1214
    1315import javax.swing.BorderFactory;
     
    3335public class PreferenceDialog extends JTabbedPane {
    3436
    35     public final static Collection<PreferenceSetting> settings = new LinkedList<PreferenceSetting>();
     37    private final static Collection<PreferenceSettingFactory> settingsFactory = new LinkedList<PreferenceSettingFactory>();
     38    private final List<PreferenceSetting> settings = new ArrayList<PreferenceSetting>();
    3639
    3740    // some common tabs
     
    4144    public final JPanel audio = createPreferenceTab("audio", I18n.tr("Audio Settings"), I18n.tr("Settings for the audio player and audio markers."));
    4245
    43   public final javax.swing.JTabbedPane displaycontent = new javax.swing.JTabbedPane();
     46    public final javax.swing.JTabbedPane displaycontent = new javax.swing.JTabbedPane();
    4447
    4548    /**
     
    105108    public PreferenceDialog() {
    106109        super(JTabbedPane.LEFT, JTabbedPane.SCROLL_TAB_LAYOUT);
     110
     111        for (PreferenceSettingFactory factory:settingsFactory) {
     112
     113            PreferenceSetting setting = factory.createPreferenceSetting();
     114            if (setting != null) {
     115                settings.add(factory.createPreferenceSetting());
     116            }
     117        }
     118
    107119        display.add(displaycontent, GBC.eol().fill(GBC.BOTH));
    108120        for (Iterator<PreferenceSetting> it = settings.iterator(); it.hasNext();) {
     
    118130    }
    119131
     132    public List<PreferenceSetting> getSettings() {
     133        return settings;
     134    }
     135
     136    @SuppressWarnings("unchecked")
     137    public <T>  T getSetting(Class<? extends T> clazz) {
     138        for (PreferenceSetting setting:settings) {
     139            if (clazz.isAssignableFrom(setting.getClass())) {
     140                return (T)setting;
     141            }
     142        }
     143        return null;
     144    }
     145
    120146    static {
    121147        // order is important!
    122         settings.add(new DrawingPreference());
    123         settings.add(new ColorPreference());
    124         settings.add(new LafPreference());
    125         settings.add(new LanguagePreference());
    126         settings.add(new MapPaintPreference());
    127         settings.add(new ServerAccessPreference());
    128         settings.add(new FilePreferences());
    129         settings.add(new ProxyPreferences());
    130         settings.add(new ProjectionPreference());
    131         settings.add(new TaggingPresetPreference());
    132         settings.add(new PluginPreference());
    133         settings.add(Main.toolbar);
    134         settings.add(new AudioPreference());
    135         settings.add(new ShortcutPreference());
     148        settingsFactory.add(new DrawingPreference.Factory());
     149        settingsFactory.add(new ColorPreference.Factory());
     150        settingsFactory.add(new LafPreference.Factory());
     151        settingsFactory.add(new LanguagePreference.Factory());
     152        settingsFactory.add(new MapPaintPreference.Factory());
     153        settingsFactory.add(new ServerAccessPreference.Factory());
     154        settingsFactory.add(new FilePreferences.Factory());
     155        settingsFactory.add(new ProxyPreferences.Factory());
     156        settingsFactory.add(new ProjectionPreference.Factory());
     157        settingsFactory.add(new TaggingPresetPreference.Factory());
     158        settingsFactory.add(new PluginPreference.Factory());
     159        settingsFactory.add(Main.toolbar);
     160        settingsFactory.add(new AudioPreference.Factory());
     161        settingsFactory.add(new ShortcutPreference.Factory());
    136162
    137         PluginHandler.getPreferenceSetting(settings);
     163        PluginHandler.getPreferenceSetting(settingsFactory);
    138164
    139165        // always the last: advanced tab
    140         settings.add(new AdvancedPreference());
     166        settingsFactory.add(new AdvancedPreference.Factory());
    141167    }
    142168}
Note: See TracChangeset for help on using the changeset viewer.