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 Double} value.
008 * @since 3246
009 */
010public class DoubleProperty extends AbstractProperty<Double> {
011
012    /**
013     * Constructs a new {@code DoubleProperty}.
014     * @param key The property key
015     * @param defaultValue The default value
016     */
017    public DoubleProperty(String key, double defaultValue) {
018        super(key, defaultValue);
019    }
020
021    @Override
022    public Double get() {
023        return Main.pref.getDouble(getKey(), getDefaultValue());
024    }
025
026    @Override
027    public boolean put(Double value) {
028        return Main.pref.putDouble(getKey(), value);
029    }
030
031    /**
032     * parses and saves a double precision 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(Double.valueOf(value));
040        } catch (NumberFormatException ex) {
041            return false;
042        }
043    }
044}