// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.data.preferences; import org.openstreetmap.josm.Main; public abstract class ParametrizedEnumProperty> { protected final T defaultValue; protected final Class enumClass; public ParametrizedEnumProperty(Class enumClass, T defaultValue) { this.defaultValue = defaultValue; this.enumClass = enumClass; } protected abstract String getKey(String... params); public T get(String... params) { return parse(Main.pref.get(getKey(params), defaultValue.name())); } public boolean put(T value, String... params) { return Main.pref.put(getKey(params), value.name()); } protected T parse(String s) { try { return Enum.valueOf(enumClass, s); } catch (IllegalArgumentException e) { return defaultValue; } } }