Class SerialTurnoutManager
- java.lang.Object
-
- jmri.beans.PropertyChangeSupport
-
- jmri.beans.VetoableChangeSupport
-
- jmri.managers.AbstractManager<Turnout>
-
- jmri.managers.AbstractTurnoutManager
-
- jmri.jmrix.cmri.serial.SerialTurnoutManager
-
- All Implemented Interfaces:
java.beans.PropertyChangeListener
,java.beans.VetoableChangeListener
,java.util.EventListener
,PropertyChangeFirer
,PropertyChangeProvider
,SilenceablePropertyChangeProvider
,VetoableChangeFirer
,VetoableChangeProvider
,Manager<Turnout>
,NameIncrementingManager
,ProvidingManager<Turnout>
,TurnoutManager
public class SerialTurnoutManager extends AbstractTurnoutManager
Implement turnout manager for CMRI serial systems.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, silencedProperties
-
Fields inherited from class jmri.beans.VetoableChangeSupport
vetoableChangeSupport
-
Fields inherited from class jmri.beans.PropertyChangeSupport
propertyChangeSupport
-
Fields 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, REPORTERS, ROUTES, SECTIONS, SENSORGROUPS, SENSORS, SIGNALGROUPS, SIGNALHEADS, SIGNALMASTLOGICS, SIGNALMASTS, STRINGIOS, TIMEBASE, TRANSITS, TURNOUTS, WARRANTS
-
-
Constructor Summary
Constructors Constructor Description SerialTurnoutManager(CMRISystemConnectionMemo memo)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
allowMultipleAdditions(java.lang.String systemName)
Turnout format is more than a simple format.int
askControlType(java.lang.String systemName)
Get from the user, the type of output to be used bits to control a turnout.int
askNumControlBits(java.lang.String systemName)
Get from the user, the number of addressed bits used to control a turnout.protected Turnout
createNewTurnout(java.lang.String systemName, java.lang.String userName)
Internal method to invoke the factory, after all the logic for returning an existing Turnout has been invoked.java.lang.String
createSystemName(java.lang.String curAddress, java.lang.String prefix)
Default Turnout ensures a numeric only system name.java.lang.String
getEntryToolTip()
Get a manager-specific tool tip for adding an entry to the manager.CMRISystemConnectionMemo
getMemo()
Get the system connection for this manager.boolean
isControlTypeSupported(java.lang.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.boolean
isNumControlBitsSupported(java.lang.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.void
notifySecondBitConflict(java.lang.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.int
selectNumberOfControlBits()
Public method to allow user to specify one or two output bits for turnout control.int
selectOutputType()
Public method to allow user to specify pulsed or steady state for two output bits for turnout control.java.lang.String
validateSystemNameFormat(java.lang.String systemName, java.util.Locale locale)
Validate the format of name, returning it unchanged if valid.Manager.NameValidity
validSystemNameFormat(java.lang.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, typeLetter
-
Methods 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, vetoableChange
-
Methods inherited from class jmri.beans.VetoableChangeSupport
addVetoableChangeListener, addVetoableChangeListener, fireVetoableChange, fireVetoableChange, fireVetoableChange, getVetoableChangeListeners, getVetoableChangeListeners, removeVetoableChangeListener, removeVetoableChangeListener
-
Methods inherited from class jmri.beans.PropertyChangeSupport
addPropertyChangeListener, addPropertyChangeListener, fireIndexedPropertyChange, fireIndexedPropertyChange, fireIndexedPropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getPropertyChangeListeners, getPropertyChangeListeners, removePropertyChangeListener, removePropertyChangeListener
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods 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, validateUppercaseTrimmedSystemNameFormat
-
Methods inherited from interface jmri.NameIncrementingManager
getNextValidSystemName
-
Methods inherited from interface jmri.beans.PropertyChangeProvider
addPropertyChangeListener, addPropertyChangeListener, getPropertyChangeListeners, getPropertyChangeListeners, removePropertyChangeListener, removePropertyChangeListener
-
Methods inherited from interface jmri.beans.SilenceablePropertyChangeProvider
setPropertyChangesSilenced
-
Methods inherited from interface jmri.TurnoutManager
getBySystemName, getByUserName, provide
-
Methods inherited from interface jmri.beans.VetoableChangeProvider
addVetoableChangeListener, addVetoableChangeListener, getVetoableChangeListeners, getVetoableChangeListeners, removeVetoableChangeListener, removeVetoableChangeListener
-
-
-
-
Constructor Detail
-
SerialTurnoutManager
public SerialTurnoutManager(CMRISystemConnectionMemo memo)
-
-
Method Detail
-
getMemo
@Nonnull public CMRISystemConnectionMemo getMemo()
Get the system connection for this manager.
-
createNewTurnout
@Nonnull protected Turnout createNewTurnout(@Nonnull java.lang.String systemName, java.lang.String userName) throws java.lang.IllegalArgumentException
Internal method to invoke the factory, after all the logic for returning an existing Turnout has been invoked.- Specified by:
createNewTurnout
in 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:
java.lang.IllegalArgumentException
- if unsuccessful
-
askNumControlBits
public int askNumControlBits(@Nonnull java.lang.String systemName)
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:
askNumControlBits
in interfaceTurnoutManager
- Overrides:
askNumControlBits
in classAbstractTurnoutManager
- Parameters:
systemName
- the turnout system name- Returns:
- the bit length for turnout control
-
askControlType
public int askControlType(@Nonnull java.lang.String systemName)
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:
askControlType
in interfaceTurnoutManager
- Overrides:
askControlType
in classAbstractTurnoutManager
- Parameters:
systemName
- the turnout system name- Returns:
- 0 for steady state or the number of seconds for a pulse control
-
selectNumberOfControlBits
public int 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 int 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 void notifySecondBitConflict(java.lang.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.- Parameters:
conflict
- human readable name of turnout with conflict.bitNum
- conflict bit number.
-
allowMultipleAdditions
public boolean allowMultipleAdditions(@Nonnull java.lang.String systemName)
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
public boolean isNumControlBitsSupported(@Nonnull java.lang.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.- Specified by:
isNumControlBitsSupported
in interfaceTurnoutManager
- Overrides:
isNumControlBitsSupported
in classAbstractTurnoutManager
- Parameters:
systemName
- the turnout system name- Returns:
- true if manager supports multiple control bits for the turnout; false otherwise
-
isControlTypeSupported
public boolean isControlTypeSupported(@Nonnull java.lang.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.- Specified by:
isControlTypeSupported
in interfaceTurnoutManager
- Overrides:
isControlTypeSupported
in 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 java.lang.String createSystemName(@Nonnull java.lang.String curAddress, @Nonnull java.lang.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:
createSystemName
in interfaceTurnoutManager
- Overrides:
createSystemName
in 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 java.lang.String validateSystemNameFormat(@Nonnull java.lang.String systemName, @Nonnull java.util.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
public Manager.NameValidity validSystemNameFormat(@Nonnull java.lang.String systemName)
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:
validSystemNameFormat
in interfaceManager<Turnout>
- Overrides:
validSystemNameFormat
in classAbstractManager<Turnout>
- Parameters:
systemName
- the system name- Returns:
Manager.NameValidity.INVALID
if system name does not start withManager.getSystemNamePrefix()
;Manager.NameValidity.VALID_AS_PREFIX_ONLY
if system name equalsManager.getSystemNamePrefix()
; otherwiseManager.NameValidity.VALID
to allow Managers that do not perform more specific validation to be considered valid.
-
getEntryToolTip
public java.lang.String getEntryToolTip()
Get a manager-specific tool tip for adding an entry to the manager.- Specified by:
getEntryToolTip
in interfaceManager<Turnout>
- Overrides:
getEntryToolTip
in classAbstractTurnoutManager
- Returns:
- the tool tip or null to disable the tool tip
-
-