Ticket #7548: 7548_alpha.patch

File 7548_alpha.patch, 48.2 KB (added by simon04, 12 years ago)
  • src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java

    diff --git a/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java b/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java
    index 8a7d48d..7c0b26c 100644
    a b import org.openstreetmap.josm.gui.mappaint.MapPaintStyles.MapPaintSylesUpdateLis  
    6464import org.openstreetmap.josm.gui.mappaint.StyleSource;
    6565import org.openstreetmap.josm.gui.preferences.PreferenceDialog;
    6666import org.openstreetmap.josm.gui.preferences.SourceEntry;
     67import org.openstreetmap.josm.gui.preferences.map.MapPaintPreference;
    6768import org.openstreetmap.josm.gui.widgets.HtmlPanel;
    6869import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher;
    6970import org.openstreetmap.josm.tools.GBC;
    public class MapPaintDialog extends ToggleDialog {  
    370371        @Override
    371372        public void actionPerformed(ActionEvent e) {
    372373            final PreferenceDialog p =new PreferenceDialog(Main.parent);
    373             p.selectMapPaintPreferenceTab();
     374            p.selectPreferencesTabByClass(MapPaintPreference.class);
    374375            p.setVisible(true);
    375376        }
    376377    }
  • src/org/openstreetmap/josm/gui/preferences/DefaultTabPreferenceSetting.java

    diff --git a/src/org/openstreetmap/josm/gui/preferences/DefaultTabPreferenceSetting.java b/src/org/openstreetmap/josm/gui/preferences/DefaultTabPreferenceSetting.java
    index b296159..17fc08e 100644
    a b  
    1 // License: GPL. For details, see LICENSE file.
    2 package org.openstreetmap.josm.gui.preferences;
    3 
    4 import javax.swing.JPanel;
    5 import javax.swing.JScrollPane;
    6 
    7 import org.openstreetmap.josm.tools.GBC;
    8 
    9 public abstract class DefaultTabPreferenceSetting extends DefaultPreferenceSetting implements TabPreferenceSetting {
    10 
    11     private final String iconName;
    12     private final String description;
    13     private final String title;
    14    
    15     public DefaultTabPreferenceSetting() {
    16         this(null, null, null);
    17     }
    18 
    19     public DefaultTabPreferenceSetting(String iconName, String title, String description) {
    20         this(iconName, title, description, false);
    21     }
    22 
    23     public DefaultTabPreferenceSetting(String iconName, String title, String description, boolean isExpert) {
    24         super(isExpert);
    25         this.iconName = iconName;
    26         this.description = description;
    27         this.title = title;
    28     }
    29 
    30     @Override
    31     public String getIconName() {
    32         return iconName;
    33     }
    34 
    35     @Override
    36     public String getTooltip() {
    37         if (getDescription() != null) {
    38             return "<html>"+getDescription()+"</html>";
    39         } else {
    40             return null;
    41         }
    42     }
    43 
    44     @Override
    45     public String getDescription() {
    46         return description;
    47     }
    48 
    49     @Override
    50     public String getTitle() {
    51         return title;
    52     }
    53    
    54     protected final void createPreferenceTabWithScrollPane(PreferenceTabbedPane gui, JPanel panel) {
    55         GBC a = GBC.eol().insets(-5,0,0,0);
    56         a.anchor = GBC.EAST;
    57        
    58         JScrollPane scrollPane = new JScrollPane(panel, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    59         scrollPane.setBorder(null);
    60 
    61         JPanel tab = gui.createPreferenceTab(this);
    62         tab.add(scrollPane, GBC.eol().fill(GBC.BOTH));
    63         tab.add(GBC.glue(0,10), a);
    64     }
    65 }
     1// License: GPL. For details, see LICENSE file.
     2package org.openstreetmap.josm.gui.preferences;
     3
     4import javax.swing.JComponent;
     5import javax.swing.JPanel;
     6import javax.swing.JScrollPane;
     7
     8import org.openstreetmap.josm.tools.GBC;
     9
     10public abstract class DefaultTabPreferenceSetting extends DefaultPreferenceSetting implements TabPreferenceSetting {
     11
     12    private final String iconName;
     13    private final String description;
     14    private final String title;
     15   
     16    public DefaultTabPreferenceSetting() {
     17        this(null, null, null);
     18    }
     19
     20    public DefaultTabPreferenceSetting(String iconName, String title, String description) {
     21        this(iconName, title, description, false);
     22    }
     23
     24    public DefaultTabPreferenceSetting(String iconName, String title, String description, boolean isExpert) {
     25        super(isExpert);
     26        this.iconName = iconName;
     27        this.description = description;
     28        this.title = title;
     29    }
     30
     31    @Override
     32    public String getIconName() {
     33        return iconName;
     34    }
     35
     36    @Override
     37    public String getTooltip() {
     38        if (getDescription() != null) {
     39            return "<html>"+getDescription()+"</html>";
     40        } else {
     41            return null;
     42        }
     43    }
     44
     45    @Override
     46    public String getDescription() {
     47        return description;
     48    }
     49
     50    @Override
     51    public String getTitle() {
     52        return title;
     53    }
     54   
     55    protected final void createPreferenceTabWithScrollPane(PreferenceTabbedPane gui, JComponent panel) {
     56        GBC a = GBC.eol().insets(-5,0,0,0);
     57        a.anchor = GBC.EAST;
     58       
     59        JScrollPane scrollPane = new JScrollPane(panel, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
     60        scrollPane.setBorder(null);
     61
     62        JPanel tab = gui.createPreferenceTab(this);
     63        tab.add(scrollPane, GBC.eol().fill(GBC.BOTH));
     64        tab.add(GBC.glue(0,10), a);
     65    }
     66}
  • src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java

    diff --git a/src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java b/src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java
    index f6f9f14..f871802 100644
    a b public class PreferenceDialog extends JDialog {  
    169169            new CancelAction().cancel();
    170170        }
    171171    }
    172 
    173     public void selectMapPaintPreferenceTab() {
    174         tpPreferences.selectTabByPref(MapPreference.class);
    175         tpPreferences.getMapPreference().mapcontent.setSelectedIndex(1);
    176     }
    177172}
  • src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java

    diff --git a/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java b/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java
    index 5a014f2..f62c134 100644
    a b import org.openstreetmap.josm.gui.preferences.advanced.AdvancedPreference;  
    3232import org.openstreetmap.josm.gui.preferences.display.ColorPreference;
    3333import org.openstreetmap.josm.gui.preferences.display.DisplayPreference;
    3434import org.openstreetmap.josm.gui.preferences.display.DrawingPreference;
     35import org.openstreetmap.josm.gui.preferences.display.GPXSettingsPanel;
    3536import org.openstreetmap.josm.gui.preferences.display.LafPreference;
    3637import org.openstreetmap.josm.gui.preferences.display.LanguagePreference;
    3738import org.openstreetmap.josm.gui.preferences.imagery.ImageryPreference;
    import org.openstreetmap.josm.gui.preferences.map.MapPaintPreference;  
    4041import org.openstreetmap.josm.gui.preferences.map.MapPreference;
    4142import org.openstreetmap.josm.gui.preferences.map.ProjectionPreference;
    4243import org.openstreetmap.josm.gui.preferences.map.TaggingPresetPreference;
     44import org.openstreetmap.josm.gui.preferences.server.ProxyPreferencesPanel;
    4345import org.openstreetmap.josm.gui.preferences.shortcut.ShortcutPreference;
    4446import org.openstreetmap.josm.plugins.PluginDownloadTask;
    4547import org.openstreetmap.josm.plugins.PluginHandler;
    public class PreferenceTabbedPane extends JTabbedPane implements MouseWheelListe  
    337339        int position = index;
    338340        for (PreferenceTab tab : tabs) {
    339341            if (tab.getTabPreferenceSetting().equals(tps)) {
    340                 insertTab(null, icon, tab.getComponent(), tps.getTooltip(), position++);
     342                if (tps instanceof IconPreferenceSetting) {
     343                    insertTab(null, icon, tab.getComponent(), tps.getTooltip(), position++);
     344                } else {
     345                    insertTab(tps.getTitle(), null, tab.getComponent(), tps.getTooltip(), position++);
     346                }
    341347            }
    342348        }
    343349    }
    public class PreferenceTabbedPane extends JTabbedPane implements MouseWheelListe  
    361367                        addGUITabsForSetting(icon, tps);
    362368                    } else {
    363369                        // If it has not been initialized, create an empty tab with only icon and tooltip
    364                         addTab(null, icon, new PreferencePanel(tps), tps.getTooltip());
     370                        if (tps instanceof IconPreferenceSetting) {
     371                            addTab(null, icon, new PreferencePanel(tps), tps.getTooltip());
     372                        } else {
     373                            addTab(tps.getTitle(), null, new PreferencePanel(tps), tps.getTooltip());
     374                        }
    365375                    }
    366376                }
    367377            }
    public class PreferenceTabbedPane extends JTabbedPane implements MouseWheelListe  
    391401        return null;
    392402    }
    393403
     404    static class IconPreferenceSetting extends DefaultTabPreferenceSetting {
     405
     406        public static class Factory implements PreferenceSettingFactory {
     407
     408            private final String iconName, title, description;
     409
     410            public Factory(String iconName, String title, String description) {
     411                this.iconName = iconName;
     412                this.title = title;
     413                this.description = description;
     414            }
     415
     416            @Override
     417            public PreferenceSetting createPreferenceSetting() {
     418                return new IconPreferenceSetting(iconName, title, description);
     419            }
     420        }
     421
     422        public IconPreferenceSetting(String iconName, String title, String description) {
     423            super(iconName, title, description);
     424        }
     425
     426        @Override
     427        public void addGui(PreferenceTabbedPane gui) {
     428            createPreferenceTabWithScrollPane(gui, new JPanel());
     429        }
     430
     431        @Override
     432        public boolean ok() {
     433            return false;
     434        }
     435    }
     436
    394437    static {
     438
    395439        // order is important!
    396         settingsFactory.add(new DisplayPreference.Factory());
     440        settingsFactory.add(new IconPreferenceSetting.Factory("map", tr("Mapping"), ""));
    397441        settingsFactory.add(new DrawingPreference.Factory());
    398         settingsFactory.add(new ColorPreference.Factory());
    399         settingsFactory.add(new LafPreference.Factory());
    400         settingsFactory.add(new LanguagePreference.Factory());
    401         settingsFactory.add(new ServerAccessPreference.Factory());
    402         settingsFactory.add(new MapPreference.Factory());
     442        settingsFactory.add(new GPXSettingsPanel.Factory());
    403443        settingsFactory.add(new ProjectionPreference.Factory());
    404444        settingsFactory.add(new MapPaintPreference.Factory());
    405445        settingsFactory.add(new TaggingPresetPreference.Factory());
     446        settingsFactory.add(new ImageryPreference.Factory());
     447
     448        settingsFactory.add(new IconPreferenceSetting.Factory("connection", tr("Server"), tr("Connection Settings for the OSM server.")));
     449        settingsFactory.add(new ServerAccessPreference.Factory());
     450        settingsFactory.add(new ProxyPreferencesPanel.Factory());
     451
     452        settingsFactory.add(new IconPreferenceSetting.Factory("display", tr("User Interface"), tr("Various settings that influence the visual representation of the whole program.")));
     453        settingsFactory.add(new ColorPreference.Factory());
     454        settingsFactory.add(new LafPreference.Factory());
     455        settingsFactory.add(new LanguagePreference.Factory());
    406456        settingsFactory.add(new BackupPreference.Factory());
    407         if(!Main.applet) {
    408             settingsFactory.add(new PluginPreference.Factory());
    409         }
    410457        settingsFactory.add(Main.toolbar);
    411         settingsFactory.add(new AudioPreference.Factory());
    412458        settingsFactory.add(new ShortcutPreference.Factory());
     459
     460        settingsFactory.add(new IconPreferenceSetting.Factory("advanced", tr("Advanced Preferences"), ""));
     461        settingsFactory.add(new AudioPreference.Factory());
    413462        settingsFactory.add(new ValidatorPreference.Factory());
    414463        settingsFactory.add(new RemoteControlPreference.Factory());
    415         settingsFactory.add(new ImageryPreference.Factory());
     464        settingsFactory.add(new AdvancedPreference.Factory());
    416465
     466        settingsFactory.add(new IconPreferenceSetting.Factory("plugin", tr("Plugins"), tr("Install new plugins or configure installed plugins.")));
     467        if(!Main.applet) {
     468            settingsFactory.add(new PluginPreference.Factory());
     469        }
    417470        PluginHandler.getPreferenceSetting(settingsFactory);
    418471
    419         // always the last: advanced tab
    420         settingsFactory.add(new AdvancedPreference.Factory());
    421472    }
    422473
    423474    /**
  • src/org/openstreetmap/josm/gui/preferences/ServerAccessPreference.java

    diff --git a/src/org/openstreetmap/josm/gui/preferences/ServerAccessPreference.java b/src/org/openstreetmap/josm/gui/preferences/ServerAccessPreference.java
    index 307696e..39b1c4b 100644
    a b package org.openstreetmap.josm.gui.preferences;  
    33
    44import static org.openstreetmap.josm.tools.I18n.tr;
    55
    6 import java.awt.BorderLayout;
    7 import java.awt.GridBagConstraints;
    8 import java.awt.GridBagLayout;
    9 import java.awt.Insets;
    10 
     6import sun.awt.VerticalBagLayout;
    117import javax.swing.JPanel;
    12 import javax.swing.JScrollPane;
    13 import javax.swing.JTabbedPane;
    14 
    158import org.openstreetmap.josm.gui.help.HelpUtil;
    169import org.openstreetmap.josm.gui.preferences.server.AuthenticationPreferencesPanel;
    1710import org.openstreetmap.josm.gui.preferences.server.OsmApiUrlInputPanel;
    18 import org.openstreetmap.josm.gui.preferences.server.ProxyPreferencesPanel;
    19 import org.openstreetmap.josm.gui.widgets.VerticallyScrollablePanel;
     11
    2012public class ServerAccessPreference extends DefaultTabPreferenceSetting {
    2113
    2214    public static class Factory implements PreferenceSettingFactory {
    public class ServerAccessPreference extends DefaultTabPreferenceSetting {  
    2618    }
    2719   
    2820    private ServerAccessPreference() {
    29         super("connection", tr("Connection Settings"), tr("Connection Settings for the OSM server."));
     21        super("connection", tr("Connection Settings"),
     22                tr("Connection Settings for the OSM server as well as your identity and how to authenticate at the OSM server."));
    3023    }
    3124
    3225    private OsmApiUrlInputPanel pnlApiUrlPreferences;
    3326
    34     private JTabbedPane tpServerPreferences;
    3527    /** indicates whether to use the default OSM URL or not */
    3628    /** panel for configuring authentication preferences */
    3729    private AuthenticationPreferencesPanel pnlAuthPreferences;
    38     /** panel for configuring proxy preferences */
    39     private ProxyPreferencesPanel pnlProxyPreferences;
    40     /** panel for backup preferences */
    41 
    42     /**
    43      * Embeds a vertically scrollable panel in a {@see JScrollPane}
    44      * @param panel the panel
    45      * @return the scroll pane
    46      */
    47     protected JScrollPane wrapVerticallyScrollablePanel(VerticallyScrollablePanel panel) {
    48         JScrollPane sp = new JScrollPane(panel);
    49         sp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
    50         sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
    51         return sp;
    52     }
    53 
    54     /**
    55      * Builds the tabbed pane with the server preferences
    56      *
    57      * @return
    58      */
    59     protected JPanel buildTabbedServerPreferences() {
    60         JPanel pnl = new JPanel(new BorderLayout());
    61 
    62         tpServerPreferences = new JTabbedPane();
    63         pnlAuthPreferences = new AuthenticationPreferencesPanel();
    64         tpServerPreferences.add(wrapVerticallyScrollablePanel(pnlAuthPreferences));
    65         pnlProxyPreferences = new ProxyPreferencesPanel();
    66         tpServerPreferences.add(wrapVerticallyScrollablePanel(pnlProxyPreferences));
    67 
    68         tpServerPreferences.setTitleAt(0, tr("Authentication"));
    69         tpServerPreferences.setTitleAt(1, tr("Proxy settings"));
    70         tpServerPreferences.setToolTipTextAt(0, tr("Configure your identity and how to authenticate at the OSM server"));
    71         tpServerPreferences.setToolTipTextAt(1, tr("Configure whether to use a proxy server"));
    72 
    73         pnl.add(tpServerPreferences, BorderLayout.CENTER);
    74         return pnl;
    75     }
    76 
     30   
    7731    /**
    7832     * Builds the panel for entering the server access preferences
    7933     *
    8034     * @return
    8135     */
    8236    protected JPanel buildContentPanel() {
    83         JPanel pnl = new JPanel(new GridBagLayout());
    84         GridBagConstraints gc = new GridBagConstraints();
     37        JPanel pnl = new JPanel(new VerticalBagLayout(20));
    8538
    86         // the checkbox for the default UL
    87         gc.fill = GridBagConstraints.HORIZONTAL;
    88         gc.anchor = GridBagConstraints.NORTHWEST;
    89         gc.weightx = 1.0;
    90         gc.insets = new Insets(0,0,0,0);
    91         pnl.add(pnlApiUrlPreferences = new OsmApiUrlInputPanel(), gc);
    92 
    93         // the remaining access properties
    94         gc.gridy = 1;
    95         gc.fill = GridBagConstraints.BOTH;
    96         gc.weightx = 1.0;
    97         gc.weighty = 1.0;
    98         gc.insets = new Insets(10,0,3,3);
    99         pnl.add(buildTabbedServerPreferences(), gc);
     39        pnl.add(pnlApiUrlPreferences = new OsmApiUrlInputPanel());
     40        pnl.add(pnlAuthPreferences = new AuthenticationPreferencesPanel());
    10041
    10142        // let the AuthPreferencesPanel know when the API URL changes
    102         //
    10343        pnlApiUrlPreferences.addPropertyChangeListener(pnlAuthPreferences);
    10444
    10545        HelpUtil.setHelpContext(pnl, HelpUtil.ht("/Preferences/Connection"));
    public class ServerAccessPreference extends DefaultTabPreferenceSetting {  
    10747    }
    10848
    10949    public void addGui(PreferenceTabbedPane gui) {
    110         GridBagConstraints gc = new GridBagConstraints();
    111         gc.fill = GridBagConstraints.BOTH;
    112         gc.weightx = 1.0;
    113         gc.weighty = 1.0;
    114         gc.anchor = GridBagConstraints.NORTHWEST;
    115         gui.createPreferenceTab(this).add(buildContentPanel(), gc);
    116 
     50        createPreferenceTabWithScrollPane(gui, buildContentPanel());
    11751        initFromPreferences();
    11852    }
    11953
    public class ServerAccessPreference extends DefaultTabPreferenceSetting {  
    12357    public void initFromPreferences() {
    12458        pnlApiUrlPreferences.initFromPreferences();
    12559        pnlAuthPreferences.initFromPreferences();
    126         pnlProxyPreferences.initFromPreferences();
    12760    }
    12861
    12962    /**
    public class ServerAccessPreference extends DefaultTabPreferenceSetting {  
    13265    public boolean ok() {
    13366        pnlApiUrlPreferences.saveToPreferences();
    13467        pnlAuthPreferences.saveToPreferences();
    135         pnlProxyPreferences.saveToPreferences();
    13668        return false;
    13769    }
    13870}
  • src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java

    diff --git a/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java b/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java
    index 440f2fb..8b96b03 100644
    a b public class ToolbarPreferences implements PreferenceSettingFactory {  
    498498        private String movingComponent;
    499499
    500500        public Settings(DefaultMutableTreeNode rootActionsNode) {
    501             super("toolbar", tr("Toolbar customization"), tr("Customize the elements on the toolbar."));
     501            super("toolbar", tr("Toolbar"), tr("Customize the elements on the toolbar."));
    502502            actionsTreeModel = new DefaultTreeModel(rootActionsNode);
    503503            actionsTree = new JTree(actionsTreeModel);
    504504        }
  • src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java

    diff --git a/src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java b/src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java
    index 3ed2a58..d7f87f1 100644
    a b import org.openstreetmap.josm.gui.layer.GpxLayer;  
    4040import org.openstreetmap.josm.gui.layer.ImageryLayer;
    4141import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    4242import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
     43import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
    4344import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
    4445import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory;
    4546import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
    46 import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting;
    47 import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting;
    4847import org.openstreetmap.josm.tools.ColorHelper;
    4948import org.openstreetmap.josm.tools.GBC;
    5049
    51 public class ColorPreference implements SubPreferenceSetting {
     50public class ColorPreference extends DefaultTabPreferenceSetting {
    5251
    5352    public static class Factory implements PreferenceSettingFactory {
    5453        public PreferenceSetting createPreferenceSetting() {
    public class ColorPreference implements SubPreferenceSetting {  
    6463    JButton defaultSet;
    6564    JButton remove;
    6665
     66    public ColorPreference() {
     67        super(null, tr("Colors"), null);
     68    }
     69
    6770    /**
    6871     * Set the colors to be shown in the preference table. This method creates a table model if
    6972     * none exists and overwrites all existing values.
    public class ColorPreference implements SubPreferenceSetting {  
    238241        buttonPanel.add(defaultSet, GBC.std().insets(5,5,5,0));
    239242        buttonPanel.add(defaultAll, GBC.std().insets(0,5,0,0));
    240243        buttonPanel.add(remove, GBC.std().insets(0,5,0,0));
    241         gui.getDisplayPreference().displaycontent.addTab(tr("Colors"), panel);
     244
     245        createPreferenceTabWithScrollPane(gui, panel);
    242246    }
    243247
    244248    Boolean isRemoveColor(int row)
    public class ColorPreference implements SubPreferenceSetting {  
    283287    public boolean isExpert() {
    284288        return false;
    285289    }
    286 
    287     @Override
    288     public TabPreferenceSetting getTabPreferenceSetting(final PreferenceTabbedPane gui) {
    289         return gui.getDisplayPreference();
    290     }
    291290}
  • src/org/openstreetmap/josm/gui/preferences/display/DrawingPreference.java

    diff --git a/src/org/openstreetmap/josm/gui/preferences/display/DrawingPreference.java b/src/org/openstreetmap/josm/gui/preferences/display/DrawingPreference.java
    index 0c33939..87f0dce 100644
    a b import javax.swing.Box;  
    1212import javax.swing.JCheckBox;
    1313import javax.swing.JLabel;
    1414import javax.swing.JPanel;
    15 import javax.swing.JScrollPane;
    1615
    1716import org.openstreetmap.josm.Main;
    1817import org.openstreetmap.josm.actions.ExpertToggleAction;
     18import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
    1919import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
    2020import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory;
    2121import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
    22 import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting;
    23 import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting;
    2422import org.openstreetmap.josm.tools.GBC;
    2523
    26 public class DrawingPreference implements SubPreferenceSetting {
     24public class DrawingPreference extends DefaultTabPreferenceSetting {
    2725
    2826    public static class Factory implements PreferenceSettingFactory {
    2927        public PreferenceSetting createPreferenceSetting() {
    public class DrawingPreference implements SubPreferenceSetting {  
    3129        }
    3230    }
    3331
    34     private GPXSettingsPanel gpxPanel;
    3532    private JCheckBox directionHint = new JCheckBox(tr("Draw Direction Arrows"));
    3633    private JCheckBox headArrow = new JCheckBox(tr("Only on the head of a way."));
    3734    private JCheckBox onewayArrow = new JCheckBox(tr("Draw oneway arrows."));
    public class DrawingPreference implements SubPreferenceSetting {  
    4643    private JCheckBox useAntialiasing = new JCheckBox(tr("Smooth map graphics (antialiasing)"));
    4744    private JCheckBox outlineOnly = new JCheckBox(tr("Draw only outlines of areas"));
    4845
     46    public DrawingPreference() {
     47        super(null, tr("OSM Data"), "");
     48    }
     49
    4950    public void addGui(PreferenceTabbedPane gui) {
    50         //gui.display.setPreferredSize(new Dimension(400,600));
    51         gpxPanel = new GPXSettingsPanel();
    52         gui.addValidationListener(gpxPanel);
    53         JPanel panel = gpxPanel;
    54 
    55         JScrollPane scrollpane = new JScrollPane(panel);
    56         scrollpane.setBorder(BorderFactory.createEmptyBorder( 0, 0, 0, 0 ));
    57         gui.getDisplayPreference().displaycontent.addTab(tr("GPS Points"), scrollpane);
    58         panel = new JPanel(new GridBagLayout());
     51
     52        JPanel panel = new JPanel(new GridBagLayout());
    5953        panel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
    6054
    6155        // directionHint
    public class DrawingPreference implements SubPreferenceSetting {  
    132126        ExpertToggleAction.addVisibilitySwitcher(outlineOnly);
    133127
    134128        panel.add(Box.createVerticalGlue(), GBC.eol().fill(GBC.BOTH));
    135         scrollpane = new JScrollPane(panel);
    136         scrollpane.setBorder(BorderFactory.createEmptyBorder( 0, 0, 0, 0 ));
    137         gui.getDisplayPreference().displaycontent.addTab(tr("OSM Data"), scrollpane);
     129
     130        createPreferenceTabWithScrollPane(gui, panel);
    138131    }
    139132
    140133    public boolean ok() {
    141         gpxPanel.savePreferences();
    142134        Main.pref.put("draw.data.area_outline_only", outlineOnly.isSelected());
    143135        Main.pref.put("draw.segment.direction", directionHint.isSelected());
    144136        Main.pref.put("draw.segment.head_only", headArrow.isSelected());
    public class DrawingPreference implements SubPreferenceSetting {  
    166158    public boolean isExpert() {
    167159        return false;
    168160    }
    169 
    170     @Override
    171     public TabPreferenceSetting getTabPreferenceSetting(final PreferenceTabbedPane gui) {
    172         return gui.getDisplayPreference();
    173     }
    174161}
  • src/org/openstreetmap/josm/gui/preferences/display/GPXSettingsPanel.java

    diff --git a/src/org/openstreetmap/josm/gui/preferences/display/GPXSettingsPanel.java b/src/org/openstreetmap/josm/gui/preferences/display/GPXSettingsPanel.java
    index dae0791..b26582e 100644
    a b import org.openstreetmap.josm.Main;  
    2525import org.openstreetmap.josm.actions.ExpertToggleAction;
    2626import org.openstreetmap.josm.gui.layer.markerlayer.Marker;
    2727import org.openstreetmap.josm.gui.layer.markerlayer.Marker.TemplateEntryProperty;
     28import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
     29import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
     30import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory;
     31import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
    2832import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane.ValidationListener;
    2933import org.openstreetmap.josm.tools.GBC;
    3034import org.openstreetmap.josm.tools.template_engine.ParseError;
    3135import org.openstreetmap.josm.tools.template_engine.TemplateParser;
    3236
    3337public class GPXSettingsPanel extends JPanel implements ValidationListener {
     38   
     39    public static class Factory implements PreferenceSettingFactory {
     40
     41        @Override
     42        public PreferenceSetting createPreferenceSetting() {
     43            return new DefaultTabPreferenceSetting(null, tr("GPS Points"), "") {
     44
     45                private GPXSettingsPanel gpx;
     46
     47                @Override
     48                public void addGui(PreferenceTabbedPane gui) {
     49                    createPreferenceTabWithScrollPane(gui, gpx = new GPXSettingsPanel());
     50                    gui.addValidationListener(gpx);
     51                }
     52
     53                @Override
     54                public boolean ok() {
     55                    gpx.savePreferences();
     56                    return false;
     57                }
     58            };
     59        }
     60    }
    3461
    3562    private static final int WAYPOINT_LABEL_CUSTOM = 6;
    3663    private static final String[] LABEL_PATTERN_TEMPLATE = new String[] {Marker.LABEL_PATTERN_AUTO, Marker.LABEL_PATTERN_NAME,
  • src/org/openstreetmap/josm/gui/preferences/display/LafPreference.java

    diff --git a/src/org/openstreetmap/josm/gui/preferences/display/LafPreference.java b/src/org/openstreetmap/josm/gui/preferences/display/LafPreference.java
    index bbdc128..ae95b7f 100644
    a b import javax.swing.JComboBox;  
    1414import javax.swing.JLabel;
    1515import javax.swing.JList;
    1616import javax.swing.JPanel;
    17 import javax.swing.JScrollPane;
    1817import javax.swing.ListCellRenderer;
    1918import javax.swing.UIManager;
    2019import javax.swing.UIManager.LookAndFeelInfo;
    2120
    2221import org.openstreetmap.josm.Main;
    2322import org.openstreetmap.josm.actions.ExpertToggleAction;
     23import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
    2424import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
    2525import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory;
    2626import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
    27 import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting;
    28 import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting;
    2927import org.openstreetmap.josm.tools.GBC;
    3028
    31 public class LafPreference implements SubPreferenceSetting {
     29public class LafPreference extends DefaultTabPreferenceSetting {
    3230
    3331    public static class Factory implements PreferenceSettingFactory {
    3432        public PreferenceSetting createPreferenceSetting() {
    public class LafPreference implements SubPreferenceSetting {  
    4745    private JCheckBox modeless = new JCheckBox(tr("Modeless working (Potlatch style)"));
    4846    private JCheckBox dynamicButtons = new JCheckBox(tr("Dynamic buttons in side menus"));
    4947
     48    public LafPreference() {
     49        super(null, tr("Look and Feel"), "");
     50    }
     51
    5052    public void addGui(PreferenceTabbedPane gui) {
    5153        lafCombo = new JComboBox(UIManager.getInstalledLookAndFeels());
    5254
    public class LafPreference implements SubPreferenceSetting {  
    113115        panel.add(GBC.glue(5,0), GBC.std().fill(GBC.HORIZONTAL));
    114116        panel.add(lafCombo, GBC.eol().fill(GBC.HORIZONTAL));
    115117
    116         JScrollPane scrollpane = new JScrollPane(panel);
    117         scrollpane.setBorder(BorderFactory.createEmptyBorder( 0, 0, 0, 0 ));
    118         gui.getDisplayPreference().displaycontent.addTab(tr("Look and Feel"), scrollpane);
     118        panel.add(Box.createVerticalGlue(), GBC.eol().fill(GBC.BOTH));
     119
     120        createPreferenceTabWithScrollPane(gui, panel);
    119121    }
    120122
    121123    public boolean ok() {
    public class LafPreference implements SubPreferenceSetting {  
    133135    public boolean isExpert() {
    134136        return false;
    135137    }
    136 
    137     @Override
    138     public TabPreferenceSetting getTabPreferenceSetting(final PreferenceTabbedPane gui) {
    139         return gui.getDisplayPreference();
    140     }
    141138}
  • src/org/openstreetmap/josm/gui/preferences/display/LanguagePreference.java

    diff --git a/src/org/openstreetmap/josm/gui/preferences/display/LanguagePreference.java b/src/org/openstreetmap/josm/gui/preferences/display/LanguagePreference.java
    index a4f52fa..b3443a0 100644
    a b import javax.swing.JPanel;  
    1919import javax.swing.ListCellRenderer;
    2020
    2121import org.openstreetmap.josm.Main;
     22import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
    2223import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
    2324import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory;
    2425import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
    25 import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting;
    26 import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting;
    2726import org.openstreetmap.josm.tools.GBC;
    2827import org.openstreetmap.josm.tools.I18n;
    2928
    30 public class LanguagePreference implements SubPreferenceSetting {
     29public class LanguagePreference extends DefaultTabPreferenceSetting {
    3130    public static class Factory implements PreferenceSettingFactory {
    3231        public PreferenceSetting createPreferenceSetting() {
    3332            return new LanguagePreference();
    public class LanguagePreference implements SubPreferenceSetting {  
    3938    /** the model for the combo box */
    4039    private LanguageComboBoxModel model;
    4140
     41    public LanguagePreference() {
     42        super(null, tr("Language"), "");
     43    }
     44
    4245    public void addGui(final PreferenceTabbedPane gui) {
    4346        model = new LanguageComboBoxModel();
    4447        // Selecting the language BEFORE the JComboBox listens to model changes speed up initialization by ~35ms (see #7386)
    public class LanguagePreference implements SubPreferenceSetting {  
    4750        langCombo = new JComboBox(model);
    4851        langCombo.setRenderer(new LanguageCellRenderer(langCombo.getRenderer()));
    4952
    50         LafPreference lafPreference = gui.getSetting(LafPreference.class);
    51         final JPanel panel = lafPreference.panel;
     53        final JPanel panel = new JPanel();
    5254        panel.add(new JLabel(tr("Language")), GBC.std().insets(20, 0, 0, 0));
    5355        panel.add(GBC.glue(5,0), GBC.std().fill(GBC.HORIZONTAL));
    5456        panel.add(langCombo, GBC.eol().fill(GBC.HORIZONTAL));
    55         panel.add(Box.createVerticalGlue(), GBC.eol().fill(GBC.BOTH));
     57        //panel.add(Box.createVerticalGlue(), GBC.eol().fill(GBC.BOTH));
     58        createPreferenceTabWithScrollPane(gui, panel);
    5659    }
    5760
    5861    public boolean ok() {
    public class LanguagePreference implements SubPreferenceSetting {  
    116119    public boolean isExpert() {
    117120        return false;
    118121    }
    119 
    120     @Override
    121     public TabPreferenceSetting getTabPreferenceSetting(final PreferenceTabbedPane gui) {
    122         return gui.getDisplayPreference();
    123     }
    124122}
  • src/org/openstreetmap/josm/gui/preferences/map/BackupPreference.java

    diff --git a/src/org/openstreetmap/josm/gui/preferences/map/BackupPreference.java b/src/org/openstreetmap/josm/gui/preferences/map/BackupPreference.java
    index 9aeb86d..cc71551 100644
    a b import javax.swing.JTextField;  
    1818
    1919import org.openstreetmap.josm.data.AutosaveTask;
    2020import org.openstreetmap.josm.data.preferences.BooleanProperty;
     21import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
    2122import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory;
    2223import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
    23 import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting;
    24 import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting;
    2524import org.openstreetmap.josm.gui.widgets.HtmlPanel;
    2625import org.openstreetmap.josm.gui.widgets.VerticallyScrollablePanel;
    2726import org.openstreetmap.josm.tools.GBC;
    2827
    29 public class BackupPreference implements SubPreferenceSetting {
     28public class BackupPreference extends DefaultTabPreferenceSetting {
    3029
    3130    public static class Factory implements PreferenceSettingFactory {
    3231        @Override
    public class BackupPreference implements SubPreferenceSetting {  
    9695        autosaveEnabled.actionPerformed(null);
    9796
    9897        panel.add(Box.createVerticalGlue(), GBC.eol().fill(GBC.BOTH));
    99         JScrollPane sp = new JScrollPane(panel);
    100         sp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
    101         sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
    10298
    103         gui.getMapPreference().mapcontent.addTab(tr("File backup"), null, sp, tr("Configure whether to create backup files"));
     99        createPreferenceTabWithScrollPane(gui, panel);
     100    }
     101
     102    @Override
     103    public String getIconName() {
     104        return null;
     105    }
     106
     107    @Override
     108    public String getTitle() {
     109        return tr("File backup");
     110    }
     111
     112    @Override
     113    public String getTooltip() {
     114        return tr("Configure whether to create backup files");
     115    }
     116
     117    @Override
     118    public String getDescription() {
     119        return getTooltip();
    104120    }
    105121
    106122    @Override
    public class BackupPreference implements SubPreferenceSetting {  
    118134    public boolean isExpert() {
    119135        return false;
    120136    }
    121 
    122     @Override
    123     public TabPreferenceSetting getTabPreferenceSetting(final PreferenceTabbedPane gui) {
    124         return gui.getMapPreference();
    125     }
    126137}
  • src/org/openstreetmap/josm/gui/preferences/map/MapPaintPreference.java

    diff --git a/src/org/openstreetmap/josm/gui/preferences/map/MapPaintPreference.java b/src/org/openstreetmap/josm/gui/preferences/map/MapPaintPreference.java
    index 7cf6051..4439973 100644
    a b import java.util.TreeSet;  
    1414import javax.swing.BorderFactory;
    1515import javax.swing.JCheckBox;
    1616import javax.swing.JPanel;
    17 import javax.swing.event.ChangeEvent;
    18 import javax.swing.event.ChangeListener;
    1917
    2018import org.openstreetmap.josm.Main;
    2119import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
     20import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
    2221import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
    2322import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory;
    2423import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
    2524import org.openstreetmap.josm.gui.preferences.SourceEditor;
    26 import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting;
    2725import org.openstreetmap.josm.gui.preferences.SourceEditor.ExtendedSourceEntry;
    2826import org.openstreetmap.josm.gui.preferences.SourceEntry;
    2927import org.openstreetmap.josm.gui.preferences.SourceProvider;
    30 import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting;
    3128import org.openstreetmap.josm.tools.GBC;
    3229import org.openstreetmap.josm.tools.Predicate;
    3330import org.openstreetmap.josm.tools.Utils;
    3431
    35 public class MapPaintPreference implements SubPreferenceSetting {
     32public class MapPaintPreference extends DefaultTabPreferenceSetting {
    3633    private SourceEditor sources;
    3734    private JCheckBox enableIconDefault;
    3835
    public class MapPaintPreference implements SubPreferenceSetting {  
    5047        }
    5148    }
    5249
     50    public MapPaintPreference() {
     51        super(null, tr("Map Paint Styles"), "");
     52    }
     53
     54    @Override
    5355    public void addGui(final PreferenceTabbedPane gui) {
    5456        enableIconDefault = new JCheckBox(tr("Enable built-in icon defaults"),
    5557                Main.pref.getBoolean("mappaint.icon.enable-defaults", true));
    public class MapPaintPreference implements SubPreferenceSetting {  
    6264        panel.add(sources, GBC.eol().fill(GBC.BOTH));
    6365        panel.add(enableIconDefault, GBC.eol().insets(11,2,5,0));
    6466
    65         gui.getMapPreference().mapcontent.addTab(tr("Map Paint Styles"), panel);
    66 
    67         // this defers loading of style sources to the first time the tab
    68         // with the map paint preferences is selected by the user
    69         //
    70         gui.getMapPreference().mapcontent.addChangeListener(
    71                 new ChangeListener() {
    72                     public void stateChanged(ChangeEvent e) {
    73                         if (gui.getMapPreference().mapcontent.getSelectedComponent() == panel) {
    74                             sources.initiallyLoadAvailableSources();
    75                         }
    76                     }
    77                 }
    78                 );
     67        createPreferenceTabWithScrollPane(gui, panel);
     68
     69        sources.initiallyLoadAvailableSources();
    7970    }
    8071
    8172    static class MapPaintSourceEditor extends SourceEditor {
    public class MapPaintPreference implements SubPreferenceSetting {  
    275266    public boolean isExpert() {
    276267        return false;
    277268    }
    278 
    279     @Override
    280     public TabPreferenceSetting getTabPreferenceSetting(final PreferenceTabbedPane gui) {
    281         return gui.getMapPreference();
    282     }
    283269}
  • src/org/openstreetmap/josm/gui/preferences/map/ProjectionPreference.java

    diff --git a/src/org/openstreetmap/josm/gui/preferences/map/ProjectionPreference.java b/src/org/openstreetmap/josm/gui/preferences/map/ProjectionPreference.java
    index b77be03..36428a4 100644
    a b import org.openstreetmap.josm.data.projection.Projection;  
    2828import org.openstreetmap.josm.data.projection.ProjectionSubPrefs;
    2929import org.openstreetmap.josm.data.projection.Projections;
    3030import org.openstreetmap.josm.gui.NavigatableComponent;
     31import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
    3132import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
    3233import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory;
    3334import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
    34 import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting;
    3535import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting;
    3636import org.openstreetmap.josm.plugins.PluginHandler;
    3737import org.openstreetmap.josm.tools.GBC;
    3838
    39 public class ProjectionPreference implements SubPreferenceSetting {
     39public class ProjectionPreference extends DefaultTabPreferenceSetting {
    4040
    4141    public static class Factory implements PreferenceSettingFactory {
    4242        public PreferenceSetting createPreferenceSetting() {
    public class ProjectionPreference implements SubPreferenceSetting {  
    9999     */
    100100    static private GBC projSubPrefPanelGBC = GBC.std().fill(GBC.BOTH).weight(1.0, 1.0);
    101101
     102    public ProjectionPreference() {
     103        super(null, tr("Map Projection"), "");
     104    }
     105
    102106    public void addGui(PreferenceTabbedPane gui) {
    103107        setupProjectionCombo();
    104108
    public class ProjectionPreference implements SubPreferenceSetting {  
    139143        projPanel.add(unitsCombo, GBC.eop().fill(GBC.HORIZONTAL).insets(0,5,5,5));
    140144        projPanel.add(GBC.glue(1,1), GBC.std().fill(GBC.HORIZONTAL).weight(1.0, 1.0));
    141145
    142         JScrollPane scrollpane = new JScrollPane(projPanel);
    143         gui.getMapPreference().mapcontent.addTab(tr("Map Projection"), scrollpane);
     146        createPreferenceTabWithScrollPane(gui, projPanel);
    144147
    145148        updateMeta(Main.getProjection());
    146149    }
    public class ProjectionPreference implements SubPreferenceSetting {  
    297300    public boolean isExpert() {
    298301        return false;
    299302    }
    300 
    301     @Override
    302     public TabPreferenceSetting getTabPreferenceSetting(final PreferenceTabbedPane gui) {
    303         return gui.getMapPreference();
    304     }
    305303}
  • src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java

    diff --git a/src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java b/src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java
    index 788f549..60dae55 100644
    a b import javax.swing.JMenu;  
    2020import javax.swing.JMenuItem;
    2121import javax.swing.JOptionPane;
    2222import javax.swing.JPanel;
     23import javax.swing.JScrollPane;
    2324import javax.swing.JSeparator;
    2425import javax.swing.event.ChangeEvent;
    2526import javax.swing.event.ChangeListener;
    2627
    2728import org.openstreetmap.josm.Main;
    2829import org.openstreetmap.josm.gui.ExtendedDialog;
     30import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
    2931import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
    3032import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory;
    3133import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
    32 import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting;
    3334import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane.ValidationListener;
    3435import org.openstreetmap.josm.gui.preferences.SourceEditor;
    3536import org.openstreetmap.josm.gui.preferences.SourceEditor.ExtendedSourceEntry;
    3637import org.openstreetmap.josm.gui.preferences.SourceEntry;
    3738import org.openstreetmap.josm.gui.preferences.SourceProvider;
    38 import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting;
    3939import org.openstreetmap.josm.gui.tagging.TaggingPreset;
    4040import org.openstreetmap.josm.gui.tagging.TaggingPresetMenu;
    4141import org.openstreetmap.josm.gui.tagging.TaggingPresetSeparator;
    import org.openstreetmap.josm.tools.GBC;  
    4444import org.xml.sax.SAXException;
    4545import org.xml.sax.SAXParseException;
    4646
    47 public class TaggingPresetPreference implements SubPreferenceSetting {
     47public class TaggingPresetPreference extends DefaultTabPreferenceSetting {
    4848
    4949    public static class Factory implements PreferenceSettingFactory {
    5050        public PreferenceSetting createPreferenceSetting() {
    public class TaggingPresetPreference implements SubPreferenceSetting {  
    5353    }
    5454   
    5555    private TaggingPresetPreference() {
    56         super();
     56        super(null, tr("Tagging Presets"), "");
    5757    }
    5858
    5959    private static final List<SourceProvider> presetSourceProviders = new ArrayList<SourceProvider>();
    public class TaggingPresetPreference implements SubPreferenceSetting {  
    153153        }
    154154    };
    155155
     156    @Override
    156157    public void addGui(final PreferenceTabbedPane gui) {
    157158        sortMenu = new JCheckBox(tr("Sort presets menu"),
    158159                Main.pref.getBoolean("taggingpreset.sortmenu", false));
    public class TaggingPresetPreference implements SubPreferenceSetting {  
    162163        panel.add(sortMenu, GBC.eol().insets(5,5,5,0));
    163164        sources = new TaggingPresetSourceEditor();
    164165        panel.add(sources, GBC.eol().fill(GBC.BOTH));
    165         gui.getMapPreference().mapcontent.addTab(tr("Tagging Presets"), panel);
    166 
    167         // this defers loading of tagging preset sources to the first time the tab
    168         // with the tagging presets is selected by the user
    169         //
    170         gui.getMapPreference().mapcontent.addChangeListener(
    171                 new ChangeListener() {
    172                     public void stateChanged(ChangeEvent e) {
    173                         if (gui.getMapPreference().mapcontent.getSelectedComponent() == panel) {
    174                             sources.initiallyLoadAvailableSources();
    175                         }
    176                     }
    177                 }
    178                 );
    179         gui.addValidationListener(validationListener);
     166       
     167        createPreferenceTabWithScrollPane(gui, panel);
     168
     169        sources.initiallyLoadAvailableSources();
    180170    }
    181171
    182172    static class TaggingPresetSourceEditor extends SourceEditor {
    public class TaggingPresetPreference implements SubPreferenceSetting {  
    342332    public boolean isExpert() {
    343333        return false;
    344334    }
    345 
    346     @Override
    347     public TabPreferenceSetting getTabPreferenceSetting(final PreferenceTabbedPane gui) {
    348         return gui.getMapPreference();
    349     }
    350335}
  • src/org/openstreetmap/josm/gui/preferences/server/ProxyPreferencesPanel.java

    diff --git a/src/org/openstreetmap/josm/gui/preferences/server/ProxyPreferencesPanel.java b/src/org/openstreetmap/josm/gui/preferences/server/ProxyPreferencesPanel.java
    index 0199c4f..cf33530 100644
    a b import javax.swing.JTextField;  
    2828import org.openstreetmap.josm.Main;
    2929import org.openstreetmap.josm.gui.JMultilineLabel;
    3030import org.openstreetmap.josm.gui.help.HelpUtil;
     31import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
     32import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
     33import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory;
     34import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
    3135import org.openstreetmap.josm.gui.widgets.VerticallyScrollablePanel;
    3236import org.openstreetmap.josm.io.DefaultProxySelector;
    3337import org.openstreetmap.josm.io.auth.CredentialsAgent;
    import org.openstreetmap.josm.tools.GBC;  
    3741
    3842public class ProxyPreferencesPanel extends VerticallyScrollablePanel {
    3943
     44    public static class Factory implements PreferenceSettingFactory {
     45
     46        @Override
     47        public PreferenceSetting createPreferenceSetting() {
     48            return new DefaultTabPreferenceSetting(null, tr("Proxy settings"), tr("Configure whether to use a proxy server")) {
     49
     50                private ProxyPreferencesPanel pnlProxyPreferences;
     51
     52                @Override
     53                public void addGui(PreferenceTabbedPane gui) {
     54                    createPreferenceTabWithScrollPane(gui, pnlProxyPreferences = new ProxyPreferencesPanel());
     55                    pnlProxyPreferences.initFromPreferences();
     56                }
     57
     58                @Override
     59                public boolean ok() {
     60                    pnlProxyPreferences.saveToPreferences();
     61                    return false;
     62                }
     63            };
     64        }
     65    }
     66
    4067    public enum ProxyPolicy {
    4168        NO_PROXY("no-proxy"),
    4269        USE_SYSTEM_SETTINGS("use-system-settings"),