// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.gui.preferences.server; 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 java.beans.PropertyChangeListener; import javax.swing.JPanel; import javax.swing.JTabbedPane; 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; /** * Connection preferences, including authentication and proxy sub-preferences. */ public final class ServerAccessPreference extends DefaultTabPreferenceSetting { /** * Factory used to create a new {@code ServerAccessPreference}. */ public static class Factory implements PreferenceSettingFactory { @Override public PreferenceSetting createPreferenceSetting() { return new ServerAccessPreference(); } } /** indicates whether to use the default OSM URL or not */ private final OsmApiUrlInputPanel pnlApiUrlPreferences = new OsmApiUrlInputPanel(); private ServerAccessPreference() { super(/* ICON(preferences/) */ "connection", tr("Connection Settings"), tr("Connection Settings for the OSM server."), false, new JTabbedPane()); } /** * Builds the tabbed pane with the server preferences * * @return panel with server preferences tabs */ private JPanel buildTabbedServerPreferences() { JPanel pnl = new JPanel(new BorderLayout()); pnl.add(getTabPane(), BorderLayout.CENTER); return pnl; } /** * Builds the panel for entering the server access preferences * * @return preferences panel for server settings */ private JPanel buildContentPanel() { JPanel pnl = new JPanel(new GridBagLayout()); GridBagConstraints gc = new GridBagConstraints(); // 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, gc); // 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); HelpUtil.setHelpContext(pnl, HelpUtil.ht("/Preferences/Connection")); return pnl; } /** * Adds a listener that will be notified of API URL change. * @param listener the listener * @since 6523 */ public void addApiUrlChangeListener(PropertyChangeListener listener) { pnlApiUrlPreferences.addPropertyChangeListener(listener); } @Override 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); pnlApiUrlPreferences.initFromPreferences(); } /** * Saves the values to the preferences */ @Override public boolean ok() { pnlApiUrlPreferences.saveToPreferences(); return false; } }