001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.data.preferences;
003
004import org.openstreetmap.josm.Main;
005
006/**
007 * A property containing an {@code Integer} value.
008 */
009public class IntegerProperty extends AbstractProperty<Integer> {
010
011    /**
012     * Constructs a new {@code IntegerProperty}.
013     * @param key The property key
014     * @param defaultValue The default value
015     */
016    public IntegerProperty(String key, int defaultValue) {
017        super(key, defaultValue);
018    }
019
020    @Override
021    public Integer get() {
022        return Main.pref.getInteger(getKey(), getDefaultValue());
023    }
024
025    @Override
026    public boolean put(Integer value) {
027        return Main.pref.putInteger(getKey(), value);
028    }
029
030    /**
031     * parses and saves an integer value
032     * @param value the value to be parsed
033     * @return true - preference value has changed
034     *         false - parsing failed or preference value has not changed
035     */
036    public boolean parseAndPut(String value) {
037        Integer intVal;
038        try {
039            intVal = Integer.parseInt(value);
040        } catch (NumberFormatException ex) {
041            return false;
042        }
043        return put(intVal);
044    }
045}