001// License: GPL. See LICENSE file for details. 002package org.openstreetmap.josm.gui.preferences.advanced; 003 004import org.openstreetmap.josm.data.Preferences; 005import org.openstreetmap.josm.tools.CheckParameterUtil; 006 007/** 008 * Class to store single preference line for the table 009 * @since 6021 : extracted from AdvancedPreference class 010 */ 011public class PrefEntry implements Comparable<PrefEntry> { 012 private String key; 013 private Preferences.Setting value; 014 private Preferences.Setting defaultValue; 015 private boolean isDefault; 016 private boolean changed; 017 018 public PrefEntry(String key, Preferences.Setting value, Preferences.Setting defaultValue, boolean isDefault) { 019 CheckParameterUtil.ensureParameterNotNull(key); 020 CheckParameterUtil.ensureParameterNotNull(value); 021 CheckParameterUtil.ensureParameterNotNull(defaultValue); 022 this.key = key; 023 this.value = value; 024 this.defaultValue = defaultValue; 025 this.isDefault = isDefault; 026 } 027 028 public String getKey() { 029 return key; 030 } 031 032 public Preferences.Setting getValue() { 033 return value; 034 } 035 036 public Preferences.Setting getDefaultValue() { 037 return defaultValue; 038 } 039 040 public void setValue(Preferences.Setting value) { 041 this.value = value; 042 changed = true; 043 isDefault = false; 044 } 045 046 public boolean isDefault() { 047 return isDefault; 048 } 049 050 public boolean isChanged() { 051 return changed; 052 } 053 054 public void markAsChanged() { 055 changed = true; 056 } 057 058 public void reset() { 059 value = defaultValue; 060 changed = true; 061 isDefault = true; 062 } 063 064 @Override 065 public int compareTo(PrefEntry other) { 066 return key.compareTo(other.key); 067 } 068 069 @Override 070 public String toString() { 071 return value.toString(); 072 } 073}