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 }