// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.plugins.fixAddresses; import static org.openstreetmap.josm.tools.I18n.tr; import javax.swing.ButtonGroup; import javax.swing.JCheckBox; import org.openstreetmap.josm.Main; import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting; import org.openstreetmap.josm.gui.preferences.PreferenceSetting; import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory; import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane; public final class FixAddressesPreferences extends DefaultTabPreferenceSetting { private static final String FIX_ADDRESSES_IGNORE_POST_CODE_KEY = "fixAddresses.ignorePostCode"; private static final String FIX_ADDRESSES_SELECT_GUESSED_OBJECTS_KEY = "fixAddresses.selectGuessedObjects"; private JCheckBox cbSelectGuessedObjects = new JCheckBox(tr("Include objects used for guesses")); private JCheckBox cbIgnorePostCode = new JCheckBox(); /** * Internal factory class. Call <code>FixAddressesPreferences.Factory().createPreferenceSetting()</code> to * create the preference setting instance. */ public static class Factory implements PreferenceSettingFactory { @Override public PreferenceSetting createPreferenceSetting() { return new FixAddressesPreferences(); } } /** * Internal constructor. */ private FixAddressesPreferences() { loadFromPrefs(); } /** * Loads the (initial) preference settings. */ private void loadFromPrefs() { setSelectGuessedObjects(Main.pref.getBoolean(FIX_ADDRESSES_SELECT_GUESSED_OBJECTS_KEY, false)); setIgnorePostCode(Main.pref.getBoolean(FIX_ADDRESSES_IGNORE_POST_CODE_KEY, false)); } /** * Save the preference settings. */ private void saveToPrefs() { Main.pref.put(FIX_ADDRESSES_SELECT_GUESSED_OBJECTS_KEY, isSelectGuessedObjects()); Main.pref.put(FIX_ADDRESSES_IGNORE_POST_CODE_KEY, isIgnorePostCode()); } @Override public void addGui(PreferenceTabbedPane gui) { // Import settings ButtonGroup fixAddrOptions = new ButtonGroup(); fixAddrOptions.add(cbSelectGuessedObjects); fixAddrOptions.add(cbIgnorePostCode); } @Override public boolean ok() { saveToPrefs(); loadFromPrefs(); return false; } /** * Checks if option "select guessed objects" is set. If yes, every selection * includes also the objects used for guessing the address tags. * Otherwise only the address itself is selected. * * @return the selectGuessedObjects */ public boolean isSelectGuessedObjects() { return cbSelectGuessedObjects.isSelected(); } /** * Sets the select guessed objects. * * @param selectGuessedObjects the selectGuessedObjects to set */ void setSelectGuessedObjects(boolean selectGuessedObjects) { cbSelectGuessedObjects.setSelected(selectGuessedObjects); } /** * Checks if invalid post codes should be ignored. If yes, post codes are neither * checked for existence nor for correctness. * @return {@code true} if invalid post codes should be ignored */ public boolean isIgnorePostCode() { return cbIgnorePostCode.isSelected(); } public void setIgnorePostCode(boolean ignorePostCode) { cbIgnorePostCode.setSelected(ignorePostCode); } }