Index: src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java =================================================================== --- src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java (revision 5506) +++ src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java (working copy) @@ -68,6 +68,7 @@ import org.openstreetmap.josm.gui.mappaint.StyleSource; import org.openstreetmap.josm.gui.preferences.PreferenceDialog; import org.openstreetmap.josm.gui.preferences.SourceEntry; +import org.openstreetmap.josm.gui.preferences.map.MapPaintPreference; import org.openstreetmap.josm.gui.widgets.HtmlPanel; import org.openstreetmap.josm.gui.widgets.JFileChooserManager; import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher; @@ -452,7 +453,7 @@ @Override public void actionPerformed(ActionEvent e) { final PreferenceDialog p =new PreferenceDialog(Main.parent); - p.selectMapPaintPreferenceTab(); + p.selectPreferencesTabByClass(MapPaintPreference.class); p.setVisible(true); } } Index: src/org/openstreetmap/josm/gui/preferences/DefaultTabPreferenceSetting.java =================================================================== --- src/org/openstreetmap/josm/gui/preferences/DefaultTabPreferenceSetting.java (revision 5506) +++ src/org/openstreetmap/josm/gui/preferences/DefaultTabPreferenceSetting.java (working copy) @@ -1,65 +1,66 @@ -// License: GPL. For details, see LICENSE file. -package org.openstreetmap.josm.gui.preferences; - -import javax.swing.JPanel; -import javax.swing.JScrollPane; - -import org.openstreetmap.josm.tools.GBC; - -public abstract class DefaultTabPreferenceSetting extends DefaultPreferenceSetting implements TabPreferenceSetting { - - private final String iconName; - private final String description; - private final String title; - - public DefaultTabPreferenceSetting() { - this(null, null, null); - } - - public DefaultTabPreferenceSetting(String iconName, String title, String description) { - this(iconName, title, description, false); - } - - public DefaultTabPreferenceSetting(String iconName, String title, String description, boolean isExpert) { - super(isExpert); - this.iconName = iconName; - this.description = description; - this.title = title; - } - - @Override - public String getIconName() { - return iconName; - } - - @Override - public String getTooltip() { - if (getDescription() != null) { - return ""+getDescription()+""; - } else { - return null; - } - } - - @Override - public String getDescription() { - return description; - } - - @Override - public String getTitle() { - return title; - } - - protected final void createPreferenceTabWithScrollPane(PreferenceTabbedPane gui, JPanel panel) { - GBC a = GBC.eol().insets(-5,0,0,0); - a.anchor = GBC.EAST; - - JScrollPane scrollPane = new JScrollPane(panel, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); - scrollPane.setBorder(null); - - JPanel tab = gui.createPreferenceTab(this); - tab.add(scrollPane, GBC.eol().fill(GBC.BOTH)); - tab.add(GBC.glue(0,10), a); - } -} +// License: GPL. For details, see LICENSE file. +package org.openstreetmap.josm.gui.preferences; + +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.JScrollPane; + +import org.openstreetmap.josm.tools.GBC; + +public abstract class DefaultTabPreferenceSetting extends DefaultPreferenceSetting implements TabPreferenceSetting { + + private final String iconName; + private final String description; + private final String title; + + public DefaultTabPreferenceSetting() { + this(null, null, null); + } + + public DefaultTabPreferenceSetting(String iconName, String title, String description) { + this(iconName, title, description, false); + } + + public DefaultTabPreferenceSetting(String iconName, String title, String description, boolean isExpert) { + super(isExpert); + this.iconName = iconName; + this.description = description; + this.title = title; + } + + @Override + public String getIconName() { + return iconName; + } + + @Override + public String getTooltip() { + if (getDescription() != null) { + return ""+getDescription()+""; + } else { + return null; + } + } + + @Override + public String getDescription() { + return description; + } + + @Override + public String getTitle() { + return title; + } + + protected final void createPreferenceTabWithScrollPane(PreferenceTabbedPane gui, JComponent panel) { + GBC a = GBC.eol().insets(-5,0,0,0); + a.anchor = GBC.EAST; + + JScrollPane scrollPane = new JScrollPane(panel, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); + scrollPane.setBorder(null); + + JPanel tab = gui.createPreferenceTab(this); + tab.add(scrollPane, GBC.eol().fill(GBC.BOTH)); + tab.add(GBC.glue(0,10), a); + } +} Index: src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java =================================================================== --- src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java (revision 5506) +++ src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java (working copy) @@ -500,7 +500,7 @@ private String movingComponent; public Settings(DefaultMutableTreeNode rootActionsNode) { - super("toolbar", tr("Toolbar customization"), tr("Customize the elements on the toolbar.")); + super("toolbar", tr("Toolbar"), tr("Customize the elements on the toolbar.")); actionsTreeModel = new DefaultTreeModel(rootActionsNode); actionsTree = new JTree(actionsTreeModel); } Index: src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java =================================================================== --- src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java (revision 5506) +++ src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java (working copy) @@ -33,6 +33,7 @@ import org.openstreetmap.josm.gui.preferences.display.ColorPreference; import org.openstreetmap.josm.gui.preferences.display.DisplayPreference; import org.openstreetmap.josm.gui.preferences.display.DrawingPreference; +import org.openstreetmap.josm.gui.preferences.display.GPXSettingsPanel; import org.openstreetmap.josm.gui.preferences.display.LafPreference; import org.openstreetmap.josm.gui.preferences.display.LanguagePreference; import org.openstreetmap.josm.gui.preferences.imagery.ImageryPreference; @@ -41,6 +42,7 @@ import org.openstreetmap.josm.gui.preferences.map.MapPreference; import org.openstreetmap.josm.gui.preferences.map.TaggingPresetPreference; import org.openstreetmap.josm.gui.preferences.projection.ProjectionPreference; +import org.openstreetmap.josm.gui.preferences.server.ProxyPreferencesPanel; import org.openstreetmap.josm.gui.preferences.shortcut.ShortcutPreference; import org.openstreetmap.josm.plugins.PluginDownloadTask; import org.openstreetmap.josm.plugins.PluginHandler; @@ -338,7 +340,11 @@ int position = index; for (PreferenceTab tab : tabs) { if (tab.getTabPreferenceSetting().equals(tps)) { - insertTab(null, icon, tab.getComponent(), tps.getTooltip(), position++); + if (tps instanceof IconPreferenceSetting) { + insertTab(null, icon, tab.getComponent(), tps.getTooltip(), position++); + } else { + insertTab(tps.getTitle(), null, tab.getComponent(), tps.getTooltip(), position++); + } } } } @@ -366,7 +372,11 @@ addGUITabsForSetting(icon, tps); } else { // If it has not been initialized, create an empty tab with only icon and tooltip - addTab(null, icon, new PreferencePanel(tps), tps.getTooltip()); + if (tps instanceof IconPreferenceSetting) { + addTab(null, icon, new PreferencePanel(tps), tps.getTooltip()); + } else { + addTab(tps.getTitle(), null, new PreferencePanel(tps), tps.getTooltip()); + } } } } @@ -396,33 +406,74 @@ return null; } + static class IconPreferenceSetting extends DefaultTabPreferenceSetting { + + public static class Factory implements PreferenceSettingFactory { + + private final String iconName, title, description; + + public Factory(String iconName, String title, String description) { + this.iconName = iconName; + this.title = title; + this.description = description; + } + + @Override + public PreferenceSetting createPreferenceSetting() { + return new IconPreferenceSetting(iconName, title, description); + } + } + + public IconPreferenceSetting(String iconName, String title, String description) { + super(iconName, title, description); + } + + @Override + public void addGui(PreferenceTabbedPane gui) { + createPreferenceTabWithScrollPane(gui, new JPanel()); + } + + @Override + public boolean ok() { + return false; + } + } + static { + // order is important! - settingsFactory.add(new DisplayPreference.Factory()); + settingsFactory.add(new IconPreferenceSetting.Factory("map", tr("Mapping"), "")); settingsFactory.add(new DrawingPreference.Factory()); + settingsFactory.add(new GPXSettingsPanel.Factory()); + settingsFactory.add(new ProjectionPreference.Factory()); + settingsFactory.add(new MapPaintPreference.Factory()); + settingsFactory.add(new TaggingPresetPreference.Factory()); + settingsFactory.add(new ImageryPreference.Factory()); + + settingsFactory.add(new IconPreferenceSetting.Factory("connection", tr("Server"), tr("Connection Settings for the OSM server."))); + settingsFactory.add(new ServerAccessPreference.Factory()); + settingsFactory.add(new ProxyPreferencesPanel.Factory()); + + settingsFactory.add(new IconPreferenceSetting.Factory("display", tr("User Interface"), tr("Various settings that influence the visual representation of the whole program."))); settingsFactory.add(new ColorPreference.Factory()); settingsFactory.add(new LafPreference.Factory()); settingsFactory.add(new LanguagePreference.Factory()); - settingsFactory.add(new ServerAccessPreference.Factory()); - settingsFactory.add(new MapPreference.Factory()); - settingsFactory.add(new ProjectionPreference.Factory()); - settingsFactory.add(new MapPaintPreference.Factory()); - settingsFactory.add(new TaggingPresetPreference.Factory()); settingsFactory.add(new BackupPreference.Factory()); - if(!Main.applet) { - settingsFactory.add(new PluginPreference.Factory()); - } settingsFactory.add(Main.toolbar); + settingsFactory.add(new ShortcutPreference.Factory()); + + settingsFactory.add(new IconPreferenceSetting.Factory("advanced", tr("Advanced Preferences"), "")); settingsFactory.add(new AudioPreference.Factory()); - settingsFactory.add(new ShortcutPreference.Factory()); settingsFactory.add(new ValidatorPreference.Factory()); settingsFactory.add(new RemoteControlPreference.Factory()); - settingsFactory.add(new ImageryPreference.Factory()); + settingsFactory.add(new AdvancedPreference.Factory()); + settingsFactory.add(new IconPreferenceSetting.Factory("plugin", tr("Plugins"), tr("Install new plugins or configure installed plugins."))); + if(!Main.applet) { + settingsFactory.add(new PluginPreference.Factory()); + } PluginHandler.getPreferenceSetting(settingsFactory); - // always the last: advanced tab - settingsFactory.add(new AdvancedPreference.Factory()); } /** Index: src/org/openstreetmap/josm/gui/preferences/display/GPXSettingsPanel.java =================================================================== --- src/org/openstreetmap/josm/gui/preferences/display/GPXSettingsPanel.java (revision 5506) +++ src/org/openstreetmap/josm/gui/preferences/display/GPXSettingsPanel.java (working copy) @@ -24,6 +24,10 @@ import org.openstreetmap.josm.actions.ExpertToggleAction; import org.openstreetmap.josm.gui.layer.markerlayer.Marker; import org.openstreetmap.josm.gui.layer.markerlayer.Marker.TemplateEntryProperty; +import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting; +import org.openstreetmap.josm.gui.preferences.PreferenceSetting; +import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory; +import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane; import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane.ValidationListener; import org.openstreetmap.josm.gui.widgets.JosmComboBox; import org.openstreetmap.josm.tools.GBC; @@ -31,7 +35,30 @@ import org.openstreetmap.josm.tools.template_engine.TemplateParser; public class GPXSettingsPanel extends JPanel implements ValidationListener { + + public static class Factory implements PreferenceSettingFactory { + @Override + public PreferenceSetting createPreferenceSetting() { + return new DefaultTabPreferenceSetting(null, tr("GPS Points"), "") { + + private GPXSettingsPanel gpx; + + @Override + public void addGui(PreferenceTabbedPane gui) { + createPreferenceTabWithScrollPane(gui, gpx = new GPXSettingsPanel()); + gui.addValidationListener(gpx); + } + + @Override + public boolean ok() { + gpx.savePreferences(); + return false; + } + }; + } + } + private static final int WAYPOINT_LABEL_CUSTOM = 6; private static final String[] LABEL_PATTERN_TEMPLATE = new String[] {Marker.LABEL_PATTERN_AUTO, Marker.LABEL_PATTERN_NAME, Marker.LABEL_PATTERN_DESC, "{special:everything}", "?{ '{name}' | '{desc}' | '{formattedWaypointOffset}' }", ""}; Index: src/org/openstreetmap/josm/gui/preferences/display/LafPreference.java =================================================================== --- src/org/openstreetmap/josm/gui/preferences/display/LafPreference.java (revision 5506) +++ src/org/openstreetmap/josm/gui/preferences/display/LafPreference.java (working copy) @@ -13,22 +13,20 @@ import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; -import javax.swing.JScrollPane; import javax.swing.ListCellRenderer; import javax.swing.UIManager; import javax.swing.UIManager.LookAndFeelInfo; import org.openstreetmap.josm.Main; import org.openstreetmap.josm.actions.ExpertToggleAction; +import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting; import org.openstreetmap.josm.gui.preferences.PreferenceSetting; import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory; import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane; -import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting; -import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting; import org.openstreetmap.josm.gui.widgets.JosmComboBox; import org.openstreetmap.josm.tools.GBC; -public class LafPreference implements SubPreferenceSetting { +public class LafPreference extends DefaultTabPreferenceSetting { public static class Factory implements PreferenceSettingFactory { public PreferenceSetting createPreferenceSetting() { @@ -47,6 +45,10 @@ private JCheckBox modeless = new JCheckBox(tr("Modeless working (Potlatch style)")); private JCheckBox dynamicButtons = new JCheckBox(tr("Dynamic buttons in side menus")); + public LafPreference() { + super(null, tr("Look and Feel"), ""); + } + public void addGui(PreferenceTabbedPane gui) { lafCombo = new JosmComboBox(UIManager.getInstalledLookAndFeels()); @@ -113,9 +115,9 @@ panel.add(GBC.glue(5,0), GBC.std().fill(GBC.HORIZONTAL)); panel.add(lafCombo, GBC.eol().fill(GBC.HORIZONTAL)); - JScrollPane scrollpane = new JScrollPane(panel); - scrollpane.setBorder(BorderFactory.createEmptyBorder( 0, 0, 0, 0 )); - gui.getDisplayPreference().displaycontent.addTab(tr("Look and Feel"), scrollpane); + panel.add(Box.createVerticalGlue(), GBC.eol().fill(GBC.BOTH)); + + createPreferenceTabWithScrollPane(gui, panel); } public boolean ok() { @@ -133,9 +135,4 @@ public boolean isExpert() { return false; } - - @Override - public TabPreferenceSetting getTabPreferenceSetting(final PreferenceTabbedPane gui) { - return gui.getDisplayPreference(); - } } Index: src/org/openstreetmap/josm/gui/preferences/display/LanguagePreference.java =================================================================== --- src/org/openstreetmap/josm/gui/preferences/display/LanguagePreference.java (revision 5506) +++ src/org/openstreetmap/josm/gui/preferences/display/LanguagePreference.java (working copy) @@ -18,16 +18,15 @@ import javax.swing.ListCellRenderer; import org.openstreetmap.josm.Main; +import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting; import org.openstreetmap.josm.gui.preferences.PreferenceSetting; import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory; import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane; -import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting; -import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting; import org.openstreetmap.josm.gui.widgets.JosmComboBox; import org.openstreetmap.josm.tools.GBC; import org.openstreetmap.josm.tools.I18n; -public class LanguagePreference implements SubPreferenceSetting { +public class LanguagePreference extends DefaultTabPreferenceSetting { public static class Factory implements PreferenceSettingFactory { public PreferenceSetting createPreferenceSetting() { return new LanguagePreference(); @@ -39,6 +38,10 @@ /** the model for the combo box */ private LanguageComboBoxModel model; + public LanguagePreference() { + super(null, tr("Language"), ""); + } + public void addGui(final PreferenceTabbedPane gui) { model = new LanguageComboBoxModel(); // Selecting the language BEFORE the JComboBox listens to model changes speed up initialization by ~35ms (see #7386) @@ -47,12 +50,12 @@ langCombo = new JosmComboBox(model); langCombo.setRenderer(new LanguageCellRenderer(langCombo.getRenderer())); - LafPreference lafPreference = gui.getSetting(LafPreference.class); - final JPanel panel = lafPreference.panel; + final JPanel panel = new JPanel(); panel.add(new JLabel(tr("Language")), GBC.std().insets(20, 0, 0, 0)); panel.add(GBC.glue(5,0), GBC.std().fill(GBC.HORIZONTAL)); panel.add(langCombo, GBC.eol().fill(GBC.HORIZONTAL)); - panel.add(Box.createVerticalGlue(), GBC.eol().fill(GBC.BOTH)); + //panel.add(Box.createVerticalGlue(), GBC.eol().fill(GBC.BOTH)); + createPreferenceTabWithScrollPane(gui, panel); } public boolean ok() { @@ -116,9 +119,4 @@ public boolean isExpert() { return false; } - - @Override - public TabPreferenceSetting getTabPreferenceSetting(final PreferenceTabbedPane gui) { - return gui.getDisplayPreference(); - } } Index: src/org/openstreetmap/josm/gui/preferences/display/DrawingPreference.java =================================================================== --- src/org/openstreetmap/josm/gui/preferences/display/DrawingPreference.java (revision 5506) +++ src/org/openstreetmap/josm/gui/preferences/display/DrawingPreference.java (working copy) @@ -12,18 +12,16 @@ import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; -import javax.swing.JScrollPane; import org.openstreetmap.josm.Main; import org.openstreetmap.josm.actions.ExpertToggleAction; +import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting; import org.openstreetmap.josm.gui.preferences.PreferenceSetting; import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory; import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane; -import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting; -import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting; import org.openstreetmap.josm.tools.GBC; -public class DrawingPreference implements SubPreferenceSetting { +public class DrawingPreference extends DefaultTabPreferenceSetting { public static class Factory implements PreferenceSettingFactory { public PreferenceSetting createPreferenceSetting() { @@ -31,7 +29,6 @@ } } - private GPXSettingsPanel gpxPanel; private JCheckBox directionHint = new JCheckBox(tr("Draw Direction Arrows")); private JCheckBox headArrow = new JCheckBox(tr("Only on the head of a way.")); private JCheckBox onewayArrow = new JCheckBox(tr("Draw oneway arrows.")); @@ -46,16 +43,13 @@ private JCheckBox useAntialiasing = new JCheckBox(tr("Smooth map graphics (antialiasing)")); private JCheckBox outlineOnly = new JCheckBox(tr("Draw only outlines of areas")); + public DrawingPreference() { + super(null, tr("OSM Data"), ""); + } + public void addGui(PreferenceTabbedPane gui) { - //gui.display.setPreferredSize(new Dimension(400,600)); - gpxPanel = new GPXSettingsPanel(); - gui.addValidationListener(gpxPanel); - JPanel panel = gpxPanel; - JScrollPane scrollpane = new JScrollPane(panel); - scrollpane.setBorder(BorderFactory.createEmptyBorder( 0, 0, 0, 0 )); - gui.getDisplayPreference().displaycontent.addTab(tr("GPS Points"), scrollpane); - panel = new JPanel(new GridBagLayout()); + JPanel panel = new JPanel(new GridBagLayout()); panel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); // directionHint @@ -132,13 +126,11 @@ ExpertToggleAction.addVisibilitySwitcher(outlineOnly); panel.add(Box.createVerticalGlue(), GBC.eol().fill(GBC.BOTH)); - scrollpane = new JScrollPane(panel); - scrollpane.setBorder(BorderFactory.createEmptyBorder( 0, 0, 0, 0 )); - gui.getDisplayPreference().displaycontent.addTab(tr("OSM Data"), scrollpane); + + createPreferenceTabWithScrollPane(gui, panel); } public boolean ok() { - gpxPanel.savePreferences(); Main.pref.put("draw.data.area_outline_only", outlineOnly.isSelected()); Main.pref.put("draw.segment.direction", directionHint.isSelected()); Main.pref.put("draw.segment.head_only", headArrow.isSelected()); @@ -166,9 +158,4 @@ public boolean isExpert() { return false; } - - @Override - public TabPreferenceSetting getTabPreferenceSetting(final PreferenceTabbedPane gui) { - return gui.getDisplayPreference(); - } } Index: src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java =================================================================== --- src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java (revision 5506) +++ src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java (working copy) @@ -40,15 +40,14 @@ import org.openstreetmap.josm.gui.layer.ImageryLayer; import org.openstreetmap.josm.gui.layer.OsmDataLayer; import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer; +import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting; import org.openstreetmap.josm.gui.preferences.PreferenceSetting; import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory; import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane; -import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting; -import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting; import org.openstreetmap.josm.tools.ColorHelper; import org.openstreetmap.josm.tools.GBC; -public class ColorPreference implements SubPreferenceSetting { +public class ColorPreference extends DefaultTabPreferenceSetting { public static class Factory implements PreferenceSettingFactory { public PreferenceSetting createPreferenceSetting() { @@ -64,6 +63,10 @@ JButton defaultSet; JButton remove; + public ColorPreference() { + super(null, tr("Colors"), ""); + } + /** * Set the colors to be shown in the preference table. This method creates a table model if * none exists and overwrites all existing values. @@ -238,7 +241,8 @@ buttonPanel.add(defaultSet, GBC.std().insets(5,5,5,0)); buttonPanel.add(defaultAll, GBC.std().insets(0,5,0,0)); buttonPanel.add(remove, GBC.std().insets(0,5,0,0)); - gui.getDisplayPreference().displaycontent.addTab(tr("Colors"), panel); + + createPreferenceTabWithScrollPane(gui, panel); } Boolean isRemoveColor(int row) @@ -283,9 +287,4 @@ public boolean isExpert() { return false; } - - @Override - public TabPreferenceSetting getTabPreferenceSetting(final PreferenceTabbedPane gui) { - return gui.getDisplayPreference(); - } } Index: src/org/openstreetmap/josm/gui/preferences/server/ProxyPreferencesPanel.java =================================================================== --- src/org/openstreetmap/josm/gui/preferences/server/ProxyPreferencesPanel.java (revision 5506) +++ src/org/openstreetmap/josm/gui/preferences/server/ProxyPreferencesPanel.java (working copy) @@ -28,15 +28,45 @@ import org.openstreetmap.josm.Main; import org.openstreetmap.josm.gui.JMultilineLabel; import org.openstreetmap.josm.gui.help.HelpUtil; +import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting; +import org.openstreetmap.josm.gui.preferences.PreferenceSetting; +import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory; +import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane; import org.openstreetmap.josm.gui.widgets.VerticallyScrollablePanel; import org.openstreetmap.josm.io.DefaultProxySelector; import org.openstreetmap.josm.io.auth.CredentialsAgent; import org.openstreetmap.josm.io.auth.CredentialsAgentException; import org.openstreetmap.josm.io.auth.CredentialsManager; import org.openstreetmap.josm.tools.GBC; +import sun.awt.VerticalBagLayout; public class ProxyPreferencesPanel extends VerticallyScrollablePanel { + public static class Factory implements PreferenceSettingFactory { + + @Override + public PreferenceSetting createPreferenceSetting() { + return new DefaultTabPreferenceSetting(null, tr("Proxy settings"), tr("Configure whether to use a proxy server")) { + + private ProxyPreferencesPanel pnlProxyPreferences; + + @Override + public void addGui(PreferenceTabbedPane gui) { + //createPreferenceTabWithScrollPane(gui, pnlProxyPreferences = new ProxyPreferencesPanel()); + pnlProxyPreferences = new ProxyPreferencesPanel(); + gui.createPreferenceTab(this).add(pnlProxyPreferences, GBC.eol().fill(GBC.BOTH)); + pnlProxyPreferences.initFromPreferences(); + } + + @Override + public boolean ok() { + pnlProxyPreferences.saveToPreferences(); + return false; + } + }; + } + } + public enum ProxyPolicy { NO_PROXY("no-proxy"), USE_SYSTEM_SETTINGS("use-system-settings"), @@ -361,10 +391,10 @@ } public ProxyPreferencesPanel() { - setLayout(new GridBagLayout()); - setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); - add(buildProxySettingsPanel(), GBC.eop().anchor(GridBagConstraints.NORTHWEST).fill(GridBagConstraints.BOTH)); + setLayout(new VerticalBagLayout(20)); + add(buildProxySettingsPanel()); + initFromPreferences(); updateEnabledState(); Index: src/org/openstreetmap/josm/gui/preferences/ServerAccessPreference.java =================================================================== --- src/org/openstreetmap/josm/gui/preferences/ServerAccessPreference.java (revision 5506) +++ src/org/openstreetmap/josm/gui/preferences/ServerAccessPreference.java (working copy) @@ -3,20 +3,13 @@ import static org.openstreetmap.josm.tools.I18n.tr; -import java.awt.BorderLayout; -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; -import java.awt.Insets; - +import org.openstreetmap.josm.tools.GBC; +import sun.awt.VerticalBagLayout; import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.JTabbedPane; - import org.openstreetmap.josm.gui.help.HelpUtil; import org.openstreetmap.josm.gui.preferences.server.AuthenticationPreferencesPanel; import org.openstreetmap.josm.gui.preferences.server.OsmApiUrlInputPanel; -import org.openstreetmap.josm.gui.preferences.server.ProxyPreferencesPanel; -import org.openstreetmap.josm.gui.widgets.VerticallyScrollablePanel; + public class ServerAccessPreference extends DefaultTabPreferenceSetting { public static class Factory implements PreferenceSettingFactory { @@ -26,80 +19,28 @@ } private ServerAccessPreference() { - super("connection", tr("Connection Settings"), tr("Connection Settings for the OSM server.")); + super("connection", tr("Connection Settings"), + tr("Connection Settings for the OSM server as well as your identity and how to authenticate at the OSM server.")); } private OsmApiUrlInputPanel pnlApiUrlPreferences; - private JTabbedPane tpServerPreferences; /** indicates whether to use the default OSM URL or not */ /** panel for configuring authentication preferences */ private AuthenticationPreferencesPanel pnlAuthPreferences; - /** panel for configuring proxy preferences */ - private ProxyPreferencesPanel pnlProxyPreferences; - /** panel for backup preferences */ /** - * Embeds a vertically scrollable panel in a {@link JScrollPane} - * @param panel the panel - * @return the scroll pane - */ - protected JScrollPane wrapVerticallyScrollablePanel(VerticallyScrollablePanel panel) { - JScrollPane sp = new JScrollPane(panel); - sp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); - sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); - return sp; - } - - /** - * Builds the tabbed pane with the server preferences - * - * @return - */ - protected JPanel buildTabbedServerPreferences() { - JPanel pnl = new JPanel(new BorderLayout()); - - tpServerPreferences = new JTabbedPane(); - pnlAuthPreferences = new AuthenticationPreferencesPanel(); - tpServerPreferences.add(wrapVerticallyScrollablePanel(pnlAuthPreferences)); - pnlProxyPreferences = new ProxyPreferencesPanel(); - tpServerPreferences.add(wrapVerticallyScrollablePanel(pnlProxyPreferences)); - - tpServerPreferences.setTitleAt(0, tr("Authentication")); - tpServerPreferences.setTitleAt(1, tr("Proxy settings")); - tpServerPreferences.setToolTipTextAt(0, tr("Configure your identity and how to authenticate at the OSM server")); - tpServerPreferences.setToolTipTextAt(1, tr("Configure whether to use a proxy server")); - - pnl.add(tpServerPreferences, BorderLayout.CENTER); - return pnl; - } - - /** * Builds the panel for entering the server access preferences * * @return */ protected JPanel buildContentPanel() { - JPanel pnl = new JPanel(new GridBagLayout()); - GridBagConstraints gc = new GridBagConstraints(); + JPanel pnl = new JPanel(new VerticalBagLayout(20)); - // the checkbox for the default UL - gc.fill = GridBagConstraints.HORIZONTAL; - gc.anchor = GridBagConstraints.NORTHWEST; - gc.weightx = 1.0; - gc.insets = new Insets(0,0,0,0); - pnl.add(pnlApiUrlPreferences = new OsmApiUrlInputPanel(), gc); + pnl.add(pnlApiUrlPreferences = new OsmApiUrlInputPanel()); + pnl.add(pnlAuthPreferences = new AuthenticationPreferencesPanel()); - // the remaining access properties - gc.gridy = 1; - gc.fill = GridBagConstraints.BOTH; - gc.weightx = 1.0; - gc.weighty = 1.0; - gc.insets = new Insets(10,0,3,3); - pnl.add(buildTabbedServerPreferences(), gc); - // let the AuthPreferencesPanel know when the API URL changes - // pnlApiUrlPreferences.addPropertyChangeListener(pnlAuthPreferences); HelpUtil.setHelpContext(pnl, HelpUtil.ht("/Preferences/Connection")); @@ -107,13 +48,8 @@ } public void addGui(PreferenceTabbedPane gui) { - GridBagConstraints gc = new GridBagConstraints(); - gc.fill = GridBagConstraints.BOTH; - gc.weightx = 1.0; - gc.weighty = 1.0; - gc.anchor = GridBagConstraints.NORTHWEST; - gui.createPreferenceTab(this).add(buildContentPanel(), gc); - + //createPreferenceTabWithScrollPane(gui, buildContentPanel()); + gui.createPreferenceTab(this).add(buildContentPanel(), GBC.eol().fill(GBC.BOTH)); initFromPreferences(); } @@ -123,7 +59,6 @@ public void initFromPreferences() { pnlApiUrlPreferences.initFromPreferences(); pnlAuthPreferences.initFromPreferences(); - pnlProxyPreferences.initFromPreferences(); } /** @@ -132,7 +67,6 @@ public boolean ok() { pnlApiUrlPreferences.saveToPreferences(); pnlAuthPreferences.saveToPreferences(); - pnlProxyPreferences.saveToPreferences(); return false; } } Index: src/org/openstreetmap/josm/gui/preferences/RemoteControlPreference.java =================================================================== --- src/org/openstreetmap/josm/gui/preferences/RemoteControlPreference.java (revision 5506) +++ src/org/openstreetmap/josm/gui/preferences/RemoteControlPreference.java (working copy) @@ -105,7 +105,8 @@ }; enableRemoteControl.addActionListener(remoteControlEnabled); remoteControlEnabled.actionPerformed(null); - createPreferenceTabWithScrollPane(gui, remote); + //createPreferenceTabWithScrollPane(gui, remote); + gui.createPreferenceTab(this).add(remote, GBC.eol().fill(GBC.BOTH)); } @Override Index: src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java =================================================================== --- src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java (revision 5506) +++ src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java (working copy) @@ -12,7 +12,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; - import javax.swing.BorderFactory; import javax.swing.JCheckBox; import javax.swing.JLabel; @@ -21,11 +20,9 @@ import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JSeparator; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; - import org.openstreetmap.josm.Main; import org.openstreetmap.josm.gui.ExtendedDialog; +import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting; import org.openstreetmap.josm.gui.preferences.PreferenceSetting; import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory; import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane; @@ -34,8 +31,6 @@ import org.openstreetmap.josm.gui.preferences.SourceEditor.ExtendedSourceEntry; import org.openstreetmap.josm.gui.preferences.SourceEntry; import org.openstreetmap.josm.gui.preferences.SourceProvider; -import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting; -import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting; import org.openstreetmap.josm.gui.tagging.TaggingPreset; import org.openstreetmap.josm.gui.tagging.TaggingPresetMenu; import org.openstreetmap.josm.gui.tagging.TaggingPresetSeparator; @@ -44,7 +39,7 @@ import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; -public class TaggingPresetPreference implements SubPreferenceSetting { +public class TaggingPresetPreference extends DefaultTabPreferenceSetting { public static class Factory implements PreferenceSettingFactory { public PreferenceSetting createPreferenceSetting() { @@ -53,7 +48,7 @@ } private TaggingPresetPreference() { - super(); + super(null, tr("Tagging Presets"), ""); } private static final List presetSourceProviders = new ArrayList(); @@ -153,6 +148,7 @@ } }; + @Override public void addGui(final PreferenceTabbedPane gui) { sortMenu = new JCheckBox(tr("Sort presets menu"), Main.pref.getBoolean("taggingpreset.sortmenu", false)); @@ -162,21 +158,11 @@ panel.add(sortMenu, GBC.eol().insets(5,5,5,0)); sources = new TaggingPresetSourceEditor(); panel.add(sources, GBC.eol().fill(GBC.BOTH)); - gui.getMapPreference().mapcontent.addTab(tr("Tagging Presets"), panel); + + //createPreferenceTabWithScrollPane(gui, panel); + gui.createPreferenceTab(this).add(panel, GBC.eol().fill(GBC.BOTH)); - // this defers loading of tagging preset sources to the first time the tab - // with the tagging presets is selected by the user - // - gui.getMapPreference().mapcontent.addChangeListener( - new ChangeListener() { - public void stateChanged(ChangeEvent e) { - if (gui.getMapPreference().mapcontent.getSelectedComponent() == panel) { - sources.initiallyLoadAvailableSources(); - } - } - } - ); - gui.addValidationListener(validationListener); + sources.initiallyLoadAvailableSources(); } static class TaggingPresetSourceEditor extends SourceEditor { @@ -353,9 +339,4 @@ public boolean isExpert() { return false; } - - @Override - public TabPreferenceSetting getTabPreferenceSetting(final PreferenceTabbedPane gui) { - return gui.getMapPreference(); - } } Index: src/org/openstreetmap/josm/gui/preferences/map/BackupPreference.java =================================================================== --- src/org/openstreetmap/josm/gui/preferences/map/BackupPreference.java (revision 5506) +++ src/org/openstreetmap/josm/gui/preferences/map/BackupPreference.java (working copy) @@ -18,15 +18,14 @@ import org.openstreetmap.josm.data.AutosaveTask; import org.openstreetmap.josm.data.preferences.BooleanProperty; +import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting; import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory; import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane; -import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting; -import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting; import org.openstreetmap.josm.gui.widgets.HtmlPanel; import org.openstreetmap.josm.gui.widgets.VerticallyScrollablePanel; import org.openstreetmap.josm.tools.GBC; -public class BackupPreference implements SubPreferenceSetting { +public class BackupPreference extends DefaultTabPreferenceSetting { public static class Factory implements PreferenceSettingFactory { @Override @@ -96,14 +95,26 @@ autosaveEnabled.actionPerformed(null); panel.add(Box.createVerticalGlue(), GBC.eol().fill(GBC.BOTH)); - JScrollPane sp = new JScrollPane(panel); - sp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); - sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); - gui.getMapPreference().mapcontent.addTab(tr("File backup"), null, sp, tr("Configure whether to create backup files")); + createPreferenceTabWithScrollPane(gui, panel); } @Override + public String getIconName() { + return null; + } + + @Override + public String getTitle() { + return tr("File backup"); + } + + @Override + public String getTooltip() { + return tr("Configure whether to create backup files"); + } + + @Override public boolean ok() { boolean restartRequired = false; PROP_KEEP_BACKUP.put(keepBackup.isSelected()); @@ -115,12 +126,12 @@ } @Override - public boolean isExpert() { - return false; + public String getDescription() { + return getTooltip(); } @Override - public TabPreferenceSetting getTabPreferenceSetting(final PreferenceTabbedPane gui) { - return gui.getMapPreference(); + public boolean isExpert() { + return false; } } Index: src/org/openstreetmap/josm/gui/preferences/map/MapPaintPreference.java =================================================================== --- src/org/openstreetmap/josm/gui/preferences/map/MapPaintPreference.java (revision 5506) +++ src/org/openstreetmap/josm/gui/preferences/map/MapPaintPreference.java (working copy) @@ -12,15 +12,12 @@ import java.util.List; import java.util.Map; import java.util.TreeSet; - import javax.swing.BorderFactory; import javax.swing.JCheckBox; import javax.swing.JPanel; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; - import org.openstreetmap.josm.Main; import org.openstreetmap.josm.gui.mappaint.MapPaintStyles; +import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting; import org.openstreetmap.josm.gui.preferences.PreferenceSetting; import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory; import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane; @@ -28,13 +25,11 @@ import org.openstreetmap.josm.gui.preferences.SourceEditor.ExtendedSourceEntry; import org.openstreetmap.josm.gui.preferences.SourceEntry; import org.openstreetmap.josm.gui.preferences.SourceProvider; -import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting; -import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting; import org.openstreetmap.josm.tools.GBC; import org.openstreetmap.josm.tools.Predicate; import org.openstreetmap.josm.tools.Utils; -public class MapPaintPreference implements SubPreferenceSetting { +public class MapPaintPreference extends DefaultTabPreferenceSetting { private SourceEditor sources; private JCheckBox enableIconDefault; @@ -52,6 +47,11 @@ } } + public MapPaintPreference() { + super(null, tr("Map Paint Styles"), ""); + } + + @Override public void addGui(final PreferenceTabbedPane gui) { enableIconDefault = new JCheckBox(tr("Enable built-in icon defaults"), Main.pref.getBoolean("mappaint.icon.enable-defaults", true)); @@ -64,20 +64,10 @@ panel.add(sources, GBC.eol().fill(GBC.BOTH)); panel.add(enableIconDefault, GBC.eol().insets(11,2,5,0)); - gui.getMapPreference().mapcontent.addTab(tr("Map Paint Styles"), panel); + //createPreferenceTabWithScrollPane(gui, panel); + gui.createPreferenceTab(this).add(panel, GBC.eol().fill(GBC.BOTH)); - // this defers loading of style sources to the first time the tab - // with the map paint preferences is selected by the user - // - gui.getMapPreference().mapcontent.addChangeListener( - new ChangeListener() { - public void stateChanged(ChangeEvent e) { - if (gui.getMapPreference().mapcontent.getSelectedComponent() == panel) { - sources.initiallyLoadAvailableSources(); - } - } - } - ); + sources.initiallyLoadAvailableSources(); } static class MapPaintSourceEditor extends SourceEditor { @@ -286,9 +276,4 @@ public boolean isExpert() { return false; } - - @Override - public TabPreferenceSetting getTabPreferenceSetting(final PreferenceTabbedPane gui) { - return gui.getMapPreference(); - } } Index: src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java =================================================================== --- src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java (revision 5506) +++ src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java (working copy) @@ -169,9 +169,4 @@ new CancelAction().cancel(); } } - - public void selectMapPaintPreferenceTab() { - tpPreferences.selectTabByPref(MapPreference.class); - tpPreferences.getMapPreference().mapcontent.setSelectedIndex(1); - } }