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 Shutdown used by StoreAndCompare 012 * 013 * @author Dave Sand Copyright 2022 014 */ 015public final class ShutdownPreferences extends PreferencesBean implements InstanceManagerAutoDefault { 016 017 public static final String ENABLE_STORE_CHECK = "enableStoreCheck"; 018 public static final String DISPLAY_DIALOG = "displayDialog"; 019 020 private boolean _enableStoreCheck = false; 021 private DialogDisplayOptions _displayDialog = DialogDisplayOptions.ShowDialog; 022 023 024 public ShutdownPreferences() { 025 super(ProfileManager.getDefault().getActiveProfile()); 026 Preferences sharedPreferences = ProfileUtils.getPreferences( 027 super.getProfile(), this.getClass(), true); 028 this.readPreferences(sharedPreferences); 029 } 030 031 private void readPreferences(Preferences sharedPreferences) { 032 _enableStoreCheck = sharedPreferences.getBoolean(ENABLE_STORE_CHECK, true); 033 var display = sharedPreferences.get(DISPLAY_DIALOG, "ShowDialog"); 034 _displayDialog = DialogDisplayOptions.valueOf(display); 035 setIsDirty(false); 036 } 037 038 public boolean compareValuesDifferent(ShutdownPreferences prefs) { 039 if (isStoreCheckEnabled() != prefs.isStoreCheckEnabled()) { 040 return true; 041 } 042 if (!getDisplayDialog().equals(prefs.getDisplayDialog())) { 043 return true; 044 } 045 return false; 046 } 047 048 public void apply(ShutdownPreferences prefs) { 049 setEnableStoreCheck(prefs.isStoreCheckEnabled()); 050 setDisplayDialog(prefs.getDisplayDialog()); 051 } 052 053 public void save() { 054 Preferences sharedPreferences = ProfileUtils.getPreferences(this.getProfile(), this.getClass(), true); 055 sharedPreferences.putBoolean(ENABLE_STORE_CHECK, this.isStoreCheckEnabled()); 056 sharedPreferences.put(DISPLAY_DIALOG, this.getDisplayDialog().name()); 057 setIsDirty(false); 058 } 059 060 public void setEnableStoreCheck(boolean value) { 061 _enableStoreCheck = value; 062 setIsDirty(true); 063 } 064 065 public boolean isStoreCheckEnabled() { 066 return _enableStoreCheck; 067 } 068 069 public void setDisplayDialog(DialogDisplayOptions value) { 070 _displayDialog = value; 071 setIsDirty(true); 072 } 073 074 public DialogDisplayOptions getDisplayDialog() { 075 return _displayDialog; 076 } 077 078 public enum DialogDisplayOptions { 079 080 ShowDialog(Bundle.getMessage("OptionDisplay")), 081 SkipDialog(Bundle.getMessage("OptionSkip")); 082 083 private final String _description; 084 085 private DialogDisplayOptions(String description) { 086 _description = description; 087 } 088 089 @Override 090 public String toString() { 091 return _description; 092 } 093 } 094 095 096// private final static org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(StoreAndComparePreferences.class); 097}