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 * @since 3246
009 */
010public class IntegerProperty extends AbstractProperty<Integer> {
011
012    /**
013     * Constructs a new {@code IntegerProperty}.
014     * @param key The property key
015     * @param defaultValue The default value
016     */
017    public IntegerProperty(String key, int defaultValue) {
018        super(key, defaultValue);
019    }
020
021    @Override
022    public Integer get() {
023        return Main.pref.getInteger(getKey(), getDefaultValue());
024    }
025
026    @Override
027    public boolean put(Integer value) {
028        return Main.pref.putInteger(getKey(), value);
029    }
030
031    /**
032     * parses and saves an integer value
033     * @param value the value to be parsed
034     * @return true - preference value has changed
035     *         false - parsing failed or preference value has not changed
036     */
037    public boolean parseAndPut(String value) {
038        try {
039            return put(Integer.valueOf(value));
040        } catch (NumberFormatException ex) {
041            return false;
042        }
043    }
044}