001    // License: GPL. For details, see LICENSE file.
002    package org.openstreetmap.josm.data.preferences;
003    
004    import org.openstreetmap.josm.Main;
005    
006    /**
007     * A property containing an {@code Integer} value.
008     */
009    public 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    }