Class JmriUserPreferencesManager
- java.lang.Object
-
- jmri.beans.UnboundBean
-
- jmri.beans.Bean
-
- jmri.managers.JmriUserPreferencesManager
-
- All Implemented Interfaces:
BeanInterface
,PropertyChangeFirer
,PropertyChangeProvider
,InstanceManagerAutoInitialize
,UserPreferencesManager
public class JmriUserPreferencesManager extends Bean implements UserPreferencesManager, InstanceManagerAutoInitialize
Implementation ofUserPreferencesManager
that saves user interface preferences that should be automatically remembered as they are set.This class is intended to be a transitional class from a single user interface preferences manager to multiple, domain-specific (windows, tables, dialogs, etc) user interface preferences managers. Domain-specific managers can more efficiently, both in the API and at runtime, handle each user interface preference need than a single monolithic manager.
The following items are available. Each item has its own section in the user-interface.xml file.
- Class Preferences
- This contains reminders and selections from dialogs displayed to users. These are normally
related to the JMRI NamedBeans represented by the various PanelPro tables. The
responses are shown in Preferences -> Messages. This provides the ability to
revert previous choices. See
UserMessagePreferencesPane
The dialogs are invoked by the various show<Info|Warning|Error>Message dialogs. There are two types of messages created by the dialogs.
- multipleChoice
- The multiple choice message has a keyword and the selected option. It only exists when the selected option index is greater than zero.
- reminderPrompts
- The reminder prompt message has a keyword, such as remindSaveRoute. It only exists when the reminder is active.
When the Skip message in future? or Remember this setting for next time? is selected, an entry will be added. The
setClassDescription(String)
method will use Java reflection to request additional information from the class that was used to the show dialog. This requires some specific changes to the originating class.- Class Constructor
- A constructor without parameters is required. This is used to get the class so that the following public methods can be invoked.
- getClassDescription()
- This returns a string that will be used by Preferences -> Messages.
- setMessagePreferenceDetails()
- This does not return anything directly. It makes call backs using two methods.
setMessageItemDetails(String, String, String, HashMap, int)
- Descriptive information, the items for a combo box and the current selection are sent. This information is used to create the multipleChoice item.
setPreferenceItemDetails(String, String, String)
- Descriptive information is sent to create the reminderPrompt item.
The messages are normally created by the various NamedBean classes. LogixNG uses a separate class instead of changing each affected class. This provides a concise example of the required changes at LogixNG_UserPreferences
- Checkbox State
- Contains the last checkbox state.
Methods: - Combobox Selection
- Contains the last combo box selection.
Methods: - Settings
- The existence of an entry indicates a true state.
Methods: - Window Details
- The main data is the window location and size. This is handled by
JmriJFrame
. The window details can also include window specific properties.
Methods:
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
JmriUserPreferencesManager.ClassPreferences
Holds details about the specific class.static class
JmriUserPreferencesManager.Initializer
protected static class
JmriUserPreferencesManager.MultipleChoice
protected static class
JmriUserPreferencesManager.PreferenceList
protected static class
JmriUserPreferencesManager.WindowLocations
-
Field Summary
Fields Modifier and Type Field Description protected java.util.HashMap<java.lang.String,java.lang.Boolean>
checkBoxLastSelection
protected java.util.HashMap<java.lang.String,java.lang.String>
comboBoxLastSelection
static java.lang.String
SAVE_ALLOWED
-
Fields inherited from class jmri.beans.Bean
propertyChangeSupport
-
Fields inherited from interface jmri.UserPreferencesManager
PREFERENCES_UPDATED
-
-
Constructor Summary
Constructors Constructor Description JmriUserPreferencesManager()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
displayRememberMsg()
void
finishLoading()
boolean
getChangeMade()
boolean
getCheckboxPreferenceState(java.lang.String name, boolean defaultState)
Enquire as to the state of a user preference.java.lang.String
getChoiceDescription(java.lang.String strClass, java.lang.String item)
Get the a meaningful description of a given item in a given class or group.java.lang.String
getChoiceName(java.lang.String strClass, int n)
Get the nth item name in a given class.java.util.HashMap<java.lang.Integer,java.lang.String>
getChoiceOptions(java.lang.String strClass, java.lang.String item)
Returns a map of the value against description of the different items in a given class.java.lang.String
getClassDescription()
java.lang.String
getClassDescription(java.lang.String strClass)
Get the description of a class/group registered with the preferences.protected java.lang.String
getClassName()
protected JmriUserPreferencesManager.ClassPreferences
getClassPreferences(java.lang.String strClass)
java.lang.String
getComboBoxLastSelection(java.lang.String comboBoxName)
The last selected value in a given combo box.int
getMultipleChoiceDefaultOption(java.lang.String strClass, java.lang.String choice)
Returns the default value of a given item in a given classjava.util.ArrayList<java.lang.String>
getMultipleChoiceList(java.lang.String strClass)
Get a list of all the multiple choice items registered with a given class.int
getMultipleChoiceOption(java.lang.String strClass, java.lang.String item)
Get the current value of a given item in a given class.int
getMultipleChoiceSize(java.lang.String strClass)
Get the number of Multiple Choice items registered with a given class.java.lang.String
getPreferenceItemDescription(java.lang.String strClass, java.lang.String item)
Returns the description of the given item preference in the given classjava.lang.String
getPreferenceItemName(java.lang.String strClass, int n)
Returns the itemName of the n preference in the given classjava.util.ArrayList<java.lang.String>
getPreferenceList(java.lang.String strClass)
Returns a list of preferences that are registered against a specific class.java.util.ArrayList<java.lang.String>
getPreferencesClasses()
Get the list of the classes registered with the preference manager.int
getPreferencesSize(java.lang.String strClass)
Get the combined size of both types of items registered.boolean
getPreferenceState(java.lang.String strClass, java.lang.String item)
Returns the state of a given item registered against a specific class or item.java.lang.Object
getProperty(java.lang.String strClass, java.lang.String key)
Retrieve the value associated with a key in a given class If no value has been set for that key, returns null.java.util.Set<java.lang.String>
getPropertyKeys(java.lang.String strClass)
Retrieve the complete current set of keys for a given class.boolean
getSaveWindowLocation(java.lang.String strClass)
boolean
getSaveWindowSize(java.lang.String strClass)
java.awt.Dimension
getScreen()
boolean
getSessionPreferenceState(java.lang.String name)
Enquire as to the state of a user preference for the current session.boolean
getSimplePreferenceState(java.lang.String name)
Enquire as to the state of a user preference.java.util.ArrayList<java.lang.String>
getSimplePreferenceStateList()
Returns an ArrayList of the check box states set as true.java.util.ArrayList<java.lang.String>
getWindowList()
java.awt.Point
getWindowLocation(java.lang.String strClass)
Get the x,y location of a given Window.java.awt.Dimension
getWindowSize(java.lang.String strClass)
Returns the width, height size of a given Windowboolean
hasProperties(java.lang.String strClass)
Check if there are properties for the given classvoid
initialize()
Perform any initialization that occurs after this object has been constructed and made available by the InstanceManager.protected boolean
isLoading()
Check if this object is loading preferences from storage.boolean
isSaveAllowed()
Check if saving preferences is allowed.void
readUserPreferences()
void
resetChangeMade()
protected void
saveElement(org.jdom2.Element element)
void
setChangeMade(boolean fireUpdate)
void
setCheckboxPreferenceState(java.lang.String name, boolean state)
This is used to remember the last selected state of a checkBox and thus allow that checkBox to be set to a true state when it is next initialized.void
setClassDescription(java.lang.String strClass)
Given that we know the class as a string, we will try and attempt to gather details about the preferences that has been added, so that we can make better sense of the details in the preferences window.void
setComboBoxLastSelection(java.lang.String comboBoxName, java.lang.String lastValue)
Set the last selected value in a given combo box.void
setLoading()
void
setMessageItemDetails(java.lang.String strClass, java.lang.String item, java.lang.String description, java.util.HashMap<java.lang.Integer,java.lang.String> options, int defaultOption)
Add descriptive details about a specific message box, so that if it needs to be reset in the preferences, then it is easily identifiable. displayed to the user in the preferences GUI.void
setMultipleChoiceOption(java.lang.String strClass, java.lang.String choice, int value)
Sets the value of a given item in a given class, by its integer value.void
setMultipleChoiceOption(java.lang.String strClass, java.lang.String choice, java.lang.String value)
Sets the value of a given item in a given class, by its string description.void
setPreferenceItemDetails(java.lang.String strClass, java.lang.String item, java.lang.String description)
Register details about a particular preference, so that it can be displayed in the GUI and provide a meaning full description when presented to the user.void
setPreferenceState(java.lang.String strClass, java.lang.String item, boolean state)
Used to save the state of checkboxes which can suppress messages from being displayed.void
setProperty(java.lang.String strClass, java.lang.String key, java.lang.Object value)
Attach a key/value pair to the given class, which can be retrieved later.void
setSaveAllowed(boolean saveAllowed)
Set if saving preferences is allowed.void
setSaveWindowLocation(java.lang.String strClass, boolean b)
Set if window locations should be saved for a given class.void
setSaveWindowSize(java.lang.String strClass, boolean b)
Set if window sizes should be saved for a given class.void
setSessionPreferenceState(java.lang.String name, boolean state)
Used to surpress messages for a particular session, the information is not stored, can not be changed via the GUI.void
setSimplePreferenceState(java.lang.String name, boolean state)
This is used to remember the last selected state of a checkBox and thus allow that checkBox to be set to a true state when it is next initialized.void
setWindowLocation(java.lang.String strClass, java.awt.Point location)
Saves the last location of a given component on the screen.void
setWindowSize(java.lang.String strClass, java.awt.Dimension dim)
Saves the last size of a given component on the screenvoid
showErrorMessage(java.awt.Component parentComponent, java.lang.String title, java.lang.String message, java.lang.String strClass, java.lang.String item, boolean sessionOnly, boolean alwaysRemember)
Show an error message ("don't forget ...") with a given dialog title and user message.void
showErrorMessage(java.lang.String title, java.lang.String message, java.lang.String strClass, java.lang.String item, boolean sessionOnly, boolean alwaysRemember)
Show an error message ("don't forget ...") with a given dialog title and user message.void
showInfoMessage(java.awt.Component parentComponent, java.lang.String title, java.lang.String message, java.lang.String strClass, java.lang.String item)
Show an info message ("don't forget ...") with a given dialog title and user message.void
showInfoMessage(java.awt.Component parentComponent, java.lang.String title, java.lang.String message, java.lang.String strClass, java.lang.String item, boolean sessionOnly, boolean alwaysRemember)
Show an info message ("don't forget ...") with a given dialog title and user message.void
showInfoMessage(java.lang.String title, java.lang.String message, java.lang.String strClass, java.lang.String item)
Show an info message ("don't forget ...") with a given dialog title and user message.void
showInfoMessage(java.lang.String title, java.lang.String message, java.lang.String strClass, java.lang.String item, boolean sessionOnly, boolean alwaysRemember)
Show an info message ("don't forget ...") with a given dialog title and user message.protected void
showMessage(java.awt.Component parentComponent, java.lang.String title, java.lang.String message, java.lang.String strClass, java.lang.String item, boolean sessionOnly, boolean alwaysRemember, int type)
void
showWarningMessage(java.awt.Component parentComponent, java.lang.String title, java.lang.String message, java.lang.String strClass, java.lang.String item, boolean sessionOnly, boolean alwaysRemember)
Show a warning message ("don't forget ...") with a given dialog title and user message.void
showWarningMessage(java.lang.String title, java.lang.String message, java.lang.String strClass, java.lang.String item, boolean sessionOnly, boolean alwaysRemember)
Show a warning message ("don't forget ...") with a given dialog title and user message.-
Methods inherited from class jmri.beans.Bean
addPropertyChangeListener, addPropertyChangeListener, fireIndexedPropertyChange, fireIndexedPropertyChange, fireIndexedPropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getPropertyChangeListeners, getPropertyChangeListeners, isNotifyOnEDT, removePropertyChangeListener, removePropertyChangeListener
-
Methods inherited from class jmri.beans.UnboundBean
getIndexedProperty, getProperty, getPropertyNames, hasIndexedProperty, hasProperty, setIndexedProperty, setProperty
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface jmri.UserPreferencesManager
addPropertyChangeListener, removePropertyChangeListener
-
-
-
-
Field Detail
-
SAVE_ALLOWED
public static final java.lang.String SAVE_ALLOWED
- See Also:
- Constant Field Values
-
comboBoxLastSelection
protected final java.util.HashMap<java.lang.String,java.lang.String> comboBoxLastSelection
-
checkBoxLastSelection
protected final java.util.HashMap<java.lang.String,java.lang.Boolean> checkBoxLastSelection
-
-
Constructor Detail
-
JmriUserPreferencesManager
public JmriUserPreferencesManager()
-
-
Method Detail
-
setSaveAllowed
public void setSaveAllowed(boolean saveAllowed)
Description copied from interface:UserPreferencesManager
Set if saving preferences is allowed. When setting true, preferences will be saved immediately if needed.Note only set false if a number of preferences will be set together to avoid excessive disk I/O while setting preferences.
Note remember to allow saving as soon as blocking saving is no longer needed.
- Specified by:
setSaveAllowed
in interfaceUserPreferencesManager
- Parameters:
saveAllowed
- true to allow saving; false to block saving
-
isSaveAllowed
public boolean isSaveAllowed()
Description copied from interface:UserPreferencesManager
Check if saving preferences is allowed.- Specified by:
isSaveAllowed
in interfaceUserPreferencesManager
- Returns:
- true if saving is allowed; false otherwise
-
getScreen
public java.awt.Dimension getScreen()
- Specified by:
getScreen
in interfaceUserPreferencesManager
-
setSimplePreferenceState
public void setSimplePreferenceState(java.lang.String name, boolean state)
This is used to remember the last selected state of a checkBox and thus allow that checkBox to be set to a true state when it is next initialized. This can also be used anywhere else that a simple yes/no, true/false type preference needs to be stored.It should not be used for remembering if a user wants to suppress a message as there is no means in the GUI for the user to reset the flag. setPreferenceState() should be used in this instance The name is free-form, but to avoid ambiguity it should start with the package name (package.Class) for the primary using class.
- Specified by:
setSimplePreferenceState
in interfaceUserPreferencesManager
- Parameters:
name
- A unique name to identify the state being storedstate
- simple boolean.
-
getSimplePreferenceState
public boolean getSimplePreferenceState(java.lang.String name)
Description copied from interface:UserPreferencesManager
Enquire as to the state of a user preference.Preferences that have not been set will be considered to be false.
The name is free-form, but to avoid ambiguity it should start with the package name (package.Class) for the primary using class.
- Specified by:
getSimplePreferenceState
in interfaceUserPreferencesManager
- Parameters:
name
- the name of the preference- Returns:
- the state or false if never set
-
getSimplePreferenceStateList
@Nonnull public java.util.ArrayList<java.lang.String> getSimplePreferenceStateList()
Description copied from interface:UserPreferencesManager
Returns an ArrayList of the check box states set as true.- Specified by:
getSimplePreferenceStateList
in interfaceUserPreferencesManager
- Returns:
- list of simple preferences names
-
setPreferenceState
public void setPreferenceState(java.lang.String strClass, java.lang.String item, boolean state)
Description copied from interface:UserPreferencesManager
Used to save the state of checkboxes which can suppress messages from being displayed. This method should be used by the initiating code in conjunction with the preferenceItemDetails. Here the items are stored against a specific class and access to change them is made available via the GUI, in the preference manager.The strClass parameter does not have to be the exact class name of the initiating code, but can be one where the information is related and therefore can be grouped together with.
Both the strClass and item although free form, should make up a unique reference.
- Specified by:
setPreferenceState
in interfaceUserPreferencesManager
- Parameters:
strClass
- The class that this preference should be stored or grouped with.item
- The specific item that is to be storedstate
- Boolean state of the item.
-
getPreferenceState
public boolean getPreferenceState(java.lang.String strClass, java.lang.String item)
Description copied from interface:UserPreferencesManager
Returns the state of a given item registered against a specific class or item.- Specified by:
getPreferenceState
in interfaceUserPreferencesManager
- Parameters:
strClass
- name of the class for this preferenceitem
- name of the item for which the state is being retrieved- Returns:
- the state or false if not set
-
setPreferenceItemDetails
public final void setPreferenceItemDetails(java.lang.String strClass, java.lang.String item, java.lang.String description)
Description copied from interface:UserPreferencesManager
Register details about a particular preference, so that it can be displayed in the GUI and provide a meaning full description when presented to the user.- Specified by:
setPreferenceItemDetails
in interfaceUserPreferencesManager
- Parameters:
strClass
- A string form of the class that the preference is stored or grouped withitem
- The specific item that is being storeddescription
- A meaningful description of the item that the user will understand
-
getPreferenceList
@Nonnull public java.util.ArrayList<java.lang.String> getPreferenceList(java.lang.String strClass)
Description copied from interface:UserPreferencesManager
Returns a list of preferences that are registered against a specific class.- Specified by:
getPreferenceList
in interfaceUserPreferencesManager
- Parameters:
strClass
- the class name- Returns:
- the list of preference names
-
getPreferenceItemName
@CheckForNull public java.lang.String getPreferenceItemName(java.lang.String strClass, int n)
Description copied from interface:UserPreferencesManager
Returns the itemName of the n preference in the given class- Specified by:
getPreferenceItemName
in interfaceUserPreferencesManager
- Parameters:
strClass
- the name of the classn
- the position in an array- Returns:
- the name of the preference or null if non-existent
-
getPreferenceItemDescription
@CheckForNull public java.lang.String getPreferenceItemDescription(java.lang.String strClass, java.lang.String item)
Description copied from interface:UserPreferencesManager
Returns the description of the given item preference in the given class- Specified by:
getPreferenceItemDescription
in interfaceUserPreferencesManager
- Parameters:
strClass
- the name of the classitem
- the name of the item- Returns:
- the description of the preference
-
setSessionPreferenceState
public void setSessionPreferenceState(java.lang.String name, boolean state)
Used to surpress messages for a particular session, the information is not stored, can not be changed via the GUI.This can be used to help prevent over loading the user with repetitive error messages such as turnout not found while loading a panel file due to a connection failing. The name is free-form, but to avoid ambiguity it should start with the package name (package.Class) for the primary using class.
- Specified by:
setSessionPreferenceState
in interfaceUserPreferencesManager
- Parameters:
name
- A unique identifier for preference.state
- suppression state of the item.
-
getSessionPreferenceState
public boolean getSessionPreferenceState(java.lang.String name)
Enquire as to the state of a user preference for the current session.Preferences that have not been set will be considered to be false.
The name is free-form, but to avoid ambiguity it should start with the package name (package.Class) for the primary using class.
- Specified by:
getSessionPreferenceState
in interfaceUserPreferencesManager
- Parameters:
name
- the name of the preference- Returns:
- the state or false if not set
-
showInfoMessage
public void showInfoMessage(java.lang.String title, java.lang.String message, java.lang.String strClass, java.lang.String item)
Show an info message ("don't forget ...") with a given dialog title and user message. Use a given preference name to determine whether to show it in the future. The combination of the classString and item parameters should form a unique value.- Specified by:
showInfoMessage
in interfaceUserPreferencesManager
- Parameters:
title
- message Box titlemessage
- message to be displayedstrClass
- name of the calling classitem
- name of the specific item this is used for
-
showInfoMessage
public void showInfoMessage(@CheckForNull java.awt.Component parentComponent, java.lang.String title, java.lang.String message, java.lang.String strClass, java.lang.String item)
Show an info message ("don't forget ...") with a given dialog title and user message. Use a given preference name to determine whether to show it in the future. The combination of the classString and item parameters should form a unique value.- Specified by:
showInfoMessage
in interfaceUserPreferencesManager
- Parameters:
parentComponent
- Used to improve Dialog display, can be null.title
- message Box titlemessage
- message to be displayedstrClass
- name of the calling classitem
- name of the specific item this is used for
-
showErrorMessage
public void showErrorMessage(java.lang.String title, java.lang.String message, java.lang.String strClass, java.lang.String item, boolean sessionOnly, boolean alwaysRemember)
Show an error message ("don't forget ...") with a given dialog title and user message. Use a given preference name to determine whether to show it in the future. added flag to indicate that the message should be suppressed JMRI session only. The classString and item parameters should form a unique value- Specified by:
showErrorMessage
in interfaceUserPreferencesManager
- Parameters:
title
- Message Box titlemessage
- Message to be displayedstrClass
- String value of the calling classitem
- String value of the specific item this is used forsessionOnly
- Means this message will be suppressed in this JMRI session and not be rememberedalwaysRemember
- Means that the suppression of the message will be saved
-
showErrorMessage
public void showErrorMessage(@CheckForNull java.awt.Component parentComponent, java.lang.String title, java.lang.String message, java.lang.String strClass, java.lang.String item, boolean sessionOnly, boolean alwaysRemember)
Show an error message ("don't forget ...") with a given dialog title and user message. Use a given preference name to determine whether to show it in the future. Flag to indicate that the message should be suppressed JMRI session only. The classString and item parameters should form a unique value.- Specified by:
showErrorMessage
in interfaceUserPreferencesManager
- Parameters:
parentComponent
- Used to improve Dialog display, can be null.title
- Message Box titlemessage
- Message to be displayedstrClass
- String value of the calling classitem
- String value of the specific item this is used forsessionOnly
- Means this message will be suppressed in this JMRI session and not be rememberedalwaysRemember
- Means that the suppression of the message will be saved
-
showInfoMessage
public void showInfoMessage(java.lang.String title, java.lang.String message, java.lang.String strClass, java.lang.String item, boolean sessionOnly, boolean alwaysRemember)
Show an info message ("don't forget ...") with a given dialog title and user message. Use a given preference name to determine whether to show it in the future. added flag to indicate that the message should be suppressed JMRI session only. The classString and item parameters should form a unique value- Specified by:
showInfoMessage
in interfaceUserPreferencesManager
- Parameters:
title
- Message Box titlemessage
- Message to be displayedstrClass
- String value of the calling classitem
- String value of the specific item this is used forsessionOnly
- Means this message will be suppressed in this JMRI session and not be rememberedalwaysRemember
- Means that the suppression of the message will be saved
-
showInfoMessage
public void showInfoMessage(@CheckForNull java.awt.Component parentComponent, java.lang.String title, java.lang.String message, java.lang.String strClass, java.lang.String item, boolean sessionOnly, boolean alwaysRemember)
Show an info message ("don't forget ...") with a given dialog title and user message. Use a given preference name to determine whether to show it in the future. Flag to indicate that the message should be suppressed JMRI session only. The classString and item parameters should form a unique value.- Specified by:
showInfoMessage
in interfaceUserPreferencesManager
- Parameters:
parentComponent
- Used to improve Dialog display, can be null.title
- Message Box titlemessage
- Message to be displayedstrClass
- String value of the calling classitem
- String value of the specific item this is used forsessionOnly
- Means this message will be suppressed in this JMRI session and not be rememberedalwaysRemember
- Means that the suppression of the message will be saved
-
showWarningMessage
public void showWarningMessage(java.lang.String title, java.lang.String message, java.lang.String strClass, java.lang.String item, boolean sessionOnly, boolean alwaysRemember)
Show a warning message ("don't forget ...") with a given dialog title and user message. Use a given preference name to determine whether to show it in the future. added flag to indicate that the message should be suppressed JMRI session only. The classString and item parameters should form a unique value- Specified by:
showWarningMessage
in interfaceUserPreferencesManager
- Parameters:
title
- Message Box titlemessage
- Message to be displayedstrClass
- String value of the calling classitem
- String value of the specific item this is used forsessionOnly
- Means this message will be suppressed in this JMRI session and not be rememberedalwaysRemember
- Means that the suppression of the message will be saved
-
showWarningMessage
public void showWarningMessage(@CheckForNull java.awt.Component parentComponent, java.lang.String title, java.lang.String message, java.lang.String strClass, java.lang.String item, boolean sessionOnly, boolean alwaysRemember)
Show a warning message ("don't forget ...") with a given dialog title and user message. Use a given preference name to determine whether to show it in the future. Flag to indicate that the message should be suppressed JMRI session only. The classString and item parameters should form a unique value.- Specified by:
showWarningMessage
in interfaceUserPreferencesManager
- Parameters:
parentComponent
- Used to improve Dialog display, can be null.title
- Message Box titlemessage
- Message to be displayedstrClass
- String value of the calling classitem
- String value of the specific item this is used forsessionOnly
- Means this message will be suppressed in this JMRI session and not be rememberedalwaysRemember
- Means that the suppression of the message will be saved
-
showMessage
protected void showMessage(@CheckForNull java.awt.Component parentComponent, java.lang.String title, java.lang.String message, java.lang.String strClass, java.lang.String item, boolean sessionOnly, boolean alwaysRemember, int type)
-
getComboBoxLastSelection
@CheckForNull public java.lang.String getComboBoxLastSelection(java.lang.String comboBoxName)
Description copied from interface:UserPreferencesManager
The last selected value in a given combo box.- Specified by:
getComboBoxLastSelection
in interfaceUserPreferencesManager
- Parameters:
comboBoxName
- the combo box name- Returns:
- the selected value
-
setComboBoxLastSelection
public void setComboBoxLastSelection(java.lang.String comboBoxName, java.lang.String lastValue)
Description copied from interface:UserPreferencesManager
Set the last selected value in a given combo box.The name is free-form, but to avoid ambiguity it should start with the package name (package.Class) for the primary using class, followed by an identifier for the combo box.
- Specified by:
setComboBoxLastSelection
in interfaceUserPreferencesManager
- Parameters:
comboBoxName
- the combo box namelastValue
- the selected value
-
getCheckboxPreferenceState
public boolean getCheckboxPreferenceState(java.lang.String name, boolean defaultState)
Description copied from interface:UserPreferencesManager
Enquire as to the state of a user preference.Preferences that have not been set will be considered to be defaultState.
The name is free-form, but to avoid ambiguity it should start with the package name (package.Class) for the primary using class.
- Specified by:
getCheckboxPreferenceState
in interfaceUserPreferencesManager
- Parameters:
name
- the name of the preferencedefaultState
- the default state if not set- Returns:
- the state or defaultState if never set
-
setCheckboxPreferenceState
public void setCheckboxPreferenceState(java.lang.String name, boolean state)
Description copied from interface:UserPreferencesManager
This is used to remember the last selected state of a checkBox and thus allow that checkBox to be set to a true state when it is next initialized. This can also be used anywhere else that a simple yes/no, true/false type preference needs to be stored.It should not be used for remembering if a user wants to suppress a message as there is no means in the GUI for the user to reset the flag. setPreferenceState() should be used in this instance The name is free-form, but to avoid ambiguity it should start with the package name (package.Class) for the primary using class.
- Specified by:
setCheckboxPreferenceState
in interfaceUserPreferencesManager
- Parameters:
name
- A unique name to identify the state being storedstate
- simple boolean
-
getChangeMade
public boolean getChangeMade()
-
setChangeMade
public void setChangeMade(boolean fireUpdate)
-
resetChangeMade
public void resetChangeMade()
- Specified by:
resetChangeMade
in interfaceUserPreferencesManager
-
isLoading
protected boolean isLoading()
Check if this object is loading preferences from storage.- Returns:
- true if loading preferences; false otherwise
-
setLoading
public void setLoading()
- Specified by:
setLoading
in interfaceUserPreferencesManager
-
finishLoading
public void finishLoading()
- Specified by:
finishLoading
in interfaceUserPreferencesManager
-
displayRememberMsg
public void displayRememberMsg()
-
getWindowLocation
public java.awt.Point getWindowLocation(java.lang.String strClass)
Description copied from interface:UserPreferencesManager
Get the x,y location of a given Window.- Specified by:
getWindowLocation
in interfaceUserPreferencesManager
- Parameters:
strClass
- the class name- Returns:
- the location
-
getWindowSize
public java.awt.Dimension getWindowSize(java.lang.String strClass)
Description copied from interface:UserPreferencesManager
Returns the width, height size of a given Window- Specified by:
getWindowSize
in interfaceUserPreferencesManager
- Parameters:
strClass
- the class name- Returns:
- the size
-
getSaveWindowSize
public boolean getSaveWindowSize(java.lang.String strClass)
- Specified by:
getSaveWindowSize
in interfaceUserPreferencesManager
-
getSaveWindowLocation
public boolean getSaveWindowLocation(java.lang.String strClass)
- Specified by:
getSaveWindowLocation
in interfaceUserPreferencesManager
-
setSaveWindowSize
public void setSaveWindowSize(java.lang.String strClass, boolean b)
Description copied from interface:UserPreferencesManager
Set if window sizes should be saved for a given class. Method has no effect if strClass is null or equalsjmri.util.JmriJFrame
.- Specified by:
setSaveWindowSize
in interfaceUserPreferencesManager
- Parameters:
strClass
- name of the classb
- true if window sizes should be saved; false otherwise
-
setSaveWindowLocation
public void setSaveWindowLocation(java.lang.String strClass, boolean b)
Description copied from interface:UserPreferencesManager
Set if window locations should be saved for a given class. Method has no effect if strClass is null or equalsjmri.util.JmriJFrame
.- Specified by:
setSaveWindowLocation
in interfaceUserPreferencesManager
- Parameters:
strClass
- name of the classb
- true if window locations should be saved; false otherwise
-
setWindowLocation
public void setWindowLocation(java.lang.String strClass, java.awt.Point location)
Description copied from interface:UserPreferencesManager
Saves the last location of a given component on the screen.The jmri.util.JmriJFrame, will automatically use the class name of the frame if the class name returned is equal to jmri.util.JmriJFrame, the location is not stored
- Specified by:
setWindowLocation
in interfaceUserPreferencesManager
- Parameters:
strClass
- This is a unique identifier for window location being savedlocation
- The x,y location of the window given in a Point
-
setWindowSize
public void setWindowSize(java.lang.String strClass, java.awt.Dimension dim)
Description copied from interface:UserPreferencesManager
Saves the last size of a given component on the screenThe jmri.util.JmriJFrame, will automatically use the class name of the frame if the class name returned is equal to jmri.util.JmriJFrame, the size is not stored
- Specified by:
setWindowSize
in interfaceUserPreferencesManager
- Parameters:
strClass
- This is a unique identifier for window size being saveddim
- The width, height size of the window given in a Dimension
-
getWindowList
public java.util.ArrayList<java.lang.String> getWindowList()
- Specified by:
getWindowList
in interfaceUserPreferencesManager
-
setProperty
public void setProperty(java.lang.String strClass, java.lang.String key, java.lang.Object value)
Description copied from interface:UserPreferencesManager
Attach a key/value pair to the given class, which can be retrieved later. These are not bound properties as yet, and don't throw events on modification. Key must not be null.- Specified by:
setProperty
in interfaceUserPreferencesManager
- Parameters:
strClass
- class to usekey
- Prior to 4.3.5, this could be an Object.value
- value to use
-
getProperty
public java.lang.Object getProperty(java.lang.String strClass, java.lang.String key)
Description copied from interface:UserPreferencesManager
Retrieve the value associated with a key in a given class If no value has been set for that key, returns null.- Specified by:
getProperty
in interfaceUserPreferencesManager
- Parameters:
strClass
- class to usekey
- item to retrieve- Returns:
- stored value
-
getPropertyKeys
public java.util.Set<java.lang.String> getPropertyKeys(java.lang.String strClass)
Description copied from interface:UserPreferencesManager
Retrieve the complete current set of keys for a given class.- Specified by:
getPropertyKeys
in interfaceUserPreferencesManager
- Parameters:
strClass
- class to use- Returns:
- complete set of keys
-
hasProperties
public boolean hasProperties(java.lang.String strClass)
Description copied from interface:UserPreferencesManager
Check if there are properties for the given class- Specified by:
hasProperties
in interfaceUserPreferencesManager
- Parameters:
strClass
- class to check- Returns:
- true if properties for strClass are maintained; false otherwise
-
getClassDescription
@Nonnull public java.lang.String getClassDescription(java.lang.String strClass)
Description copied from interface:UserPreferencesManager
Get the description of a class/group registered with the preferences.- Specified by:
getClassDescription
in interfaceUserPreferencesManager
- Parameters:
strClass
- the class name- Returns:
- the description
-
getPreferencesClasses
@Nonnull public java.util.ArrayList<java.lang.String> getPreferencesClasses()
Description copied from interface:UserPreferencesManager
Get the list of the classes registered with the preference manager.- Specified by:
getPreferencesClasses
in interfaceUserPreferencesManager
- Returns:
- the list of class names
-
setClassDescription
public void setClassDescription(java.lang.String strClass)
Given that we know the class as a string, we will try and attempt to gather details about the preferences that has been added, so that we can make better sense of the details in the preferences window.This looks for specific methods within the class called "getClassDescription" and "setMessagePreferencesDetails". If found it will invoke the methods, this will then trigger the class to send details about its preferences back to this code.
- Specified by:
setClassDescription
in interfaceUserPreferencesManager
- Parameters:
strClass
- description to use for the class
-
setMessageItemDetails
public void setMessageItemDetails(java.lang.String strClass, java.lang.String item, java.lang.String description, java.util.HashMap<java.lang.Integer,java.lang.String> options, int defaultOption)
Add descriptive details about a specific message box, so that if it needs to be reset in the preferences, then it is easily identifiable. displayed to the user in the preferences GUI.- Specified by:
setMessageItemDetails
in interfaceUserPreferencesManager
- Parameters:
strClass
- String value of the calling class/groupitem
- String value of the specific item this is used for.description
- A meaningful description that can be used in a label to describe the itemoptions
- A map of the integer value of the option against a meaningful description.defaultOption
- The default option for the given item.
-
getChoiceOptions
public java.util.HashMap<java.lang.Integer,java.lang.String> getChoiceOptions(java.lang.String strClass, java.lang.String item)
Description copied from interface:UserPreferencesManager
Returns a map of the value against description of the different items in a given class. This information can then be used to build a Combo box.- Specified by:
getChoiceOptions
in interfaceUserPreferencesManager
- Parameters:
strClass
- Class or group of the given itemitem
- the item which we wish to return the details about.- Returns:
- map of choices
-
getMultipleChoiceSize
public int getMultipleChoiceSize(java.lang.String strClass)
Description copied from interface:UserPreferencesManager
Get the number of Multiple Choice items registered with a given class.- Specified by:
getMultipleChoiceSize
in interfaceUserPreferencesManager
- Parameters:
strClass
- the class name- Returns:
- number of items
-
getMultipleChoiceList
public java.util.ArrayList<java.lang.String> getMultipleChoiceList(java.lang.String strClass)
Description copied from interface:UserPreferencesManager
Get a list of all the multiple choice items registered with a given class.- Specified by:
getMultipleChoiceList
in interfaceUserPreferencesManager
- Parameters:
strClass
- the class name- Returns:
- list of item names
-
getChoiceName
public java.lang.String getChoiceName(java.lang.String strClass, int n)
Description copied from interface:UserPreferencesManager
Get the nth item name in a given class.- Specified by:
getChoiceName
in interfaceUserPreferencesManager
- Parameters:
strClass
- the class namen
- the position- Returns:
- the item name
-
getChoiceDescription
public java.lang.String getChoiceDescription(java.lang.String strClass, java.lang.String item)
Description copied from interface:UserPreferencesManager
Get the a meaningful description of a given item in a given class or group.- Specified by:
getChoiceDescription
in interfaceUserPreferencesManager
- Parameters:
strClass
- the class nameitem
- the item name- Returns:
- the item description
-
getMultipleChoiceOption
public int getMultipleChoiceOption(java.lang.String strClass, java.lang.String item)
Description copied from interface:UserPreferencesManager
Get the current value of a given item in a given class.- Specified by:
getMultipleChoiceOption
in interfaceUserPreferencesManager
- Parameters:
strClass
- the class nameitem
- the item name- Returns:
- the value
-
getMultipleChoiceDefaultOption
public int getMultipleChoiceDefaultOption(java.lang.String strClass, java.lang.String choice)
Description copied from interface:UserPreferencesManager
Returns the default value of a given item in a given class- Specified by:
getMultipleChoiceDefaultOption
in interfaceUserPreferencesManager
- Parameters:
strClass
- the class namechoice
- the item name- Returns:
- the default value
-
setMultipleChoiceOption
public void setMultipleChoiceOption(java.lang.String strClass, java.lang.String choice, java.lang.String value)
Description copied from interface:UserPreferencesManager
Sets the value of a given item in a given class, by its string description.- Specified by:
setMultipleChoiceOption
in interfaceUserPreferencesManager
- Parameters:
strClass
- the class namechoice
- the item namevalue
- the item value description
-
setMultipleChoiceOption
public void setMultipleChoiceOption(java.lang.String strClass, java.lang.String choice, int value)
Description copied from interface:UserPreferencesManager
Sets the value of a given item in a given class, by its integer value.- Specified by:
setMultipleChoiceOption
in interfaceUserPreferencesManager
- Parameters:
strClass
- the class namechoice
- the item namevalue
- the item value
-
getClassDescription
public java.lang.String getClassDescription()
-
getClassName
protected final java.lang.String getClassName()
-
getClassPreferences
protected final JmriUserPreferencesManager.ClassPreferences getClassPreferences(java.lang.String strClass)
-
getPreferencesSize
public int getPreferencesSize(java.lang.String strClass)
Description copied from interface:UserPreferencesManager
Get the combined size of both types of items registered.- Specified by:
getPreferencesSize
in interfaceUserPreferencesManager
- Parameters:
strClass
- the class name- Returns:
- number of registered preferences
-
readUserPreferences
public final void readUserPreferences()
-
saveElement
protected void saveElement(@Nonnull org.jdom2.Element element)
-
initialize
public void initialize()
Description copied from interface:InstanceManagerAutoInitialize
Perform any initialization that occurs after this object has been constructed and made available by the InstanceManager.- Specified by:
initialize
in interfaceInstanceManagerAutoInitialize
-
-