Ticket #7548: 7548_v02.patch

File 7548_v02.patch, 47.8 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 238daac..cb8d8e8 100644
    a b import org.openstreetmap.josm.gui.mappaint.MapPaintStyles.MapPaintSylesUpdateLis  
    6969import org.openstreetmap.josm.gui.mappaint.StyleSource;
    7070import org.openstreetmap.josm.gui.preferences.PreferenceDialog;
    7171import org.openstreetmap.josm.gui.preferences.SourceEntry;
     72import org.openstreetmap.josm.gui.preferences.map.MapPaintPreference;
    7273import org.openstreetmap.josm.gui.widgets.HtmlPanel;
    7374import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher;
    7475import org.openstreetmap.josm.tools.GBC;
    public class MapPaintDialog extends ToggleDialog {  
    452453        @Override
    453454        public void actionPerformed(ActionEvent e) {
    454455            final PreferenceDialog p =new PreferenceDialog(Main.parent);
    455             p.selectMapPaintPreferenceTab();
     456            p.selectPreferencesTabByClass(MapPaintPreference.class);
    456457            p.setVisible(true);
    457458        }
    458459    }
  • 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 9c8bc7e..367a00c 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.TaggingPresetPreference;
    4243import org.openstreetmap.josm.gui.preferences.projection.ProjectionPreference;
     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/RemoteControlPreference.java

    diff --git a/src/org/openstreetmap/josm/gui/preferences/RemoteControlPreference.java b/src/org/openstreetmap/josm/gui/preferences/RemoteControlPreference.java
    index ef636b0..01674f9 100644
    a b public class RemoteControlPreference extends DefaultTabPreferenceSetting {  
    105105        };
    106106        enableRemoteControl.addActionListener(remoteControlEnabled);
    107107        remoteControlEnabled.actionPerformed(null);
    108         createPreferenceTabWithScrollPane(gui, remote);
     108        //createPreferenceTabWithScrollPane(gui, remote);
     109        gui.createPreferenceTab(this).add(remote, GBC.eol().fill(GBC.BOTH));
    109110    }
    110111
    111112    @Override
  • 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 5a13619..4c7753d 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 org.openstreetmap.josm.tools.GBC;
     7import sun.awt.VerticalBagLayout;
    118import javax.swing.JPanel;
    12 import javax.swing.JScrollPane;
    13 import javax.swing.JTabbedPane;
    14 
    159import org.openstreetmap.josm.gui.help.HelpUtil;
    1610import org.openstreetmap.josm.gui.preferences.server.AuthenticationPreferencesPanel;
    1711import org.openstreetmap.josm.gui.preferences.server.OsmApiUrlInputPanel;
    18 import org.openstreetmap.josm.gui.preferences.server.ProxyPreferencesPanel;
    19 import org.openstreetmap.josm.gui.widgets.VerticallyScrollablePanel;
     12
    2013public class ServerAccessPreference extends DefaultTabPreferenceSetting {
    2114
    2215    public static class Factory implements PreferenceSettingFactory {
    public class ServerAccessPreference extends DefaultTabPreferenceSetting {  
    2619    }
    2720   
    2821    private ServerAccessPreference() {
    29         super("connection", tr("Connection Settings"), tr("Connection Settings for the OSM server."));
     22        super("connection", tr("Connection Settings"),
     23                tr("Connection Settings for the OSM server as well as your identity and how to authenticate at the OSM server."));
    3024    }
    3125
    3226    private OsmApiUrlInputPanel pnlApiUrlPreferences;
    3327
    34     private JTabbedPane tpServerPreferences;
    3528    /** indicates whether to use the default OSM URL or not */
    3629    /** panel for configuring authentication preferences */
    3730    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 {@link 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     }
    7631
    7732    /**
    7833     * Builds the panel for entering the server access preferences
    public class ServerAccessPreference extends DefaultTabPreferenceSetting {  
    8035     * @return
    8136     */
    8237    protected JPanel buildContentPanel() {
    83         JPanel pnl = new JPanel(new GridBagLayout());
    84         GridBagConstraints gc = new GridBagConstraints();
     38        JPanel pnl = new JPanel(new VerticalBagLayout(20));
    8539
    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);
     40        pnl.add(pnlApiUrlPreferences = new OsmApiUrlInputPanel());
     41        pnl.add(pnlAuthPreferences = new AuthenticationPreferencesPanel());
    10042
    10143        // let the AuthPreferencesPanel know when the API URL changes
    102         //
    10344        pnlApiUrlPreferences.addPropertyChangeListener(pnlAuthPreferences);
    10445
    10546        HelpUtil.setHelpContext(pnl, HelpUtil.ht("/Preferences/Connection"));
    public class ServerAccessPreference extends DefaultTabPreferenceSetting {  
    10748    }
    10849
    10950    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 
     51        //createPreferenceTabWithScrollPane(gui, buildContentPanel());
     52        gui.createPreferenceTab(this).add(buildContentPanel(), GBC.eol().fill(GBC.BOTH));
    11753        initFromPreferences();
    11854    }
    11955
    public class ServerAccessPreference extends DefaultTabPreferenceSetting {  
    12359    public void initFromPreferences() {
    12460        pnlApiUrlPreferences.initFromPreferences();
    12561        pnlAuthPreferences.initFromPreferences();
    126         pnlProxyPreferences.initFromPreferences();
    12762    }
    12863
    12964    /**
    public class ServerAccessPreference extends DefaultTabPreferenceSetting {  
    13267    public boolean ok() {
    13368        pnlApiUrlPreferences.saveToPreferences();
    13469        pnlAuthPreferences.saveToPreferences();
    135         pnlProxyPreferences.saveToPreferences();
    13670        return false;
    13771    }
    13872}
  • 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 3adeda9..652a76f 100644
    a b public class ToolbarPreferences implements PreferenceSettingFactory {  
    500500        private String movingComponent;
    501501
    502502        public Settings(DefaultMutableTreeNode rootActionsNode) {
    503             super("toolbar", tr("Toolbar customization"), tr("Customize the elements on the toolbar."));
     503            super("toolbar", tr("Toolbar"), tr("Customize the elements on the toolbar."));
    504504            actionsTreeModel = new DefaultTreeModel(rootActionsNode);
    505505            actionsTree = new JTree(actionsTreeModel);
    506506        }
  • 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..0bd4bde 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"), "");
     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..c80a1c4 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");
    104115    }
    105116
    106117    @Override
    public class BackupPreference implements SubPreferenceSetting {  
    115126    }
    116127
    117128    @Override
    118     public boolean isExpert() {
    119         return false;
     129    public String getDescription() {
     130        return getTooltip();
    120131    }
    121132
    122133    @Override
    123     public TabPreferenceSetting getTabPreferenceSetting(final PreferenceTabbedPane gui) {
    124         return gui.getMapPreference();
     134    public boolean isExpert() {
     135        return false;
    125136    }
    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 2240073..20536a7 100644
    a b import java.util.HashMap;  
    1212import java.util.List;
    1313import java.util.Map;
    1414import java.util.TreeSet;
    15 
    1615import javax.swing.BorderFactory;
    1716import javax.swing.JCheckBox;
    1817import javax.swing.JPanel;
    19 import javax.swing.event.ChangeEvent;
    20 import javax.swing.event.ChangeListener;
    21 
    2218import org.openstreetmap.josm.Main;
    2319import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
     20import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
    2421import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
    2522import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory;
    2623import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
    import org.openstreetmap.josm.gui.preferences.SourceEditor;  
    2825import org.openstreetmap.josm.gui.preferences.SourceEditor.ExtendedSourceEntry;
    2926import org.openstreetmap.josm.gui.preferences.SourceEntry;
    3027import org.openstreetmap.josm.gui.preferences.SourceProvider;
    31 import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting;
    32 import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting;
    3328import org.openstreetmap.josm.tools.GBC;
    3429import org.openstreetmap.josm.tools.Predicate;
    3530import org.openstreetmap.josm.tools.Utils;
    3631
    37 public class MapPaintPreference implements SubPreferenceSetting {
     32public class MapPaintPreference extends DefaultTabPreferenceSetting {
    3833    private SourceEditor sources;
    3934    private JCheckBox enableIconDefault;
    4035
    public class MapPaintPreference implements SubPreferenceSetting {  
    5247        }
    5348    }
    5449
     50    public MapPaintPreference() {
     51        super(null, tr("Map Paint Styles"), "");
     52    }
     53
     54    @Override
    5555    public void addGui(final PreferenceTabbedPane gui) {
    5656        enableIconDefault = new JCheckBox(tr("Enable built-in icon defaults"),
    5757                Main.pref.getBoolean("mappaint.icon.enable-defaults", true));
    public class MapPaintPreference implements SubPreferenceSetting {  
    6464        panel.add(sources, GBC.eol().fill(GBC.BOTH));
    6565        panel.add(enableIconDefault, GBC.eol().insets(11,2,5,0));
    6666
    67         gui.getMapPreference().mapcontent.addTab(tr("Map Paint Styles"), panel);
    68 
    69         // this defers loading of style sources to the first time the tab
    70         // with the map paint preferences is selected by the user
    71         //
    72         gui.getMapPreference().mapcontent.addChangeListener(
    73                 new ChangeListener() {
    74                     public void stateChanged(ChangeEvent e) {
    75                         if (gui.getMapPreference().mapcontent.getSelectedComponent() == panel) {
    76                             sources.initiallyLoadAvailableSources();
    77                         }
    78                     }
    79                 }
    80                 );
     67        //createPreferenceTabWithScrollPane(gui, panel);
     68        gui.createPreferenceTab(this).add(panel, GBC.eol().fill(GBC.BOTH));
     69
     70        sources.initiallyLoadAvailableSources();
    8171    }
    8272
    8373    static class MapPaintSourceEditor extends SourceEditor {
    public class MapPaintPreference implements SubPreferenceSetting {  
    286276    public boolean isExpert() {
    287277        return false;
    288278    }
    289 
    290     @Override
    291     public TabPreferenceSetting getTabPreferenceSetting(final PreferenceTabbedPane gui) {
    292         return gui.getMapPreference();
    293     }
    294279}
  • 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 c12a232..2b63ef7 100644
    a b import java.util.Collections;  
    1212import java.util.HashMap;
    1313import java.util.List;
    1414import java.util.Map;
    15 
    1615import javax.swing.BorderFactory;
    1716import javax.swing.JCheckBox;
    1817import javax.swing.JLabel;
    import javax.swing.JMenuItem;  
    2120import javax.swing.JOptionPane;
    2221import javax.swing.JPanel;
    2322import javax.swing.JSeparator;
    24 import javax.swing.event.ChangeEvent;
    25 import javax.swing.event.ChangeListener;
    26 
    2723import org.openstreetmap.josm.Main;
    2824import org.openstreetmap.josm.gui.ExtendedDialog;
     25import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
    2926import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
    3027import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory;
    3128import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
    import org.openstreetmap.josm.gui.preferences.SourceEditor;  
    3431import org.openstreetmap.josm.gui.preferences.SourceEditor.ExtendedSourceEntry;
    3532import org.openstreetmap.josm.gui.preferences.SourceEntry;
    3633import org.openstreetmap.josm.gui.preferences.SourceProvider;
    37 import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting;
    38 import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting;
    3934import org.openstreetmap.josm.gui.tagging.TaggingPreset;
    4035import org.openstreetmap.josm.gui.tagging.TaggingPresetMenu;
    4136import org.openstreetmap.josm.gui.tagging.TaggingPresetSeparator;
    import org.openstreetmap.josm.tools.GBC;  
    4439import org.xml.sax.SAXException;
    4540import org.xml.sax.SAXParseException;
    4641
    47 public class TaggingPresetPreference implements SubPreferenceSetting {
     42public class TaggingPresetPreference extends DefaultTabPreferenceSetting {
    4843
    4944    public static class Factory implements PreferenceSettingFactory {
    5045        public PreferenceSetting createPreferenceSetting() {
    public class TaggingPresetPreference implements SubPreferenceSetting {  
    5348    }
    5449
    5550    private TaggingPresetPreference() {
    56         super();
     51        super(null, tr("Tagging Presets"), "");
    5752    }
    5853
    5954    private static final List<SourceProvider> presetSourceProviders = new ArrayList<SourceProvider>();
    public class TaggingPresetPreference implements SubPreferenceSetting {  
    153148        }
    154149    };
    155150
     151    @Override
    156152    public void addGui(final PreferenceTabbedPane gui) {
    157153        sortMenu = new JCheckBox(tr("Sort presets menu"),
    158154                Main.pref.getBoolean("taggingpreset.sortmenu", false));
    public class TaggingPresetPreference implements SubPreferenceSetting {  
    162158        panel.add(sortMenu, GBC.eol().insets(5,5,5,0));
    163159        sources = new TaggingPresetSourceEditor();
    164160        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);
     161       
     162        //createPreferenceTabWithScrollPane(gui, panel);
     163        gui.createPreferenceTab(this).add(panel, GBC.eol().fill(GBC.BOTH));
     164
     165        sources.initiallyLoadAvailableSources();
    180166    }
    181167
    182168    static class TaggingPresetSourceEditor extends SourceEditor {
    public class TaggingPresetPreference implements SubPreferenceSetting {  
    353339    public boolean isExpert() {
    354340        return false;
    355341    }
    356 
    357     @Override
    358     public TabPreferenceSetting getTabPreferenceSetting(final PreferenceTabbedPane gui) {
    359         return gui.getMapPreference();
    360     }
    361342}
  • 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..0e3c8a6 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;
    3438import org.openstreetmap.josm.io.auth.CredentialsAgentException;
    3539import org.openstreetmap.josm.io.auth.CredentialsManager;
    3640import org.openstreetmap.josm.tools.GBC;
     41import sun.awt.VerticalBagLayout;
    3742
    3843public class ProxyPreferencesPanel extends VerticallyScrollablePanel {
    3944
     45    public static class Factory implements PreferenceSettingFactory {
     46
     47        @Override
     48        public PreferenceSetting createPreferenceSetting() {
     49            return new DefaultTabPreferenceSetting(null, tr("Proxy settings"), tr("Configure whether to use a proxy server")) {
     50
     51                private ProxyPreferencesPanel pnlProxyPreferences;
     52
     53                @Override
     54                public void addGui(PreferenceTabbedPane gui) {
     55                    //createPreferenceTabWithScrollPane(gui, pnlProxyPreferences = new ProxyPreferencesPanel());
     56                    pnlProxyPreferences = new ProxyPreferencesPanel();
     57                    gui.createPreferenceTab(this).add(pnlProxyPreferences, GBC.eol().fill(GBC.BOTH));
     58                    pnlProxyPreferences.initFromPreferences();
     59                }
     60
     61                @Override
     62                public boolean ok() {
     63                    pnlProxyPreferences.saveToPreferences();
     64                    return false;
     65                }
     66            };
     67        }
     68    }
     69
    4070    public enum ProxyPolicy {
    4171        NO_PROXY("no-proxy"),
    4272        USE_SYSTEM_SETTINGS("use-system-settings"),
    public class ProxyPreferencesPanel extends VerticallyScrollablePanel {  
    361391    }
    362392
    363393    public ProxyPreferencesPanel() {
    364         setLayout(new GridBagLayout());
    365         setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
    366         add(buildProxySettingsPanel(), GBC.eop().anchor(GridBagConstraints.NORTHWEST).fill(GridBagConstraints.BOTH));
     394        setLayout(new VerticalBagLayout(20));
     395
     396        add(buildProxySettingsPanel());
    367397
    368398        initFromPreferences();
    369399        updateEnabledState();