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 }