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}