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}