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        if (Main.pref != null) {
020            get();
021        }
022    }
023
024    @Override
025    public Integer get() {
026        return Main.pref.getInteger(getKey(), getDefaultValue());
027    }
028
029    @Override
030    public boolean put(Integer value) {
031        return Main.pref.putInteger(getKey(), value);
032    }
033
034    /**
035     * parses and saves an integer value
036     * @param value the value to be parsed
037     * @return true - preference value has changed
038     *         false - parsing failed or preference value has not changed
039     */
040    public boolean parseAndPut(String value) {
041        try {
042            return put(Integer.valueOf(value));
043        } catch (NumberFormatException ex) {
044            return false;
045        }
046    }
047}