001 // License: GPL. For details, see LICENSE file.
002 package org.openstreetmap.josm.data.preferences;
003
004 import java.awt.Color;
005
006 import org.openstreetmap.josm.Main;
007 import org.openstreetmap.josm.data.Preferences.ColorKey;
008
009 /**
010 * A property containing a {@link Color} value.
011 * @since 5464
012 */
013 public class ColorProperty extends AbstractProperty<Color> implements ColorKey {
014
015 private final String name;
016
017 /**
018 * Constructs a new {@code ColorProperty}.
019 * @param colName The color name
020 * @param defaultValue The default value
021 */
022 public ColorProperty(String colName, Color defaultValue) {
023 super(getColorKey(colName), defaultValue);
024 this.name = colName;
025 }
026
027 @Override
028 public Color get() {
029 return Main.pref.getColor(this);
030 }
031
032 @Override
033 public boolean put(Color value) {
034 return Main.pref.putColor(getColorKey(name), value);
035 }
036
037 /**
038 * Replies the color key used in JOSM preferences for this property.
039 * @param colName The color name
040 * @return The color key for this property
041 */
042 public static String getColorKey(String colName) {
043 return colName == null ? null : colName.toLowerCase().replaceAll("[^a-z0-9]+",".");
044 }
045
046 @Override
047 public String getColorName() {
048 return name;
049 }
050
051 @Override
052 public String getSpecialName() {
053 return null;
054 }
055 }