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.gui.preferences.PreferenceSetting; 015import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory; 016import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane; 017import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting; 018import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting; 019import org.openstreetmap.josm.gui.widgets.HistoryComboBox; 020import org.openstreetmap.josm.io.OverpassDownloadReader; 021import org.openstreetmap.josm.tools.GBC; 022 023/** 024 * Preferences related to Overpass API servers. 025 * 026 * @since 9142 027 */ 028public class OverpassServerPreference implements SubPreferenceSetting { 029 030 private final HistoryComboBox overpassServer = new HistoryComboBox(); 031 private final JCheckBox forMultiFetch = new JCheckBox(tr("Use Overpass server for object downloads")); 032 033 /** 034 * Factory used to create a new {@link OverpassServerPreference}. 035 */ 036 public static class Factory implements PreferenceSettingFactory { 037 @Override 038 public PreferenceSetting createPreferenceSetting() { 039 return new OverpassServerPreference(); 040 } 041 } 042 043 @Override 044 public TabPreferenceSetting getTabPreferenceSetting(PreferenceTabbedPane gui) { 045 return gui.getServerPreference(); 046 } 047 048 @Override 049 public void addGui(PreferenceTabbedPane gui) { 050 final JPanel panel = new JPanel(new GridBagLayout()); 051 052 panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); 053 panel.add(new JLabel(tr("Overpass server: ")), GBC.std().insets(5, 5, 5, 5)); 054 panel.add(overpassServer, GBC.eop().fill(GBC.HORIZONTAL)); 055 overpassServer.setPossibleItems(OverpassDownloadReader.OVERPASS_SERVER_HISTORY.get()); 056 overpassServer.setText(OverpassDownloadReader.OVERPASS_SERVER.get()); 057 058 panel.add(forMultiFetch, GBC.eop()); 059 forMultiFetch.setSelected(OverpassDownloadReader.FOR_MULTI_FETCH.get()); 060 061 panel.add(Box.createVerticalGlue(), GBC.eol().fill()); 062 063 getTabPreferenceSetting(gui).addSubTab(this, tr("Overpass server"), panel); 064 } 065 066 @Override 067 public boolean ok() { 068 OverpassDownloadReader.OVERPASS_SERVER.put(overpassServer.getText()); 069 OverpassDownloadReader.OVERPASS_SERVER_HISTORY.put(overpassServer.getHistory()); 070 OverpassDownloadReader.FOR_MULTI_FETCH.put(forMultiFetch.isSelected()); 071 return false; 072 } 073 074 @Override 075 public boolean isExpert() { 076 return true; 077 } 078}