001package jmri.configurexml;
002
003import java.util.prefs.Preferences;
004
005import jmri.InstanceManagerAutoDefault;
006import jmri.beans.PreferencesBean;
007import jmri.profile.ProfileManager;
008import jmri.profile.ProfileUtils;
009
010/**
011 * Preferences for Load and store tables and panel files.
012 *
013 * @author Dave Sand         Copyright 2022
014 * @author Daniel Bergqvist  Copyright 2025
015 */
016public final class LoadAndStorePreferences extends PreferencesBean implements InstanceManagerAutoDefault {
017
018    public static final String EXCLUDE_FILE_HISTORY = "excludeFileHistory";
019    public static final String EXCLUDE_MEMORY_IMCURRENTTIME = "excludeMemoryIMCURRENTTIME";
020    public static final String EXCLUDE_MEMORY_CONTENTS = "excludeMemoryContents";
021    public static final String EXCLUDE_JMRI_VERSION = "excludeJmriVersion";
022    public static final String EXCLUDE_TIMEBASE = "excludeMemoryTimebase";
023    public static final String EXCLUDE_FONT_EXTENSIONS = "excludeFontExtensions";
024
025    private boolean _excludeFileHistory = false;
026    private boolean _excludeMemoryIMCURRENTTIME = false;
027    private boolean _excludeMemoryContents = false;
028    private boolean _excludeJmriVersion = false;
029    private boolean _excludeTimebase = false;
030    private boolean _excludeFontExtensions = false;
031
032
033    public LoadAndStorePreferences() {
034        super(ProfileManager.getDefault().getActiveProfile());
035        Preferences sharedPreferences = ProfileUtils.getPreferences(
036                super.getProfile(), this.getClass(), true);
037        this.readPreferences(sharedPreferences);
038    }
039
040    private void readPreferences(Preferences sharedPreferences) {
041        _excludeFileHistory = sharedPreferences.getBoolean(EXCLUDE_FILE_HISTORY, false);
042        _excludeMemoryIMCURRENTTIME = sharedPreferences.getBoolean(EXCLUDE_MEMORY_IMCURRENTTIME, false);
043        _excludeMemoryContents = sharedPreferences.getBoolean(EXCLUDE_MEMORY_CONTENTS, false);
044        _excludeJmriVersion = sharedPreferences.getBoolean(EXCLUDE_JMRI_VERSION, false);
045        _excludeTimebase = sharedPreferences.getBoolean(EXCLUDE_TIMEBASE, false);
046        _excludeFontExtensions = sharedPreferences.getBoolean(EXCLUDE_FONT_EXTENSIONS, false);
047        
048        setIsDirty(false);
049    }
050
051    public boolean compareValuesDifferent(LoadAndStorePreferences prefs) {
052        if (isExcludeFileHistory() != prefs.isExcludeFileHistory()) {
053            return true;
054        }
055        if (isExcludeMemoryIMCURRENTTIME() != prefs.isExcludeMemoryIMCURRENTTIME()) {
056            return true;
057        }
058        if (isExcludeMemoryContents() != prefs.isExcludeMemoryContents()) {
059            return true;
060        }
061        if (isExcludeJmriVersion() != prefs.isExcludeJmriVersion()) {
062            return true;
063        }
064        if (isExcludeTimebase() != prefs.isExcludeTimebase()) {
065            return true;
066        }
067        if (isExcludeFontExtensions() != prefs.isExcludeFontExtensions()) {
068            return true;
069        }
070        return false;
071    }
072
073    public void apply(LoadAndStorePreferences prefs) {
074        setExcludeFileHistory(prefs.isExcludeFileHistory());
075        setExcludeMemoryIMCURRENTTIME(prefs.isExcludeMemoryIMCURRENTTIME());
076        setExcludeMemoryContents(prefs.isExcludeMemoryContents());
077        setExcludeJmriVersion(prefs.isExcludeJmriVersion());
078        setExcludeTimebase(prefs.isExcludeTimebase());
079        setExcludeFontExtensions(prefs.isExcludeFontExtensions());
080    }
081
082    public void save() {
083        Preferences sharedPreferences = ProfileUtils.getPreferences(this.getProfile(), this.getClass(), true);
084        sharedPreferences.putBoolean(EXCLUDE_FILE_HISTORY, this.isExcludeFileHistory());
085        sharedPreferences.putBoolean(EXCLUDE_MEMORY_IMCURRENTTIME, this.isExcludeMemoryIMCURRENTTIME());
086        sharedPreferences.putBoolean(EXCLUDE_MEMORY_CONTENTS, this.isExcludeMemoryContents());
087        sharedPreferences.putBoolean(EXCLUDE_JMRI_VERSION, this.isExcludeJmriVersion());
088        sharedPreferences.putBoolean(EXCLUDE_TIMEBASE, this.isExcludeTimebase());
089        sharedPreferences.putBoolean(EXCLUDE_FONT_EXTENSIONS, this.isExcludeFontExtensions());
090        setIsDirty(false);
091    }
092
093    public void setExcludeFileHistory(boolean value) {
094        _excludeFileHistory = value;
095        setIsDirty(true);
096    }
097
098    public boolean isExcludeFileHistory() {
099        return _excludeFileHistory;
100    }
101
102    public void setExcludeMemoryIMCURRENTTIME(boolean value) {
103        _excludeMemoryIMCURRENTTIME = value;
104        setIsDirty(true);
105    }
106
107    public boolean isExcludeMemoryIMCURRENTTIME() {
108        return _excludeMemoryIMCURRENTTIME;
109    }
110
111    public void setExcludeMemoryContents(boolean value) {
112        _excludeMemoryContents = value;
113        setIsDirty(true);
114    }
115
116    public boolean isExcludeMemoryContents() {
117        return _excludeMemoryContents;
118    }
119
120    public void setExcludeJmriVersion(boolean value) {
121        _excludeJmriVersion = value;
122        setIsDirty(true);
123    }
124
125    public boolean isExcludeJmriVersion() {
126        return _excludeJmriVersion;
127    }
128
129    public void setExcludeTimebase(boolean value) {
130        _excludeTimebase = value;
131        setIsDirty(true);
132    }
133
134    public boolean isExcludeTimebase() {
135        return _excludeTimebase;
136    }
137
138    public void setExcludeFontExtensions(boolean value) {
139        _excludeFontExtensions = value;
140        setIsDirty(true);
141    }
142
143    public boolean isExcludeFontExtensions() {
144        return _excludeFontExtensions;
145    }
146
147
148//    private final static org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(StoreAndComparePreferences.class);
149}