Ignore:
Timestamp:
2012-08-20T23:06:41+02:00 (9 years ago)
Author:
Don-vip
Message:

Rework Properties a bit to simplify management of Color properties

Location:
trunk/src/org/openstreetmap/josm/data/preferences
Files:
1 added
1 deleted
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/preferences/AbstractProperty.java

    r4932 r5464  
    55
    66/**
    7  * captures the common functionality of preference properties
     7 * Captures the common functionality of preference properties
     8 * @param <T> The type of object accessed by this property
    89 */
    910public abstract class AbstractProperty<T> {
    1011    protected final String key;
     12    protected final T defaultValue;
    1113
    12     public AbstractProperty(String key) {
     14    /**
     15     * Constructs a new {@code AbstractProperty}.
     16     * @param key The property key
     17     * @param defaultValue The default value
     18     * @since 5464
     19     */
     20    public AbstractProperty(String key, T defaultValue) {
    1321        this.key = key;
     22        this.defaultValue = defaultValue;
    1423    }
    1524
     25    /**
     26     * Replies the property key.
     27     * @return The property key
     28     */
    1629    public String getKey() {
    1730        return key;
    1831    }
    1932
     33    /**
     34     * Determines if this property is currently set in JOSM preferences.
     35     * @return true if {@code Main.pref} contains this property.
     36     */
    2037    public boolean isSet() {
    2138        return !Main.pref.get(key).isEmpty();
    2239    }
    2340
    24     public abstract T getDefaultValue();
     41    /**
     42     * Replies the default value of this property.
     43     * @return The default value of this property
     44     */
     45    public T getDefaultValue() {
     46        return defaultValue;
     47    }
    2548
     49    /**
     50     * Removes this property from JOSM preferences (i.e replace it by its default value).
     51     */
    2652    public void remove() {
    2753        Main.pref.put(getKey(), String.valueOf(getDefaultValue()));
    2854    }
    29 
     55   
     56    /**
     57     * Replies the value of this property.
     58     * @return the value of this property
     59     * @since 5464
     60     */
     61    public abstract T get();
     62   
     63    /**
     64     * Sets this property to the specified value.
     65     * @param value The new value of this property
     66     * @return true if something has changed (i.e. value is different than before)
     67     * @since 5464
     68     */
     69    public abstract boolean put(T value);
    3070}
  • trunk/src/org/openstreetmap/josm/data/preferences/BooleanProperty.java

    r5170 r5464  
    44import org.openstreetmap.josm.Main;
    55
     6/**
     7 * A property containing a {@code Boolean} value.
     8 */
    69public class BooleanProperty extends AbstractProperty<Boolean> {
    710
    8     protected final boolean defaultValue;
    9 
     11    /**
     12     * Constructs a new {@code BooleanProperty}.
     13     * @param key The property key
     14     * @param defaultValue The default value
     15     */
    1016    public BooleanProperty(String key, boolean defaultValue) {
    11         super(key);
    12         this.defaultValue = defaultValue;
     17        super(key, defaultValue);
    1318    }
    1419
    15     public boolean get() {
     20    @Override
     21    public Boolean get() {
    1622        return Main.pref.getBoolean(getKey(), defaultValue);
    1723    }
    1824
    19     public boolean put(boolean value) {
     25    @Override
     26    public boolean put(Boolean value) {
    2027        return Main.pref.put(getKey(), value);
    2128    }
    22 
    23     @Override
    24     public Boolean getDefaultValue() {
    25         return defaultValue;
    26     }
    2729}
  • trunk/src/org/openstreetmap/josm/data/preferences/CachedProperty.java

    r4932 r5464  
    88public abstract class CachedProperty<T> extends AbstractProperty<T> implements PreferenceChangedListener {
    99
    10     protected final String defaultValue;
     10    private final String defaultValueAsString;
    1111    private T value;
    1212    private int updateCount;
    1313
    14     protected CachedProperty(String key, String defaultValue) {
    15         super(key);
     14    protected CachedProperty(String key, T defaultValue, String defaultValueAsString) {
     15        super(key, defaultValue);
    1616        Main.pref.addPreferenceChangeListener(this);
    17         this.defaultValue = defaultValue;
     17        this.defaultValueAsString = defaultValueAsString;
    1818        updateValue();
    1919    }
     
    3030    protected abstract T fromString(String s);
    3131
     32    @Override
    3233    public T get() {
    3334        return value;
     
    4041    }
    4142
     43    @Override
     44    public final boolean put(T value) {
     45        // Not used
     46        throw new IllegalAccessError("You cannot use put(T). Use put(String) instead.");
     47    }
     48
    4249    public int getUpdateCount() {
    4350        return updateCount;
    4451    }
    4552
    46     @Override
    47     public T getDefaultValue() {
    48         return fromString(getDefaultValueAsString());
    49     }
    50 
    5153    public String getDefaultValueAsString() {
    52         return defaultValue;
     54        return defaultValueAsString;
    5355    }
    5456
  • trunk/src/org/openstreetmap/josm/data/preferences/CollectionProperty.java

    r5170 r5464  
    66import org.openstreetmap.josm.Main;
    77
     8/**
     9 * A property containing a {@code Collection} of {@code String} as value.
     10 */
    811public class CollectionProperty extends AbstractProperty<Collection<String>> {
    9     protected final Collection<String> defaultValue;
    1012
     13    /**
     14     * Constructs a new {@code CollectionProperty}.
     15     * @param key The property key
     16     * @param defaultValue The default value
     17     */
    1118    public CollectionProperty(String key, Collection<String> defaultValue) {
    12         super(key);
    13         this.defaultValue = defaultValue;
     19        super(key, defaultValue);
    1420    }
    1521
     22    @Override
    1623    public Collection<String> get() {
    1724        return Main.pref.getCollection(getKey(), getDefaultValue());
    1825    }
    1926
     27    @Override
    2028    public boolean put(Collection<String> value) {
    2129        return Main.pref.putCollection(getKey(), value);
    2230    }
    23 
    24     @Override
    25     public Collection<String> getDefaultValue() {
    26         return defaultValue;
    27     }
    28 
    2931}
  • trunk/src/org/openstreetmap/josm/data/preferences/IntegerProperty.java

    r5170 r5464  
    44import org.openstreetmap.josm.Main;
    55
     6/**
     7 * A property containing an {@code Integer} value.
     8 */
    69public class IntegerProperty extends AbstractProperty<Integer> {
    710
    8     protected final int defaultValue;
    9 
     11    /**
     12     * Constructs a new {@code IntegerProperty}.
     13     * @param key The property key
     14     * @param defaultValue The default value
     15     */
    1016    public IntegerProperty(String key, int defaultValue) {
    11         super(key);
    12         this.defaultValue = defaultValue;
     17        super(key, defaultValue);
    1318    }
    1419
    15     public int get() {
     20    @Override
     21    public Integer get() {
    1622        return Main.pref.getInteger(getKey(), getDefaultValue());
    1723    }
    1824
    19     public boolean put(int value) {
     25    @Override
     26    public boolean put(Integer value) {
    2027        return Main.pref.putInteger(getKey(), value);
    2128    }
     
    3643        return put(intVal);
    3744    }
    38 
    39     @Override
    40     public Integer getDefaultValue() {
    41         return defaultValue;
    42     }
    43 
    4445}
  • trunk/src/org/openstreetmap/josm/data/preferences/StringProperty.java

    r5170 r5464  
    44import org.openstreetmap.josm.Main;
    55
     6/**
     7 * A property containing an {@code String} value.
     8 */
    69public class StringProperty extends AbstractProperty<String> {
    710
    8     protected final String defaultValue;
    9 
     11    /**
     12     * Constructs a new {@code StringProperty}.
     13     * @param key The property key
     14     * @param defaultValue The default value
     15     */
    1016    public StringProperty(String key, String defaultValue) {
    11         super(key);
    12         this.defaultValue = defaultValue;
     17        super(key, defaultValue);
    1318    }
    1419
     20    @Override
    1521    public String get() {
    1622        return Main.pref.get(getKey(), getDefaultValue());
    1723    }
    1824
     25    @Override
    1926    public boolean put(String value) {
    2027        return Main.pref.put(getKey(), value);
    2128    }
    22 
    23     @Override
    24     public String getDefaultValue() {
    25         return defaultValue;
    26     }
    27 
    2829}
Note: See TracChangeset for help on using the changeset viewer.