source: josm/trunk/src/org/openstreetmap/josm/spi/preferences/MemoryPreferences.java@ 13186

Last change on this file since 13186 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: 1.8 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.spi.preferences;
3
4import java.util.Collections;
5import java.util.HashMap;
6import java.util.Map;
7import java.util.Objects;
8import java.util.Set;
9
10/**
11 * Preferences implementation that keeps all settings in memory.
12 *
13 * Holds saved preferences for the current session, but does not retain any data when the
14 * program terminates.
15 *
16 * @since 12906
17 */
18public class MemoryPreferences extends AbstractPreferences {
19
20 private final Map<String, Setting<?>> settings = new HashMap<>();
21
22 @Override
23 public boolean putSetting(String key, Setting<?> setting) {
24 Setting current = settings.get(key);
25 if (setting == null) {
26 settings.remove(key);
27 } else {
28 settings.put(key, setting);
29 }
30 return Objects.equals(setting, current);
31 }
32
33 @Override
34 public <T extends Setting<?>> T getSetting(String key, T def, Class<T> klass) {
35 Setting current = settings.get(key);
36 if (current != null && klass.isInstance(current)) {
37 @SuppressWarnings("unchecked")
38 T result = (T) current;
39 return result;
40 }
41 return def;
42 }
43
44 @Override
45 public Set<String> getKeySet() {
46 return Collections.unmodifiableSet(settings.keySet());
47 }
48
49 @Override
50 public void addPreferenceChangeListener(PreferenceChangedListener listener) {
51 // do nothing
52 }
53
54 @Override
55 public void removePreferenceChangeListener(PreferenceChangedListener listener) {
56 // do nothing
57 }
58
59 @Override
60 public void addKeyPreferenceChangeListener(String key, PreferenceChangedListener listener) {
61 // do nothing
62 }
63
64 @Override
65 public void removeKeyPreferenceChangeListener(String key, PreferenceChangedListener listener) {
66 // do nothing
67 }
68
69}
Note: See TracBrowser for help on using the repository browser.