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}