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