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

Last change on this file since 5298 was 4932, checked in by stoecker, 12 years ago

fix 6833 - use WindowGeometry for toggle dialogs and mainwindow replacing old custom methods, improve dual screen handling

File size: 1.7 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 protected final String defaultValue;
11 private T value;
12 private int updateCount;
13
14 protected CachedProperty(String key, String defaultValue) {
15 super(key);
16 Main.pref.addPreferenceChangeListener(this);
17 this.defaultValue = defaultValue;
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 public T get() {
33 return value;
34 }
35
36 public void put(String value) {
37 Main.pref.put(key, value);
38 this.value = fromString(value);
39 updateCount++;
40 }
41
42 public int getUpdateCount() {
43 return updateCount;
44 }
45
46 @Override
47 public T getDefaultValue() {
48 return fromString(getDefaultValueAsString());
49 }
50
51 public String getDefaultValueAsString() {
52 return defaultValue;
53 }
54
55 public String getAsString() {
56 return Main.pref.get(getKey(), getDefaultValueAsString());
57 }
58
59 @Override
60 public void preferenceChanged(PreferenceChangeEvent e) {
61 if (e.getKey().equals(key)) {
62 updateValue();
63 }
64 }
65
66}
Note: See TracBrowser for help on using the repository browser.