001    // License: GPL. For details, see LICENSE file.
002    package org.openstreetmap.josm.data.preferences;
003    
004    import org.openstreetmap.josm.Main;
005    
006    public abstract class ParametrizedEnumProperty<T extends Enum<T>> {
007    
008    
009        private final T defaultValue;
010        private final Class<T> enumClass;
011    
012        public ParametrizedEnumProperty(Class<T> enumClass, T defaultValue) {
013            this.defaultValue = defaultValue;
014            this.enumClass = enumClass;
015        }
016    
017        protected abstract String getKey(String... params);
018    
019        public T get(String... params) {
020            return parse(Main.pref.get(getKey(params), defaultValue.name()));
021        }
022    
023        public boolean put(T value, String... params) {
024            return Main.pref.put(getKey(params), value.name());
025        }
026    
027        protected T parse(String s) {
028            return Enum.valueOf(enumClass, s);
029        }
030    
031    
032    }