// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.gui.preferences.server;
import static org.openstreetmap.josm.tools.I18n.tr;
import java.util.HashSet;
import java.util.Set;
import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory;
import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting;
import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting;
/**
* Proxy sub-preferences in server preferences.
* @since 6523
*/
public final class ProxyPreference implements SubPreferenceSetting {
/**
* Factory used to create a new {@code ProxyPreference}.
*/
public static class Factory implements PreferenceSettingFactory {
@Override
public PreferenceSetting createPreferenceSetting() {
return new ProxyPreference();
}
}
private static Set<ProxyPreferenceListener> listeners = new HashSet<>();
private ProxyPreferencesPanel pnlProxyPreferences;
private ProxyPreference() {
super();
}
@Override
public void addGui(PreferenceTabbedPane gui) {
pnlProxyPreferences = new ProxyPreferencesPanel();
gui.getServerPreference().addSubTab(this, tr("Proxy settings"),
pnlProxyPreferences.getVerticalScrollPane(),
tr("Configure whether to use a proxy server"));
}
@Override
public boolean ok() {
pnlProxyPreferences.saveToPreferences();
for (ProxyPreferenceListener listener : listeners) {
listener.proxyPreferenceChanged();
}
return false;
}
@Override
public boolean isExpert() {
return false;
}
@Override
public TabPreferenceSetting getTabPreferenceSetting(PreferenceTabbedPane gui) {
return gui.getServerPreference();
}
/**
* Adds a new ProxyPreferenceListener.
* @param listener the listener to add
* @return {@code true} if the listener has been added, {@code false} otherwise
* @since 6525
*/
public static boolean addProxyPreferenceListener(ProxyPreferenceListener listener) {
if (listener != null) {
return listeners.add(listener);
}
return false;
}
/**
* Removes a ProxyPreferenceListener.
* @param listener the listener to remove
* @return {@code true} if the listener has been removed, {@code false} otherwise
* @since 6525
*/
public static boolean removeProxyPreferenceListener(ProxyPreferenceListener listener) {
if (listener != null) {
return listeners.remove(listener);
}
return false;
}
}