Class SpeedProfilePanel
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JPanel
-
- jmri.util.swing.JmriPanel
-
- jmri.jmrit.roster.swing.speedprofile.SpeedProfilePanel
-
- All Implemented Interfaces:
java.awt.image.ImageObserver
,java.awt.MenuContainer
,java.io.Serializable
,java.util.EventListener
,javax.accessibility.Accessible
,ThrottleListener
class SpeedProfilePanel extends JmriPanel implements ThrottleListener
Set up and run automated speed table calibration.Uses three sensors in a row (see diagram in window help):
- Start sensor: Track where locomotive starts
- Block sensor: Middle track. This time through this is used to measure the speed.
- Finish sensor: Track where locomotive stops before repeating.
- Start moving with Start sensor on, others off.
- Block (middle) sensor goes active: startListener calls startTiming
- Finish sensor goes active: finishListener calls stopCurrentSpeedStep
- Block (middle) sensor goes inactive: startListener calls stopLoco, which stops loco after 2.5 seconds
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static class
SpeedProfilePanel.SensorDetails
(package private) static class
SpeedProfilePanel.SpeedStep
-
Nested classes/interfaces inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
-
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
-
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
-
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
-
Nested classes/interfaces inherited from interface jmri.ThrottleListener
ThrottleListener.DecisionType
-
-
Field Summary
Fields Modifier and Type Field Description (package private) BeanSelectCreatePanel<Block>
blockCPanel
(package private) javax.swing.JButton
cancelButton
(package private) javax.swing.JButton
clearNewDataButton
(package private) javax.swing.JButton
deleteProfileButton
(package private) java.beans.PropertyChangeListener
finishListener
(package private) Sensor
finishSensor
(package private) int
finishSpeedStep
(package private) long
finishTime
(package private) java.util.ArrayList<java.lang.Double>
forwardOverRuns
(package private) boolean
isForward
(package private) javax.swing.JTextField
lengthField
(package private) SpeedProfilePanel.SensorDetails
middleBlockSensor
(package private) java.beans.PropertyChangeListener
middleListener
(package private) javax.swing.Timer
overRunTimer
(package private) boolean
profile
protected float
profileBlockLength
(package private) javax.swing.JButton
profileButton
protected float
profileIncrement
protected float
profileSensorDelay
protected float
profileSpeed
protected float
profileSpeedAtStart
protected int
profileSpeedStepMode
protected int
profileStep
(package private) RosterEntry
re
(package private) RosterEntryComboBox
reBox
(package private) javax.swing.JButton
replaceProfileButton
(package private) java.util.ArrayList<java.lang.Double>
reverseOverRuns
(package private) RosterSpeedProfile
rosterSpeedProfile
(package private) boolean
save
(package private) javax.swing.JButton
saveDefaultsButton
(package private) SpeedProfilePanel.SensorDetails
sensorA
(package private) BeanSelectCreatePanel<Sensor>
sensorAPanel
(package private) SpeedProfilePanel.SensorDetails
sensorB
(package private) BeanSelectCreatePanel<Sensor>
sensorBPanel
(package private) BeanSelectCreatePanel<Sensor>
sensorCPanel
(package private) javax.swing.JTextField
sensorDelay
(package private) java.util.TreeMap<java.lang.Integer,SpeedProfilePanel.SpeedStep>
speeds
(package private) javax.swing.JTextField
speedStepFrom
(package private) javax.swing.JTextField
speedStepIncr
(package private) javax.swing.JTextField
speedStepTest
(package private) javax.swing.JTextField
speedStepTestFwd
(package private) javax.swing.JTextField
speedStepTestRev
(package private) javax.swing.JTextField
speedStepTo
(package private) java.beans.PropertyChangeListener
startListener
(package private) Sensor
startSensor
(package private) long
startTime
(package private) boolean
stepCalculated
protected int
stepIncr
(package private) DccThrottle
t
(package private) SpeedProfileTable
table
(package private) boolean
test
(package private) javax.swing.JButton
testButton
(package private) javax.swing.JButton
testCancelButton
(package private) float
testSpeedFwd
(package private) float
testSpeedRev
(package private) boolean
unmergedNewData
(package private) boolean
unsavedUpdatedProfile
(package private) javax.swing.JPanel
update
(package private) javax.swing.JButton
updateProfileButton
(package private) javax.swing.JButton
viewButton
(package private) javax.swing.JButton
viewMergedButton
(package private) javax.swing.JButton
viewNewButton
(package private) javax.swing.JLabel
warrentScaleLabel
static java.lang.String
XML_NAMESPACE
static java.lang.String
XML_ROOT
-
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
-
-
Constructor Summary
Constructors Constructor Description SpeedProfilePanel()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) static void
addRow(javax.swing.JPanel main, java.awt.GridBagLayout gb, java.awt.GridBagConstraints c, int row, java.awt.Component left, java.awt.Component right)
(package private) void
calculateSpeed()
(package private) void
cancelButton()
We are canceling, release throttle, reset sensors.(package private) void
clearNewData()
(package private) static javax.swing.JPanel
makeLabelPanel(java.lang.String text, java.awt.Component comp)
(package private) static javax.swing.JPanel
makePadPanel(java.awt.Component comp)
void
notifyDecisionRequired(LocoAddress address, ThrottleListener.DecisionType question)
Profiling on a stolen or shared throttle is invalidvoid
notifyFailedThrottleRequest(LocoAddress address, java.lang.String reason)
Get notification that an attempt to request a throttle has failed.void
notifyThrottleFound(DccThrottle _throttle)
Get notification that a throttle has been found as requested.(package private) void
removeSpeedProfile()
(package private) void
setButtonStates(boolean state)
(package private) void
setupProfile()
(package private) boolean
speedStepNumOK(int num, java.lang.String step)
(package private) void
startProfile()
(package private) void
startTiming()
(package private) void
stopCurrentSpeedStep()
(package private) void
stopLoco()
(package private) void
stopTrainTest()
(package private) void
testButton()
(package private) void
updateSpeedProfileWithResults()
Merge the new data into the existing speedprofile, or create if not current, and save.(package private) void
viewMergedData()
Merge the current profile with the new data in a temp area and show.(package private) void
viewNewProfileData()
View the new data collected we create a dummy entry and file with collected data(package private) void
viewRosterProfileData()
View the current speedprofile table entrys-
Methods inherited from class jmri.util.swing.JmriPanel
dispose, getHelpTarget, getMenus, getMinimumDimension, getTitle, getWindowInterface, initComponents, initContext, isMultipleInstances, setWindowInterface
-
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
-
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
-
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
-
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
-
-
-
Field Detail
-
XML_ROOT
public static final java.lang.String XML_ROOT
- See Also:
- Constant Field Values
-
XML_NAMESPACE
public static final java.lang.String XML_NAMESPACE
- See Also:
- Constant Field Values
-
profileButton
javax.swing.JButton profileButton
-
cancelButton
javax.swing.JButton cancelButton
-
testButton
javax.swing.JButton testButton
-
testCancelButton
javax.swing.JButton testCancelButton
-
clearNewDataButton
javax.swing.JButton clearNewDataButton
-
viewNewButton
javax.swing.JButton viewNewButton
-
viewMergedButton
javax.swing.JButton viewMergedButton
-
viewButton
javax.swing.JButton viewButton
-
updateProfileButton
javax.swing.JButton updateProfileButton
-
replaceProfileButton
javax.swing.JButton replaceProfileButton
-
deleteProfileButton
javax.swing.JButton deleteProfileButton
-
saveDefaultsButton
javax.swing.JButton saveDefaultsButton
-
lengthField
javax.swing.JTextField lengthField
-
sensorDelay
javax.swing.JTextField sensorDelay
-
speedStepTest
javax.swing.JTextField speedStepTest
-
speedStepTestFwd
javax.swing.JTextField speedStepTestFwd
-
speedStepTestRev
javax.swing.JTextField speedStepTestRev
-
speedStepFrom
javax.swing.JTextField speedStepFrom
-
speedStepTo
javax.swing.JTextField speedStepTo
-
speedStepIncr
javax.swing.JTextField speedStepIncr
-
warrentScaleLabel
javax.swing.JLabel warrentScaleLabel
-
sensorAPanel
BeanSelectCreatePanel<Sensor> sensorAPanel
-
sensorBPanel
BeanSelectCreatePanel<Sensor> sensorBPanel
-
blockCPanel
BeanSelectCreatePanel<Block> blockCPanel
-
sensorCPanel
BeanSelectCreatePanel<Sensor> sensorCPanel
-
reBox
RosterEntryComboBox reBox
-
table
SpeedProfileTable table
-
profile
boolean profile
-
test
boolean test
-
testSpeedFwd
float testSpeedFwd
-
testSpeedRev
float testSpeedRev
-
save
boolean save
-
unmergedNewData
boolean unmergedNewData
-
unsavedUpdatedProfile
boolean unsavedUpdatedProfile
-
re
RosterEntry re
-
t
DccThrottle t
-
finishSpeedStep
int finishSpeedStep
-
stepIncr
protected int stepIncr
-
profileStep
protected int profileStep
-
profileSpeed
protected float profileSpeed
-
profileIncrement
protected float profileIncrement
-
profileSpeedStepMode
protected int profileSpeedStepMode
-
profileSensorDelay
protected float profileSensorDelay
-
profileBlockLength
protected float profileBlockLength
-
rosterSpeedProfile
RosterSpeedProfile rosterSpeedProfile
-
profileSpeedAtStart
protected float profileSpeedAtStart
-
overRunTimer
javax.swing.Timer overRunTimer
-
startListener
java.beans.PropertyChangeListener startListener
-
finishListener
java.beans.PropertyChangeListener finishListener
-
middleListener
java.beans.PropertyChangeListener middleListener
-
startSensor
Sensor startSensor
-
finishSensor
Sensor finishSensor
-
middleBlockSensor
SpeedProfilePanel.SensorDetails middleBlockSensor
-
isForward
boolean isForward
-
stepCalculated
boolean stepCalculated
-
startTime
long startTime
-
finishTime
long finishTime
-
forwardOverRuns
java.util.ArrayList<java.lang.Double> forwardOverRuns
-
reverseOverRuns
java.util.ArrayList<java.lang.Double> reverseOverRuns
-
update
javax.swing.JPanel update
-
speeds
java.util.TreeMap<java.lang.Integer,SpeedProfilePanel.SpeedStep> speeds
-
-
Constructor Detail
-
SpeedProfilePanel
public SpeedProfilePanel()
-
-
Method Detail
-
addRow
static void addRow(javax.swing.JPanel main, java.awt.GridBagLayout gb, java.awt.GridBagConstraints c, int row, java.awt.Component left, java.awt.Component right)
-
makePadPanel
static javax.swing.JPanel makePadPanel(java.awt.Component comp)
-
makeLabelPanel
static javax.swing.JPanel makeLabelPanel(java.lang.String text, java.awt.Component comp)
-
setupProfile
void setupProfile()
-
speedStepNumOK
boolean speedStepNumOK(int num, java.lang.String step)
-
notifyThrottleFound
public void notifyThrottleFound(DccThrottle _throttle)
Description copied from interface:ThrottleListener
Get notification that a throttle has been found as requested.- Specified by:
notifyThrottleFound
in interfaceThrottleListener
- Parameters:
_throttle
- the throttle with the requested address
-
setButtonStates
void setButtonStates(boolean state)
-
notifyFailedThrottleRequest
public void notifyFailedThrottleRequest(LocoAddress address, java.lang.String reason)
Description copied from interface:ThrottleListener
Get notification that an attempt to request a throttle has failed.- Specified by:
notifyFailedThrottleRequest
in interfaceThrottleListener
- Parameters:
address
- address of the failed requestreason
- failure cause
-
notifyDecisionRequired
public void notifyDecisionRequired(LocoAddress address, ThrottleListener.DecisionType question)
Profiling on a stolen or shared throttle is invalidGet notification that a throttle request is in use by another device, and a "steal", "share", or "steal/share" decision may be required.
- Specified by:
notifyDecisionRequired
in interfaceThrottleListener
- Parameters:
address
- The LocoAddress that needs the decision.question
- The question being asked, steal / cancel, share / cancel, steal / share / cancel
-
startProfile
void startProfile()
-
startTiming
void startTiming()
-
stopCurrentSpeedStep
void stopCurrentSpeedStep()
-
stopLoco
void stopLoco()
-
calculateSpeed
void calculateSpeed()
-
updateSpeedProfileWithResults
void updateSpeedProfileWithResults()
Merge the new data into the existing speedprofile, or create if not current, and save. Clear new data.
-
viewMergedData
void viewMergedData()
Merge the current profile with the new data in a temp area and show.
-
clearNewData
void clearNewData()
-
removeSpeedProfile
void removeSpeedProfile()
-
viewNewProfileData
void viewNewProfileData()
View the new data collected we create a dummy entry and file with collected data
-
viewRosterProfileData
void viewRosterProfileData()
View the current speedprofile table entrys
-
cancelButton
void cancelButton()
We are canceling, release throttle, reset sensors.
-
testButton
void testButton()
-
stopTrainTest
void stopTrainTest()
-
-