Class SerialTurnoutManager
- All Implemented Interfaces:
PropertyChangeListener,VetoableChangeListener,EventListener,PropertyChangeFirer,PropertyChangeProvider,SilenceablePropertyChangeProvider,VetoableChangeFirer,VetoableChangeProvider,Manager<Turnout>,NameIncrementingManager,ProvidingManager<Turnout>,TurnoutManager
System names are "CTnnn", where C is the user configurable system prefix, nnn is the turnout number without padding.
-
Nested Class Summary
Nested classes/interfaces inherited from interface jmri.Manager
Manager.ManagerDataEvent<E extends NamedBean>, Manager.ManagerDataListener<E extends NamedBean>, Manager.NameValidity -
Field Summary
Fields inherited from class jmri.managers.AbstractManager
_beans, _tsys, _tuser, memo, silenceableProperties, silencedPropertiesFields inherited from class jmri.beans.VetoableChangeSupport
vetoableChangeSupportFields inherited from class jmri.beans.PropertyChangeSupport
propertyChangeSupportFields inherited from interface jmri.Manager
ANALOGIOS, AUDIO, BLOCKBOSS, BLOCKS, CONDITIONALS, CTCDATA, ENTRYEXIT, IDTAGS, LAYOUTBLOCKS, LIGHTS, LOGIXNG_ANALOG_ACTIONS, LOGIXNG_ANALOG_EXPRESSIONS, LOGIXNG_CONDITIONALNGS, LOGIXNG_DIGITAL_ACTIONS, LOGIXNG_DIGITAL_BOOLEAN_ACTIONS, LOGIXNG_DIGITAL_EXPRESSIONS, LOGIXNG_GLOBAL_VARIABLES, LOGIXNG_MODULES, LOGIXNG_STRING_ACTIONS, LOGIXNG_STRING_EXPRESSIONS, LOGIXNG_TABLES, LOGIXNGS, LOGIXS, MEMORIES, METERFRAMES, METERS, OBLOCKS, PANELFILES, PROPERTY_BEANS, PROPERTY_CAN_DELETE, PROPERTY_DISPLAY_LIST_NAME, PROPERTY_DO_DELETE, PROPERTY_DO_NOT_DELETE, PROPERTY_LENGTH, REPORTERS, ROUTES, SECTIONS, SENSORGROUPS, SENSORS, SIGNALGROUPS, SIGNALHEADS, SIGNALMASTLOGICS, SIGNALMASTS, STRINGIOS, TIMEBASE, TRANSITS, TURNOUTS, WARRANTSFields inherited from interface jmri.TurnoutManager
PROPERTY_DEFAULT_CLOSED_SPEED, PROPERTY_DEFAULT_THROWN_SPEED -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanallowMultipleAdditions(String systemName) Turnout format is more than a simple format.intaskControlType(String systemName) Get from the user, the type of output to be used bits to control a turnout.intaskNumControlBits(String systemName) Get from the user, the number of addressed bits used to control a turnout.protected TurnoutcreateNewTurnout(String systemName, String userName) Internal method to invoke the factory, after all the logic for returning an existing Turnout has been invoked.createSystemName(String curAddress, String prefix) Default Turnout ensures a numeric only system name.Get a manager-specific tool tip for adding an entry to the manager.getMemo()Get the system connection for this manager.booleanisControlTypeSupported(String systemName) Determine if the manager supports the handling of pulsed and steady state control as theTurnoutManager.askControlType(java.lang.String)will always return a value even if it is not supported.booleanisNumControlBitsSupported(String systemName) Determine if the manager supports multiple control bits, asTurnoutManager.askNumControlBits(java.lang.String)will always return a value even if it is not supported.voidnotifySecondBitConflict(String conflict, int bitNum) Public method to notify user when the second bit of a proposed two output bit turnout has a conflict with another assigned bit.intPublic method to allow user to specify one or two output bits for turnout control.intPublic method to allow user to specify pulsed or steady state for two output bits for turnout control.validateSystemNameFormat(String systemName, Locale locale) Validate the format of name, returning it unchanged if valid.validSystemNameFormat(String systemName) Test if parameter is a properly formatted system name.Methods inherited from class jmri.managers.AbstractTurnoutManager
dispose, getBeanTypeHandled, getClosedText, getDefaultClosedSpeed, getDefaultThrownSpeed, getNamedBeanClass, getOutputInterval, getThrownText, getTurnout, getValidOperationTypes, getXMLOrder, newTurnout, outputIntervalEnds, provideTurnout, setDefaultClosedSpeed, setDefaultThrownSpeed, setOutputInterval, typeLetterMethods inherited from class jmri.managers.AbstractManager
addDataListener, checkNumeric, deleteBean, deregister, fireDataListenersAdded, fireDataListenersRemoved, fireVetoableChange, getAutoSystemName, getBySystemName, getBySystemName, getByUserName, getKnownBeanProperties, getNamedBean, getNamedBeanSet, getObjectCount, getOuterBean, getSystemPrefix, handleUserNameUniqueness, makeSystemName, propertyChange, register, registerSelf, registerUserName, removeDataListener, setDataListenerMute, setPropertyChangesSilenced, updateAutoNumber, vetoableChangeMethods inherited from class jmri.beans.VetoableChangeSupport
addVetoableChangeListener, addVetoableChangeListener, fireVetoableChange, fireVetoableChange, fireVetoableChange, getVetoableChangeListeners, getVetoableChangeListeners, removeVetoableChangeListener, removeVetoableChangeListenerMethods inherited from class jmri.beans.PropertyChangeSupport
addPropertyChangeListener, addPropertyChangeListener, fireIndexedPropertyChange, fireIndexedPropertyChange, fireIndexedPropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getPropertyChangeListeners, getPropertyChangeListeners, removePropertyChangeListener, removePropertyChangeListenerMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface jmri.Manager
addDataListener, deleteBean, deregister, getBeanTypeHandled, getKnownBeanProperties, getNamedBean, getNamedBeanSet, getObjectCount, getSubSystemNamePrefix, getSystemNamePrefix, getSystemPrefix, isValidSystemNameFormat, makeSystemName, makeSystemName, makeSystemName, register, removeDataListener, setDataListenerMute, validateBadCharsInSystemNameFormat, validateIntegerSystemNameFormat, validateNmraAccessorySystemNameFormat, validateSystemNameFormat, validateSystemNameFormatOnlyNumeric, validateSystemNamePrefix, validateTrimmedMin1NumberSystemNameFormat, validateTrimmedSystemNameFormat, validateUppercaseTrimmedSystemNameFormatMethods inherited from interface jmri.NameIncrementingManager
getNextValidSystemNameMethods inherited from interface jmri.beans.PropertyChangeProvider
addPropertyChangeListener, addPropertyChangeListener, getPropertyChangeListeners, getPropertyChangeListeners, removePropertyChangeListener, removePropertyChangeListenerMethods inherited from interface jmri.beans.SilenceablePropertyChangeProvider
setPropertyChangesSilencedMethods inherited from interface jmri.TurnoutManager
getBySystemName, getByUserName, provideMethods inherited from interface jmri.beans.VetoableChangeProvider
addVetoableChangeListener, addVetoableChangeListener, getVetoableChangeListeners, getVetoableChangeListeners, removeVetoableChangeListener, removeVetoableChangeListener
-
Constructor Details
-
SerialTurnoutManager
-
-
Method Details
-
getMemo
Get the system connection for this manager. -
createNewTurnout
@Nonnull protected Turnout createNewTurnout(@Nonnull String systemName, String userName) throws IllegalArgumentException Internal method to invoke the factory, after all the logic for returning an existing Turnout has been invoked.- Specified by:
createNewTurnoutin classAbstractTurnoutManager- Parameters:
systemName- the system name to use for the new TurnoutuserName- the user name to use for the new Turnout- Returns:
- the new Turnout or
- Throws:
IllegalArgumentException- if unsuccessful
-
askNumControlBits
Get from the user, the number of addressed bits used to control a turnout.Normally this is 1, and the default routine returns 1 automatically. Turnout Managers for systems that can handle multiple control bits should override this method with one which asks the user to specify the number of control bits. If the user specifies more than one control bit, this method should check if the additional bits are available (not assigned to another object). If the bits are not available, this method should return 0 for number of control bits, after informing the user of the problem. This function is called whenever a new turnout is defined in the Turnout table. It can also be used to set up other turnout control options, such as pulsed control of turnout machines.
- Specified by:
askNumControlBitsin interfaceTurnoutManager- Overrides:
askNumControlBitsin classAbstractTurnoutManager- Parameters:
systemName- the turnout system name- Returns:
- the bit length for turnout control
-
askControlType
Get from the user, the type of output to be used bits to control a turnout.Normally this is 0 for 'steady state' control, and the default routine returns 0 automatically. Turnout Managers for systems that can handle pulsed control as well as steady state control should override this method with one which asks the user to specify the type of control to be used. The routine should return 0 for 'steady state' control, or n for 'pulsed' control, where n specifies the duration of the pulse (normally in seconds).
- Specified by:
askControlTypein interfaceTurnoutManager- Overrides:
askControlTypein classAbstractTurnoutManager- Parameters:
systemName- the turnout system name- Returns:
- 0 for steady state or the number of seconds for a pulse control
-
selectNumberOfControlBits
Public method to allow user to specify one or two output bits for turnout control.- Returns:
- JmriJOptionPane.CLOSED_OPTION if the user cancelled without selecting. 0 if the user selected BitOption1, 1 if the user selected BitOption2.
-
selectOutputType
Public method to allow user to specify pulsed or steady state for two output bits for turnout control.- Returns:
- JmriJOptionPane.CLOSED_OPTION if the user cancelled without selecting. 0 if the user selected PulsedOptionSteady, 1 if the user selected PulsedOptionPulsed.
-
notifySecondBitConflict
Public method to notify user when the second bit of a proposed two output bit turnout has a conflict with another assigned bit.- Parameters:
conflict- human readable name of turnout with conflict.bitNum- conflict bit number.
-
allowMultipleAdditions
Turnout format is more than a simple format.- Parameters:
systemName- the system name to check against; appears to be ignored in all implementations- Returns:
- true if possible; false otherwise
-
isNumControlBitsSupported
Determine if the manager supports multiple control bits, asTurnoutManager.askNumControlBits(java.lang.String)will always return a value even if it is not supported.- Specified by:
isNumControlBitsSupportedin interfaceTurnoutManager- Overrides:
isNumControlBitsSupportedin classAbstractTurnoutManager- Parameters:
systemName- the turnout system name- Returns:
- true if manager supports multiple control bits for the turnout; false otherwise
-
isControlTypeSupported
Determine if the manager supports the handling of pulsed and steady state control as theTurnoutManager.askControlType(java.lang.String)will always return a value even if it is not supported.- Specified by:
isControlTypeSupportedin interfaceTurnoutManager- Overrides:
isControlTypeSupportedin classAbstractTurnoutManager- Parameters:
systemName- the turnout system name- Returns:
- true if manager supports the control type returned by
TurnoutManager.askControlType(java.lang.String); false otherwise
-
createSystemName
public String createSystemName(@Nonnull String curAddress, @Nonnull String prefix) throws JmriException Default Turnout ensures a numeric only system name. Create a System Name from hardware address and system letter prefix. AbstractManager performs no validation.- Specified by:
createSystemNamein interfaceTurnoutManager- Overrides:
createSystemNamein classAbstractTurnoutManager- Parameters:
curAddress- hardware address, no system prefix or type letter.prefix- - just system prefix, not including Type Letter.- Returns:
- full system name with system prefix, type letter and hardware address.
- Throws:
JmriException- if unable to create a system name.
-
validateSystemNameFormat
@Nonnull public String validateSystemNameFormat(@Nonnull String systemName, @Nonnull Locale locale) throws NamedBean.BadSystemNameException Validate the format of name, returning it unchanged if valid.Although further restrictions may be added by system-specific implementations, at a minimum, the implementation must consider a name that does not start with the System Name prefix for this manager to be invalid, and must consider a name that is the same as the System Name prefix to be invalid.
Overriding implementations may rely on
Manager.validSystemNameFormat(java.lang.String), however they must provide an actionable message in the thrown exception if that method does not returnManager.NameValidity.VALID. When overriding implementations of this method rely on validSystemNameFormat(), implementations of that method must not throw an exception, log an error, or otherwise disrupt the user.- Parameters:
systemName- the system name to validatelocale- the locale for a localized exception; this is needed for the JMRI web server, which supports multiple locales- Returns:
- the unchanged value of the name parameter
- Throws:
NamedBean.BadSystemNameException- if provided name is an invalid format
-
validSystemNameFormat
Test if parameter is a properly formatted system name. Implementations of this method must not throw an exception, log an error, or otherwise disrupt the user.- Specified by:
validSystemNameFormatin interfaceManager<Turnout>- Overrides:
validSystemNameFormatin classAbstractManager<Turnout>- Parameters:
systemName- the system name- Returns:
Manager.NameValidity.INVALIDif system name does not start withManager.getSystemNamePrefix();Manager.NameValidity.VALID_AS_PREFIX_ONLYif system name equalsManager.getSystemNamePrefix(); otherwiseManager.NameValidity.VALIDto allow Managers that do not perform more specific validation to be considered valid.
-
getEntryToolTip
Get a manager-specific tool tip for adding an entry to the manager.- Specified by:
getEntryToolTipin interfaceManager<Turnout>- Overrides:
getEntryToolTipin classAbstractTurnoutManager- Returns:
- the tool tip or null to disable the tool tip
-