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.util.HashSet; 007import java.util.Set; 008 009import org.openstreetmap.josm.gui.preferences.PreferenceSetting; 010import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory; 011import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane; 012import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting; 013import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting; 014 015/** 016 * Proxy sub-preferences in server preferences. 017 * @since 6523 018 */ 019public final class ProxyPreference implements SubPreferenceSetting { 020 021 /** 022 * Factory used to create a new {@code ProxyPreference}. 023 */ 024 public static class Factory implements PreferenceSettingFactory { 025 @Override 026 public PreferenceSetting createPreferenceSetting() { 027 return new ProxyPreference(); 028 } 029 } 030 031 private static Set<ProxyPreferenceListener> listeners = new HashSet<>(); 032 033 private ProxyPreferencesPanel pnlProxyPreferences; 034 035 private ProxyPreference() { 036 super(); 037 } 038 039 @Override 040 public void addGui(PreferenceTabbedPane gui) { 041 pnlProxyPreferences = new ProxyPreferencesPanel(); 042 gui.getServerPreference().addSubTab(this, tr("Proxy settings"), 043 pnlProxyPreferences.getVerticalScrollPane(), 044 tr("Configure whether to use a proxy server")); 045 } 046 047 @Override 048 public boolean ok() { 049 pnlProxyPreferences.saveToPreferences(); 050 for (ProxyPreferenceListener listener : listeners) { 051 listener.proxyPreferenceChanged(); 052 } 053 return false; 054 } 055 056 @Override 057 public boolean isExpert() { 058 return false; 059 } 060 061 @Override 062 public TabPreferenceSetting getTabPreferenceSetting(PreferenceTabbedPane gui) { 063 return gui.getServerPreference(); 064 } 065 066 /** 067 * Adds a new ProxyPreferenceListener. 068 * @param listener the listener to add 069 * @return {@code true} if the listener has been added, {@code false} otherwise 070 * @since 6525 071 */ 072 public static boolean addProxyPreferenceListener(ProxyPreferenceListener listener) { 073 if (listener != null) { 074 return listeners.add(listener); 075 } 076 return false; 077 } 078 079 /** 080 * Removes a ProxyPreferenceListener. 081 * @param listener the listener to remove 082 * @return {@code true} if the listener has been removed, {@code false} otherwise 083 * @since 6525 084 */ 085 public static boolean removeProxyPreferenceListener(ProxyPreferenceListener listener) { 086 if (listener != null) { 087 return listeners.remove(listener); 088 } 089 return false; 090 } 091}