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    public static final String SHORTEN_LAYOUT_EDITOR_WRITES = "shortenLayoutEditorWrites";
025
026    private boolean _excludeFileHistory = false;
027    private boolean _excludeMemoryIMCURRENTTIME = false;
028    private boolean _excludeMemoryContents = false;
029    private boolean _excludeJmriVersion = false;
030    private boolean _excludeTimebase = false;
031    private boolean _excludeFontExtensions = false;
032    private boolean _shortenLayoutEditorWrites = false;
033
034
035    public LoadAndStorePreferences() {
036        super(ProfileManager.getDefault().getActiveProfile());
037        Preferences sharedPreferences = ProfileUtils.getPreferences(
038                super.getProfile(), this.getClass(), true);
039        this.readPreferences(sharedPreferences);
040    }
041
042    private void readPreferences(Preferences sharedPreferences) {
043        _excludeFileHistory = sharedPreferences.getBoolean(EXCLUDE_FILE_HISTORY, false);
044        _excludeMemoryIMCURRENTTIME = sharedPreferences.getBoolean(EXCLUDE_MEMORY_IMCURRENTTIME, false);
045        _excludeMemoryContents = sharedPreferences.getBoolean(EXCLUDE_MEMORY_CONTENTS, false);
046        _excludeJmriVersion = sharedPreferences.getBoolean(EXCLUDE_JMRI_VERSION, false);
047        _excludeTimebase = sharedPreferences.getBoolean(EXCLUDE_TIMEBASE, false);
048        _excludeFontExtensions = sharedPreferences.getBoolean(EXCLUDE_FONT_EXTENSIONS, false);
049        _shortenLayoutEditorWrites = sharedPreferences.getBoolean(SHORTEN_LAYOUT_EDITOR_WRITES, false);
050        
051        setIsDirty(false);
052    }
053
054    public boolean compareValuesDifferent(LoadAndStorePreferences prefs) {
055        if (isExcludeFileHistory() != prefs.isExcludeFileHistory()) {
056            return true;
057        }
058        if (isExcludeMemoryIMCURRENTTIME() != prefs.isExcludeMemoryIMCURRENTTIME()) {
059            return true;
060        }
061        if (isExcludeMemoryContents() != prefs.isExcludeMemoryContents()) {
062            return true;
063        }
064        if (isExcludeJmriVersion() != prefs.isExcludeJmriVersion()) {
065            return true;
066        }
067        if (isExcludeTimebase() != prefs.isExcludeTimebase()) {
068            return true;
069        }
070        if (isExcludeFontExtensions() != prefs.isExcludeFontExtensions()) {
071            return true;
072        }
073        if (isShortenLayoutEditorWrites() != prefs.isShortenLayoutEditorWrites()) {
074            return true;
075        }
076        return false;
077    }
078
079    public void apply(LoadAndStorePreferences prefs) {
080        setExcludeFileHistory(prefs.isExcludeFileHistory());
081        setExcludeMemoryIMCURRENTTIME(prefs.isExcludeMemoryIMCURRENTTIME());
082        setExcludeMemoryContents(prefs.isExcludeMemoryContents());
083        setExcludeJmriVersion(prefs.isExcludeJmriVersion());
084        setExcludeTimebase(prefs.isExcludeTimebase());
085        setExcludeFontExtensions(prefs.isExcludeFontExtensions());
086        setShortenLayoutEditorWrites(prefs.isShortenLayoutEditorWrites());
087    }
088
089    public void save() {
090        Preferences sharedPreferences = ProfileUtils.getPreferences(this.getProfile(), this.getClass(), true);
091        sharedPreferences.putBoolean(EXCLUDE_FILE_HISTORY, this.isExcludeFileHistory());
092        sharedPreferences.putBoolean(EXCLUDE_MEMORY_IMCURRENTTIME, this.isExcludeMemoryIMCURRENTTIME());
093        sharedPreferences.putBoolean(EXCLUDE_MEMORY_CONTENTS, this.isExcludeMemoryContents());
094        sharedPreferences.putBoolean(EXCLUDE_JMRI_VERSION, this.isExcludeJmriVersion());
095        sharedPreferences.putBoolean(EXCLUDE_TIMEBASE, this.isExcludeTimebase());
096        sharedPreferences.putBoolean(EXCLUDE_FONT_EXTENSIONS, this.isExcludeFontExtensions());
097        sharedPreferences.putBoolean(SHORTEN_LAYOUT_EDITOR_WRITES, this.isShortenLayoutEditorWrites());
098        setIsDirty(false);
099    }
100
101    public void setExcludeFileHistory(boolean value) {
102        _excludeFileHistory = value;
103        setIsDirty(true);
104    }
105
106    public boolean isExcludeFileHistory() {
107        return _excludeFileHistory;
108    }
109
110    public void setExcludeMemoryIMCURRENTTIME(boolean value) {
111        _excludeMemoryIMCURRENTTIME = value;
112        setIsDirty(true);
113    }
114
115    public boolean isExcludeMemoryIMCURRENTTIME() {
116        return _excludeMemoryIMCURRENTTIME;
117    }
118
119    public void setExcludeMemoryContents(boolean value) {
120        _excludeMemoryContents = value;
121        setIsDirty(true);
122    }
123
124    public boolean isExcludeMemoryContents() {
125        return _excludeMemoryContents;
126    }
127
128    public void setExcludeJmriVersion(boolean value) {
129        _excludeJmriVersion = value;
130        setIsDirty(true);
131    }
132
133    public boolean isExcludeJmriVersion() {
134        return _excludeJmriVersion;
135    }
136
137    public void setExcludeTimebase(boolean value) {
138        _excludeTimebase = value;
139        setIsDirty(true);
140    }
141
142    public boolean isExcludeTimebase() {
143        return _excludeTimebase;
144    }
145
146    public void setExcludeFontExtensions(boolean value) {
147        _excludeFontExtensions = value;
148        setIsDirty(true);
149    }
150
151    public boolean isExcludeFontExtensions() {
152        return _excludeFontExtensions;
153    }
154
155    public void setShortenLayoutEditorWrites(boolean value) {
156        _shortenLayoutEditorWrites = value;
157        setIsDirty(true);
158    }
159
160    public boolean isShortenLayoutEditorWrites() {
161        return _shortenLayoutEditorWrites;
162    }
163
164
165//    private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(StoreAndComparePreferences.class);
166}