001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.gui.preferences.server;
003
004import static org.openstreetmap.josm.tools.I18n.tr;
005
006import java.awt.GridBagLayout;
007
008import javax.swing.BorderFactory;
009import javax.swing.Box;
010import javax.swing.JCheckBox;
011import javax.swing.JLabel;
012import javax.swing.JPanel;
013
014import org.openstreetmap.josm.actions.ExpertToggleAction;
015import org.openstreetmap.josm.gui.widgets.HistoryComboBox;
016import org.openstreetmap.josm.io.OverpassDownloadReader;
017import org.openstreetmap.josm.tools.GBC;
018
019/**
020 * Preferences related to Overpass API servers.
021 *
022 * @since 17162
023 */
024public class OverpassServerPanel extends JPanel {
025
026    private final HistoryComboBox overpassServer = new HistoryComboBox();
027    private final JCheckBox forMultiFetch = new JCheckBox(tr("Use Overpass server for object downloads"));
028
029    OverpassServerPanel() {
030        super(new GridBagLayout());
031        ExpertToggleAction.addVisibilitySwitcher(this);
032        final JPanel panel = this;
033        panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
034        panel.add(new JLabel(tr("Overpass server: ")), GBC.std().insets(5, 5, 5, 5));
035        panel.add(overpassServer, GBC.eop().fill(GBC.HORIZONTAL));
036        panel.add(forMultiFetch, GBC.eop());
037        panel.add(Box.createVerticalGlue(), GBC.eol().fill());
038    }
039
040    /**
041     * Initializes the panel from preferences
042     */
043    public final void initFromPreferences() {
044        overpassServer.getModel().prefs().load(OverpassDownloadReader.OVERPASS_SERVER_HISTORY);
045        overpassServer.setText(OverpassDownloadReader.OVERPASS_SERVER.get());
046        forMultiFetch.setSelected(OverpassDownloadReader.FOR_MULTI_FETCH.get());
047    }
048
049    /**
050     * Saves the current values to the preferences
051     */
052    public final void saveToPreferences() {
053        OverpassDownloadReader.OVERPASS_SERVER.put(overpassServer.getText());
054        overpassServer.getModel().prefs().save(OverpassDownloadReader.OVERPASS_SERVER_HISTORY);
055        OverpassDownloadReader.FOR_MULTI_FETCH.put(forMultiFetch.isSelected());
056    }
057}