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}