source: josm/trunk/src/org/openstreetmap/josm/data/preferences/FallbackProperty.java@ 13536

Last change on this file since 13536 was 12987, checked in by bastiK, 7 years ago

see #15410 - change preferences scheme for named colors - makes runtime color name registry obsolete

File size: 2.6 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.data.preferences;
3
4import org.openstreetmap.josm.spi.preferences.PreferenceChangedListener;
5import org.openstreetmap.josm.tools.CheckParameterUtil;
6
7/**
8 * Property that wraps another property along with a fallback property that is used as default value.
9 *
10 * @param <T> The content type
11 * @since 12987
12 */
13public class FallbackProperty<T> extends AbstractProperty<T> {
14
15 private final AbstractProperty<T> property;
16 private final AbstractProperty<T> fallback;
17
18 /**
19 * Constructs a new {@code FallbackProperty}.
20 * @param property the wrapped property
21 * @param fallback fallback property that takes effect in the {@link #get()} method when
22 * {@code property} is not set
23 */
24 public FallbackProperty(AbstractProperty<T> property, AbstractProperty<T> fallback) {
25 super(property.getKey(), null);
26 CheckParameterUtil.ensureParameterNotNull(property, "property");
27 CheckParameterUtil.ensureParameterNotNull(fallback, "fallback");
28 this.property = property;
29 this.fallback = fallback;
30 }
31
32 /**
33 * Get the wrapped property.
34 * @return the wrapped property
35 */
36 public AbstractProperty<T> getDelegateProperty() {
37 return property;
38 }
39
40 /**
41 * Get the fallback property.
42 * @return the fallback property
43 */
44 public AbstractProperty<T> getFallbackProperty() {
45 return fallback;
46 }
47
48 @Override
49 protected void storeDefaultValue() {
50 // Default value hidden in preferences.
51 }
52
53 @Override
54 public boolean isSet() {
55 return property.isSet();
56 }
57
58 @Override
59 public T getDefaultValue() {
60 return fallback.getDefaultValue();
61 }
62
63 @Override
64 public void remove() {
65 property.remove();
66 }
67
68 @Override
69 public T get() {
70 if (property.isSet()) {
71 return property.get();
72 }
73 return fallback.get();
74 }
75
76 @Override
77 public boolean put(T value) {
78 return property.put(value);
79 }
80
81 @Override
82 protected void addListenerImpl(PreferenceChangedListener adapter) {
83 property.addListenerImpl(adapter);
84 fallback.addListenerImpl(adapter);
85 }
86
87 @Override
88 public void addWeakListener(ValueChangeListener<? super T> listener) {
89 property.addWeakListener(listener);
90 fallback.addWeakListener(listener);
91 }
92
93 @Override
94 protected void removeListenerImpl(PreferenceChangedListener adapter) {
95 property.removeListenerImpl(adapter);
96 fallback.removeListenerImpl(adapter);
97 }
98
99}
Note: See TracBrowser for help on using the repository browser.