001package jmri.jmrit.logixng.implementation; 002 003import java.util.prefs.Preferences; 004 005import jmri.beans.PreferencesBean; 006import jmri.jmrit.logixng.LogixNGPreferences; 007import jmri.jmrit.logixng.MaleSocket.ErrorHandlingType; 008import jmri.jmrit.logixng.actions.IfThenElse; 009import jmri.profile.ProfileManager; 010import jmri.profile.ProfileUtils; 011 012/** 013 * Preferences for LogixNG 014 * 015 * @author Daniel Bergqvist Copyright 2018 016 */ 017public final class DefaultLogixNGPreferences extends PreferencesBean implements LogixNGPreferences { 018 019 private static final String START_LOGIXNG_ON_LOAD = "startLogixNGOnStartup"; 020 private static final String INSTALL_DEBUGGER = "installDebugger"; 021 private static final String SHOW_SYSTEM_USER_NAMES = "showSystemUserNames"; 022 private static final String ERROR_HANDLING_TYPE = "errorHandlingType"; 023 private static final String TREE_EDITOR_HIGHLIGHT_ROW = "treeEditorHighlightRow"; 024 private static final String SHOW_SYSTEM_NAME_IN_EXCEPTION = "showSystemNameInExceptions"; 025 private static final String STRICT_TYPING_GLOBAL_VARIABLES = "strictTypingGlobalVariables"; 026 private static final String STRICT_TYPING_LOCAL_VARIABLES = "strictTypingLocalVariables"; 027 private static final String IF_THEN_ELSE_EXECUTE_TYPE_DEFAULT = "ifThenElseExecuteTypeDefault"; 028 029 private boolean _startLogixNGOnLoad = true; 030 private boolean _showSystemUserNames = false; 031 private boolean _installDebugger = true; 032 private ErrorHandlingType _errorHandlingType = ErrorHandlingType.ShowDialogBox; 033 private boolean _treeEditorHighlightRow = false; 034 private boolean _showSystemNameInException = false; 035 private boolean _strictTypingGlobalVariables = false; 036 private boolean _strictTypingLocalVariables = false; 037 private IfThenElse.ExecuteType _ifThenElseExecuteTypeDefault = IfThenElse.ExecuteType.ExecuteOnChange; 038 039 040 public DefaultLogixNGPreferences() { 041 super(ProfileManager.getDefault().getActiveProfile()); 042// System.out.format("LogixNG preferences%n"); 043 Preferences sharedPreferences = ProfileUtils.getPreferences( 044 super.getProfile(), this.getClass(), true); 045 this.readPreferences(sharedPreferences); 046 } 047 048 private void readPreferences(Preferences sharedPreferences) { 049 _startLogixNGOnLoad = sharedPreferences.getBoolean(START_LOGIXNG_ON_LOAD, _startLogixNGOnLoad); 050 _installDebugger = sharedPreferences.getBoolean(INSTALL_DEBUGGER, _installDebugger); 051 _showSystemUserNames = sharedPreferences.getBoolean(SHOW_SYSTEM_USER_NAMES, _showSystemUserNames); 052 _errorHandlingType = ErrorHandlingType.valueOf( 053 sharedPreferences.get(ERROR_HANDLING_TYPE, _errorHandlingType.name())); 054 _treeEditorHighlightRow = sharedPreferences.getBoolean(TREE_EDITOR_HIGHLIGHT_ROW, _treeEditorHighlightRow); 055 _showSystemNameInException = sharedPreferences.getBoolean(SHOW_SYSTEM_NAME_IN_EXCEPTION, _showSystemNameInException); 056 _strictTypingGlobalVariables = sharedPreferences.getBoolean(STRICT_TYPING_GLOBAL_VARIABLES, _strictTypingGlobalVariables); 057 _strictTypingLocalVariables = sharedPreferences.getBoolean(STRICT_TYPING_LOCAL_VARIABLES, _strictTypingLocalVariables); 058 _ifThenElseExecuteTypeDefault = IfThenElse.ExecuteType.valueOf( 059 sharedPreferences.get(IF_THEN_ELSE_EXECUTE_TYPE_DEFAULT, _ifThenElseExecuteTypeDefault.name())); 060 061 setIsDirty(false); 062 } 063 064 @Override 065 public boolean compareValuesDifferent(LogixNGPreferences prefs) { 066 if (getStartLogixNGOnStartup() != prefs.getStartLogixNGOnStartup()) { 067 return true; 068 } 069 if (getInstallDebugger() != prefs.getInstallDebugger()) { 070 return true; 071 } 072 if (getShowSystemUserNames() != prefs.getShowSystemUserNames()) { 073 return true; 074 } 075 if (getTreeEditorHighlightRow() != prefs.getTreeEditorHighlightRow()) { 076 return true; 077 } 078 if (getShowSystemNameInException() != prefs.getShowSystemNameInException()) { 079 return true; 080 } 081 if (getStrictTypingGlobalVariables() != prefs.getStrictTypingGlobalVariables()) { 082 return true; 083 } 084 if (getStrictTypingLocalVariables() != prefs.getStrictTypingLocalVariables()) { 085 return true; 086 } 087 if (getIfThenElseExecuteTypeDefault() != prefs.getIfThenElseExecuteTypeDefault()) { 088 return true; 089 } 090 return (getErrorHandlingType() != prefs.getErrorHandlingType()); 091 } 092 093 @Override 094 public void apply(LogixNGPreferences prefs) { 095 setStartLogixNGOnStartup(prefs.getStartLogixNGOnStartup()); 096 setInstallDebugger(prefs.getInstallDebugger()); 097 setShowSystemUserNames(prefs.getShowSystemUserNames()); 098 this.setErrorHandlingType(prefs.getErrorHandlingType()); 099 setTreeEditorHighlightRow(prefs.getTreeEditorHighlightRow()); 100 setShowSystemNameInException(prefs.getShowSystemNameInException()); 101 setStrictTypingGlobalVariables(prefs.getStrictTypingGlobalVariables()); 102 setStrictTypingLocalVariables(prefs.getStrictTypingLocalVariables()); 103 setIfThenElseExecuteTypeDefault(prefs.getIfThenElseExecuteTypeDefault()); 104 } 105 106 @Override 107 public void save() { 108 Preferences sharedPreferences = ProfileUtils.getPreferences(this.getProfile(), this.getClass(), true); 109 sharedPreferences.putBoolean(START_LOGIXNG_ON_LOAD, this.getStartLogixNGOnStartup()); 110 sharedPreferences.putBoolean(INSTALL_DEBUGGER, this.getInstallDebugger()); 111 sharedPreferences.putBoolean(SHOW_SYSTEM_USER_NAMES, this.getShowSystemUserNames()); 112 sharedPreferences.put(ERROR_HANDLING_TYPE, this.getErrorHandlingType().name()); 113 sharedPreferences.putBoolean(TREE_EDITOR_HIGHLIGHT_ROW, this.getTreeEditorHighlightRow()); 114 sharedPreferences.putBoolean(SHOW_SYSTEM_NAME_IN_EXCEPTION, this.getShowSystemNameInException()); 115 sharedPreferences.putBoolean(STRICT_TYPING_GLOBAL_VARIABLES, this.getStrictTypingGlobalVariables()); 116 sharedPreferences.putBoolean(STRICT_TYPING_LOCAL_VARIABLES, this.getStrictTypingLocalVariables()); 117 sharedPreferences.put(IF_THEN_ELSE_EXECUTE_TYPE_DEFAULT, this.getIfThenElseExecuteTypeDefault().name()); 118 setIsDirty(false); 119 } 120 121 @Override 122 public void setStartLogixNGOnStartup(boolean value) { 123 _startLogixNGOnLoad = value; 124 setIsDirty(true); 125 } 126 127 @Override 128 public boolean getStartLogixNGOnStartup() { 129 return _startLogixNGOnLoad; 130 } 131 132 @Override 133 public void setShowSystemUserNames(boolean value) { 134 _showSystemUserNames = value; 135 setIsDirty(true); 136 } 137 138 @Override 139 public boolean getShowSystemUserNames() { 140 return _showSystemUserNames; 141 } 142 143 @Override 144 public void setInstallDebugger(boolean value) { 145 _installDebugger = value; 146 setIsDirty(true); 147 } 148 149 @Override 150 public boolean getInstallDebugger() { 151 return _installDebugger; 152 } 153 154 @Override 155 public void setErrorHandlingType(ErrorHandlingType type) { 156 _errorHandlingType = type; 157 setIsDirty(true); 158 } 159 160 @Override 161 public ErrorHandlingType getErrorHandlingType() { 162 return _errorHandlingType; 163 } 164 165 @Override 166 public void setTreeEditorHighlightRow(boolean value) { 167 _treeEditorHighlightRow = value; 168 setIsDirty(true); 169 } 170 171 @Override 172 public boolean getTreeEditorHighlightRow() { 173 return _treeEditorHighlightRow; 174 } 175 176 @Override 177 public void setShowSystemNameInException(boolean value) { 178 _showSystemNameInException = value; 179 setIsDirty(true); 180 } 181 182 @Override 183 public boolean getShowSystemNameInException() { 184 return _showSystemNameInException; 185 } 186 187 @Override 188 public void setStrictTypingGlobalVariables(boolean value) { 189 _strictTypingGlobalVariables = value; 190 setIsDirty(true); 191 } 192 193 @Override 194 public boolean getStrictTypingGlobalVariables() { 195 return _strictTypingGlobalVariables; 196 } 197 198 @Override 199 public void setStrictTypingLocalVariables(boolean value) { 200 _strictTypingLocalVariables = value; 201 setIsDirty(true); 202 } 203 204 @Override 205 public boolean getStrictTypingLocalVariables() { 206 return _strictTypingLocalVariables; 207 } 208 209 @Override 210 public void setIfThenElseExecuteTypeDefault(IfThenElse.ExecuteType value) { 211 _ifThenElseExecuteTypeDefault = value; 212 setIsDirty(true); 213 } 214 215 @Override 216 public IfThenElse.ExecuteType getIfThenElseExecuteTypeDefault() { 217 return _ifThenElseExecuteTypeDefault; 218 } 219 220// private final static org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogixNGPreferences.class); 221}