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}