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