Package jmri.jmrit.symbolicprog
Class CombinedLocoSelPane
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
jmri.util.swing.JmriPanel
jmri.jmrit.symbolicprog.LocoSelPane
jmri.jmrit.symbolicprog.CombinedLocoSelPane
- All Implemented Interfaces:
ImageObserver,MenuContainer,PropertyChangeListener,Serializable,EventListener,Accessible
- Direct Known Subclasses:
CombinedLocoSelListPane,CombinedLocoSelTreePane
Provide GUI controls to select a known loco and/or new decoder.
When the "open programmer" button is pushed, i.e. the user is ready to continue, the startProgrammer method is invoked. This should be overridden (e.g. in a local anonymous class) to create the programmer frame you're interested in.
To override this class to use a different decoder-selection GUI, replace members:
- layoutDecoderSelection
- updateForDecoderTypeID
- updateForDecoderMfgID
- updateForDecoderNotID
- resetDecoder
- isDecoderSelected
- selectedDecoderName
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanelNested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponentNested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainerNested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy -
Field Summary
FieldsModifier and TypeFieldDescription(package private) JLabelReference to an external (not in this pane) JLabel that should be updated with status information as identification happens.protected JButtonprotected JToggleButtonprotected JToggleButtonprotected GlobalRosterEntryComboBox(package private) ProgModeSelectorFields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOWFields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH -
Constructor Summary
ConstructorsConstructorDescriptionCombinedLocoSelPane(JLabel s, ProgModeSelector selector) Provide GUI controls to select a known loco and/or new decoder. -
Method Summary
Modifier and TypeMethodDescription(package private) JToggleButtonAdd a decoder identification button.protected JPanelCreates a Programmer Selection panel.protected voidinit()Initialize the GUI.(package private) booleanHas the user selected a decoder type, either manually or via a successful event?protected JPanelCreate the panel used to select the decoder.protected JPanelCreate the panel used to select an existing entry.protected voidhandle pushing the open programmer button by finding names, then calling a template method.protected voidStart with a locomotive selected, so we're opening an existing RosterEntry.protected voidStart with a decoder selected, so we're going to create a new RosterEntry.voidNotification that the Roster has changed, so the locomotive selection list has to be changed.protected voidselectDecoder(int mfgID, int modelID, int productID) Identify decoder complete, act on it by setting the GUI This will fire "GUI changed" events which will reset the locomotive GUI.protected StringConvert the decoder selection UI result into a name.protected voidselectLoco(int dccAddress) Identify locomotive complete, act on it by setting the GUI.(package private) voidSet the decoder GUI back to having no selection.protected voidIdentify loco button pressed, start the identify operation.protected voidIdentify loco button pressed, start the identify operation This defines what happens when the identify is done.protected voidstartProgrammer(DecoderFile decoderFile, RosterEntry r, String progName) Start the desired type of programmer.(package private) voidupdateForDecoderMfgID(String pMfg, int pMfgID, int pModelID) Decoder identify has not matched specific types, but did find manufacturer match.(package private) voidupdateForDecoderNotID(int pMfgID, int pModelID) Decoder identify did not match anything, warn and show all.(package private) voidupdateForDecoderTypeID(List<DecoderFile> pList) Decoder identify has matched one or more specific types.Methods inherited from class jmri.util.swing.JmriPanel
dispose, getHelpTarget, getMenus, getMinimumDimension, getTitle, getWindowInterface, initComponents, initContext, isMultipleInstances, setWindowInterfaceMethods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUIMethods 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, updateMethods 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, validateTreeMethods 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 Details
-
selector
-
_statusLabel
Reference to an external (not in this pane) JLabel that should be updated with status information as identification happens. -
locoBox
-
programmerBox
-
iddecoder
-
idloco
-
go2
-
-
Constructor Details
-
CombinedLocoSelPane
Provide GUI controls to select a known loco and/or new decoder.- Parameters:
s- Reference to a JLabel that should be updated with status information as identification happens.selector- Reference to aProgModeSelectorpanel that configures the programming mode.
-
-
Method Details
-
layoutDecoderSelection
Create the panel used to select the decoder.- Returns:
- a JPanel for handling the decoder-selection GUI
-
addDecoderIdentButton
Add a decoder identification button.- Returns:
- the button
-
setDecoderSelectionFromLoco
Set the decoder GUI back to having no selection.- Parameters:
loco- the loco name
-
isDecoderSelected
boolean isDecoderSelected()Has the user selected a decoder type, either manually or via a successful event?- Returns:
- true if a decoder type is selected
-
selectedDecoderType
Convert the decoder selection UI result into a name.- Returns:
- The selected decoder type name, or null if none selected.
-
layoutRosterSelection
Create the panel used to select an existing entry.- Returns:
- a JPanel for handling the entry-selection GUI
-
init
Initialize the GUI. -
createProgrammerSelection
Creates a Programmer Selection panel.- Returns:
- the panel
-
startIdentifyLoco
Identify loco button pressed, start the identify operation This defines what happens when the identify is done. -
startIdentifyDecoder
Identify loco button pressed, start the identify operation. This defines what happens when the identify is done. -
propertyChange
Notification that the Roster has changed, so the locomotive selection list has to be changed.- Specified by:
propertyChangein interfacePropertyChangeListener- Parameters:
ev- Ignored.
-
selectLoco
Identify locomotive complete, act on it by setting the GUI. This will fire "GUI changed" events which will reset the decoder GUI.- Parameters:
dccAddress- the address to select
-
selectDecoder
Identify decoder complete, act on it by setting the GUI This will fire "GUI changed" events which will reset the locomotive GUI.- Parameters:
mfgID- the decoder's manufacturer ID value from CV8modelID- the decoder's model ID value from CV7productID- the decoder's product ID
-
updateForDecoderTypeID
Decoder identify has matched one or more specific types.- Parameters:
pList- a list of decoders
-
updateForDecoderMfgID
Decoder identify has not matched specific types, but did find manufacturer match.- Parameters:
pMfg- Manufacturer name. This is passed to save time, as it has already been determined once.pMfgID- Manufacturer ID number (CV8)pModelID- Model ID number (CV7)
-
updateForDecoderNotID
Decoder identify did not match anything, warn and show all.- Parameters:
pMfgID- Manufacturer ID number (CV8)pModelID- Model ID number (CV7)
-
openButton
handle pushing the open programmer button by finding names, then calling a template method. -
openKnownLoco
Start with a locomotive selected, so we're opening an existing RosterEntry. -
openNewLoco
Start with a decoder selected, so we're going to create a new RosterEntry. -
startProgrammer
protected void startProgrammer(@CheckForNull DecoderFile decoderFile, @Nonnull RosterEntry r, @Nonnull String progName) Start the desired type of programmer.- Parameters:
decoderFile- defines the type of decoder installed; if null, check the RosterEntry re for thatr- Existing roster entry defining this locomotiveprogName- name of the programmer (Layout connection) being used
-