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}