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:
java.awt.image.ImageObserver
,java.awt.MenuContainer
,java.beans.PropertyChangeListener
,java.io.Serializable
,java.util.EventListener
,javax.accessibility.Accessible
- Direct Known Subclasses:
CombinedLocoSelListPane
,CombinedLocoSelTreePane
public class CombinedLocoSelPane extends LocoSelPane implements java.beans.PropertyChangeListener
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:
- Serialized Form
-
-
Nested Class Summary
-
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
-
-
Field Summary
Fields Modifier and Type Field Description (package private) javax.swing.JLabel
_statusLabel
Reference to an external (not in this pane) JLabel that should be updated with status information as identification happens.protected javax.swing.JButton
go2
protected javax.swing.JToggleButton
iddecoder
protected javax.swing.JToggleButton
idloco
protected GlobalRosterEntryComboBox
locoBox
protected javax.swing.JComboBox<java.lang.String>
programmerBox
(package private) ProgModeSelector
selector
-
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 CombinedLocoSelPane(javax.swing.JLabel s, ProgModeSelector selector)
Provide GUI controls to select a known loco and/or new decoder.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) javax.swing.JToggleButton
addDecoderIdentButton()
Add a decoder identification button.protected javax.swing.JPanel
createProgrammerSelection()
Creates a Programmer Selection panel.protected void
init()
Initialize the GUI.(package private) boolean
isDecoderSelected()
Has the user selected a decoder type, either manually or via a successful event?protected javax.swing.JPanel
layoutDecoderSelection()
Create the panel used to select the decoder.protected javax.swing.JPanel
layoutRosterSelection()
Create the panel used to select an existing entry.protected void
openButton()
handle pushing the open programmer button by finding names, then calling a template method.protected void
openKnownLoco()
Start with a locomotive selected, so we're opening an existing RosterEntry.protected void
openNewLoco()
Start with a decoder selected, so we're going to create a new RosterEntry.void
propertyChange(java.beans.PropertyChangeEvent ev)
Notification that the Roster has changed, so the locomotive selection list has to be changed.protected void
selectDecoder(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 java.lang.String
selectedDecoderType()
Convert the decoder selection UI result into a name.protected void
selectLoco(int dccAddress)
Identify locomotive complete, act on it by setting the GUI.(package private) void
setDecoderSelectionFromLoco(java.lang.String loco)
Set the decoder GUI back to having no selection.protected void
startIdentifyDecoder()
Identify loco button pressed, start the identify operation.protected void
startIdentifyLoco()
Identify loco button pressed, start the identify operation This defines what happens when the identify is done.protected void
startProgrammer(DecoderFile decoderFile, RosterEntry r, java.lang.String progName)
Start the desired type of programmer.(package private) void
updateForDecoderMfgID(java.lang.String pMfg, int pMfgID, int pModelID)
Decoder identify has not matched specific types, but did find manufacturer match.(package private) void
updateForDecoderNotID(int pMfgID, int pModelID)
Decoder identify did not match anything, warn and show all.(package private) void
updateForDecoderTypeID(java.util.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, 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
-
selector
ProgModeSelector selector
-
_statusLabel
javax.swing.JLabel _statusLabel
Reference to an external (not in this pane) JLabel that should be updated with status information as identification happens.
-
locoBox
protected GlobalRosterEntryComboBox locoBox
-
programmerBox
protected javax.swing.JComboBox<java.lang.String> programmerBox
-
iddecoder
protected javax.swing.JToggleButton iddecoder
-
idloco
protected javax.swing.JToggleButton idloco
-
go2
protected javax.swing.JButton go2
-
-
Constructor Detail
-
CombinedLocoSelPane
public CombinedLocoSelPane(javax.swing.JLabel s, ProgModeSelector selector)
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 aProgModeSelector
panel that configures the programming mode.
-
-
Method Detail
-
layoutDecoderSelection
protected javax.swing.JPanel layoutDecoderSelection()
Create the panel used to select the decoder.- Returns:
- a JPanel for handling the decoder-selection GUI
-
addDecoderIdentButton
javax.swing.JToggleButton addDecoderIdentButton()
Add a decoder identification button.- Returns:
- the button
-
setDecoderSelectionFromLoco
void setDecoderSelectionFromLoco(java.lang.String loco)
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
protected java.lang.String selectedDecoderType()
Convert the decoder selection UI result into a name.- Returns:
- The selected decoder type name, or null if none selected.
-
layoutRosterSelection
protected javax.swing.JPanel layoutRosterSelection()
Create the panel used to select an existing entry.- Returns:
- a JPanel for handling the entry-selection GUI
-
init
protected void init()
Initialize the GUI.
-
createProgrammerSelection
protected javax.swing.JPanel createProgrammerSelection()
Creates a Programmer Selection panel.- Returns:
- the panel
-
startIdentifyLoco
protected void startIdentifyLoco()
Identify loco button pressed, start the identify operation This defines what happens when the identify is done.
-
startIdentifyDecoder
protected void startIdentifyDecoder()
Identify loco button pressed, start the identify operation. This defines what happens when the identify is done.
-
propertyChange
public void propertyChange(java.beans.PropertyChangeEvent ev)
Notification that the Roster has changed, so the locomotive selection list has to be changed.- Specified by:
propertyChange
in interfacejava.beans.PropertyChangeListener
- Parameters:
ev
- Ignored.
-
selectLoco
protected void selectLoco(int dccAddress)
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
protected void selectDecoder(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.- Parameters:
mfgID
- the decoder's manufacturer ID value from CV8modelID
- the decoder's model ID value from CV7productID
- the decoder's product ID
-
updateForDecoderTypeID
void updateForDecoderTypeID(java.util.List<DecoderFile> pList)
Decoder identify has matched one or more specific types.- Parameters:
pList
- a list of decoders
-
updateForDecoderMfgID
void updateForDecoderMfgID(java.lang.String pMfg, int pMfgID, int pModelID)
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
void updateForDecoderNotID(int pMfgID, int pModelID)
Decoder identify did not match anything, warn and show all.- Parameters:
pMfgID
- Manufacturer ID number (CV8)pModelID
- Model ID number (CV7)
-
openButton
protected void openButton()
handle pushing the open programmer button by finding names, then calling a template method.
-
openKnownLoco
protected void openKnownLoco()
Start with a locomotive selected, so we're opening an existing RosterEntry.
-
openNewLoco
protected void 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 java.lang.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
-
-