source: josm/trunk/src/org/openstreetmap/josm/data/preferences/CachedProperty.java@ 5478

Last change on this file since 5478 was 5478, checked in by Don-vip, 12 years ago

fix #7999 - Change r5464 broke display of texts for marker layer

File size: 1.9 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.data.preferences;
3
4import org.openstreetmap.josm.Main;
5import org.openstreetmap.josm.data.Preferences.PreferenceChangeEvent;
6import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
7
8public abstract class CachedProperty<T> extends AbstractProperty<T> implements PreferenceChangedListener {
9
10 private final String defaultValueAsString;
11 private T value;
12 private int updateCount;
13
14 protected CachedProperty(String key, String defaultValueAsString) {
15 super(key, null);
16 Main.pref.addPreferenceChangeListener(this);
17 this.defaultValueAsString = defaultValueAsString;
18 updateValue();
19 }
20
21 protected void updateValue() {
22 if (!Main.pref.get(key).isEmpty()) {
23 this.value = fromString(Main.pref.get(key));
24 } else {
25 this.value = getDefaultValue();
26 }
27 updateCount++;
28 }
29
30 protected abstract T fromString(String s);
31
32 @Override
33 public T get() {
34 return value;
35 }
36
37 public void put(String value) {
38 Main.pref.put(key, value);
39 this.value = fromString(value);
40 updateCount++;
41 }
42
43 @Override
44 public final boolean put(T value) {
45 // Not used
46 throw new IllegalAccessError("You cannot use put(T). Use put(String) instead.");
47 }
48
49 public int getUpdateCount() {
50 return updateCount;
51 }
52
53 @Override
54 public T getDefaultValue() {
55 return fromString(getDefaultValueAsString());
56 }
57
58 public String getDefaultValueAsString() {
59 return defaultValueAsString;
60 }
61
62 public String getAsString() {
63 return Main.pref.get(getKey(), getDefaultValueAsString());
64 }
65
66 @Override
67 public void preferenceChanged(PreferenceChangeEvent e) {
68 if (e.getKey().equals(key)) {
69 updateValue();
70 }
71 }
72
73}
Note: See TracBrowser for help on using the repository browser.