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 classSpeedProfilePanel.SensorDetails(package private) static classSpeedProfilePanel.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.JButtoncancelButton(package private) javax.swing.JButtonclearNewDataButton(package private) javax.swing.JButtondeleteProfileButton(package private) java.beans.PropertyChangeListenerfinishListener(package private) SensorfinishSensor(package private) intfinishSpeedStep(package private) longfinishTime(package private) java.util.ArrayList<java.lang.Double>forwardOverRuns(package private) booleanisForward(package private) javax.swing.JTextFieldlengthField(package private) SpeedProfilePanel.SensorDetailsmiddleBlockSensor(package private) java.beans.PropertyChangeListenermiddleListener(package private) javax.swing.TimeroverRunTimer(package private) booleanprofileprotected floatprofileBlockLength(package private) javax.swing.JButtonprofileButtonprotected floatprofileIncrementprotected floatprofileSensorDelayprotected floatprofileSpeedprotected floatprofileSpeedAtStartprotected intprofileSpeedStepModeprotected intprofileStep(package private) RosterEntryre(package private) RosterEntryComboBoxreBox(package private) javax.swing.JButtonreplaceProfileButton(package private) java.util.ArrayList<java.lang.Double>reverseOverRuns(package private) RosterSpeedProfilerosterSpeedProfile(package private) booleansave(package private) javax.swing.JButtonsaveDefaultsButton(package private) SpeedProfilePanel.SensorDetailssensorA(package private) BeanSelectCreatePanel<Sensor>sensorAPanel(package private) SpeedProfilePanel.SensorDetailssensorB(package private) BeanSelectCreatePanel<Sensor>sensorBPanel(package private) BeanSelectCreatePanel<Sensor>sensorCPanel(package private) javax.swing.JTextFieldsensorDelay(package private) java.util.TreeMap<java.lang.Integer,SpeedProfilePanel.SpeedStep>speeds(package private) javax.swing.JTextFieldspeedStepFrom(package private) javax.swing.JTextFieldspeedStepIncr(package private) javax.swing.JTextFieldspeedStepTest(package private) javax.swing.JTextFieldspeedStepTestFwd(package private) javax.swing.JTextFieldspeedStepTestRev(package private) javax.swing.JTextFieldspeedStepTo(package private) java.beans.PropertyChangeListenerstartListener(package private) SensorstartSensor(package private) longstartTime(package private) booleanstepCalculatedprotected intstepIncr(package private) DccThrottlet(package private) SpeedProfileTabletable(package private) booleantest(package private) javax.swing.JButtontestButton(package private) javax.swing.JButtontestCancelButton(package private) floattestSpeedFwd(package private) floattestSpeedRev(package private) booleanunmergedNewData(package private) booleanunsavedUpdatedProfile(package private) javax.swing.JPanelupdate(package private) javax.swing.JButtonupdateProfileButton(package private) javax.swing.JButtonviewButton(package private) javax.swing.JButtonviewMergedButton(package private) javax.swing.JButtonviewNewButton(package private) javax.swing.JLabelwarrentScaleLabelstatic java.lang.StringXML_NAMESPACEstatic java.lang.StringXML_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 voidaddRow(javax.swing.JPanel main, java.awt.GridBagLayout gb, java.awt.GridBagConstraints c, int row, java.awt.Component left, java.awt.Component right)(package private) voidcalculateSpeed()(package private) voidcancelButton()We are canceling, release throttle, reset sensors.(package private) voidclearNewData()(package private) static javax.swing.JPanelmakeLabelPanel(java.lang.String text, java.awt.Component comp)(package private) static javax.swing.JPanelmakePadPanel(java.awt.Component comp)voidnotifyDecisionRequired(LocoAddress address, ThrottleListener.DecisionType question)Profiling on a stolen or shared throttle is invalidvoidnotifyFailedThrottleRequest(LocoAddress address, java.lang.String reason)Get notification that an attempt to request a throttle has failed.voidnotifyThrottleFound(DccThrottle _throttle)Get notification that a throttle has been found as requested.(package private) voidremoveSpeedProfile()(package private) voidsetButtonStates(boolean state)(package private) voidsetupProfile()(package private) booleanspeedStepNumOK(int num, java.lang.String step)(package private) voidstartProfile()(package private) voidstartTiming()(package private) voidstopCurrentSpeedStep()(package private) voidstopLoco()(package private) voidstopTrainTest()(package private) voidtestButton()(package private) voidupdateSpeedProfileWithResults()Merge the new data into the existing speedprofile, or create if not current, and save.(package private) voidviewMergedData()Merge the current profile with the new data in a temp area and show.(package private) voidviewNewProfileData()View the new data collected we create a dummy entry and file with collected data(package private) voidviewRosterProfileData()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:ThrottleListenerGet notification that a throttle has been found as requested.- Specified by:
notifyThrottleFoundin 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:ThrottleListenerGet notification that an attempt to request a throttle has failed.- Specified by:
notifyFailedThrottleRequestin 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:
notifyDecisionRequiredin 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()
-
-