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_JMRI_VERSION = "excludeJmriVersion";
021    public static final String EXCLUDE_TIMEBASE = "excludeMemoryTimebase";
022    public static final String EXCLUDE_FONT_EXTENSIONS = "excludeFontExtensions";
023
024    private boolean _excludeFileHistory = false;
025    private boolean _excludeMemoryIMCURRENTTIME = false;
026    private boolean _excludeJmriVersion = false;
027    private boolean _excludeTimebase = false;
028    private boolean _excludeFontExtensions = false;
029
030
031    public LoadAndStorePreferences() {
032        super(ProfileManager.getDefault().getActiveProfile());
033        Preferences sharedPreferences = ProfileUtils.getPreferences(
034                super.getProfile(), this.getClass(), true);
035        this.readPreferences(sharedPreferences);
036    }
037
038    private void readPreferences(Preferences sharedPreferences) {
039        _excludeFileHistory = sharedPreferences.getBoolean(EXCLUDE_FILE_HISTORY, false);
040        _excludeMemoryIMCURRENTTIME = sharedPreferences.getBoolean(EXCLUDE_MEMORY_IMCURRENTTIME, false);
041        _excludeJmriVersion = sharedPreferences.getBoolean(EXCLUDE_JMRI_VERSION, false);
042        _excludeTimebase = sharedPreferences.getBoolean(EXCLUDE_TIMEBASE, false);
043        _excludeFontExtensions = sharedPreferences.getBoolean(EXCLUDE_FONT_EXTENSIONS, false);
044        
045        setIsDirty(false);
046    }
047
048    public boolean compareValuesDifferent(LoadAndStorePreferences prefs) {
049        if (isExcludeFileHistory() != prefs.isExcludeFileHistory()) {
050            return true;
051        }
052        if (isExcludeMemoryIMCURRENTTIME() != prefs.isExcludeMemoryIMCURRENTTIME()) {
053            return true;
054        }
055        if (isExcludeJmriVersion() != prefs.isExcludeJmriVersion()) {
056            return true;
057        }
058        if (isExcludeTimebase() != prefs.isExcludeTimebase()) {
059            return true;
060        }
061        if (isExcludeFontExtensions() != prefs.isExcludeFontExtensions()) {
062            return true;
063        }
064        return false;
065    }
066
067    public void apply(LoadAndStorePreferences prefs) {
068        setExcludeFileHistory(prefs.isExcludeFileHistory());
069        setExcludeMemoryIMCURRENTTIME(prefs.isExcludeMemoryIMCURRENTTIME());
070        setExcludeJmriVersion(prefs.isExcludeJmriVersion());
071        setExcludeTimebase(prefs.isExcludeTimebase());
072        setExcludeFontExtensions(prefs.isExcludeFontExtensions());
073    }
074
075    public void save() {
076        Preferences sharedPreferences = ProfileUtils.getPreferences(this.getProfile(), this.getClass(), true);
077        sharedPreferences.putBoolean(EXCLUDE_FILE_HISTORY, this.isExcludeFileHistory());
078        sharedPreferences.putBoolean(EXCLUDE_MEMORY_IMCURRENTTIME, this.isExcludeMemoryIMCURRENTTIME());
079        sharedPreferences.putBoolean(EXCLUDE_JMRI_VERSION, this.isExcludeJmriVersion());
080        sharedPreferences.putBoolean(EXCLUDE_TIMEBASE, this.isExcludeTimebase());
081        sharedPreferences.putBoolean(EXCLUDE_FONT_EXTENSIONS, this.isExcludeFontExtensions());
082        setIsDirty(false);
083    }
084
085    public void setExcludeFileHistory(boolean value) {
086        _excludeFileHistory = value;
087        setIsDirty(true);
088    }
089
090    public boolean isExcludeFileHistory() {
091        return _excludeFileHistory;
092    }
093
094    public void setExcludeMemoryIMCURRENTTIME(boolean value) {
095        _excludeMemoryIMCURRENTTIME = value;
096        setIsDirty(true);
097    }
098
099    public boolean isExcludeMemoryIMCURRENTTIME() {
100        return _excludeMemoryIMCURRENTTIME;
101    }
102
103    public void setExcludeJmriVersion(boolean value) {
104        _excludeJmriVersion = value;
105        setIsDirty(true);
106    }
107
108    public boolean isExcludeJmriVersion() {
109        return _excludeJmriVersion;
110    }
111
112    public void setExcludeTimebase(boolean value) {
113        _excludeTimebase = value;
114        setIsDirty(true);
115    }
116
117    public boolean isExcludeTimebase() {
118        return _excludeTimebase;
119    }
120
121    public void setExcludeFontExtensions(boolean value) {
122        _excludeFontExtensions = value;
123        setIsDirty(true);
124    }
125
126    public boolean isExcludeFontExtensions() {
127        return _excludeFontExtensions;
128    }
129
130
131//    private final static org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(StoreAndComparePreferences.class);
132}