Class CombinedLocoSelTreePane
- All Implemented Interfaces:
ImageObserver,MenuContainer,PropertyChangeListener,Serializable,EventListener,Accessible
- Direct Known Subclasses:
LocoSelTreePane
This is an extension of the CombinedLocoSelPane class to use a JTree instead of a JComboBox for the decoder selection. The loco selection (Roster manipulation) parts are unchanged.
The JComboBox implementation always had to have selected entries, so we added dummy "select from .." items at the top and used those to indicate that there was no selection in that box. Here, the lack of a selection indicates there's no selection.
Internally, the "filter" is used to only show identified models (leaf nodes). This is implemented in internal InvisibleTreeModel and DecoderTreeNode classes.
The decoder definition DecoderFile.Showable
attribute also interacts with those.
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) static class(package private) static classThe following has been taken from an example given in..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 TypeFieldDescriptionprotected TreeSelectionListenerThe listener for the decoder selection tree.(package private) CombinedLocoSelTreePane.InvisibleTreeModel(package private) CombinedLocoSelTreePane.DecoderTreeNodeprotected JTreeThe decoder selection tree.(package private) JRadioButton(package private) JRadioButtonprotected JPanelA panel immediately below the decoder selection tree.Fields inherited from class jmri.jmrit.symbolicprog.CombinedLocoSelPane
_statusLabel, go2, iddecoder, idloco, locoBox, programmerBox, selectorFields 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
ConstructorsConstructorDescriptionCombinedLocoSelTreePane(JLabel s, ProgModeSelector selector) Provide GUI controls to select a known loco and/or new decoder. -
Method Summary
Modifier and TypeMethodDescription(package private) voidReads the available decoders and loads them into the dModel tree model.(package private) StringgetHoverText(String verString, String comment) Provide tooltip text: Decoder comment, with CV version info, formatted as best we can.(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.voidResets the Decoder Tree Display selections and sets the state to "Show All".protected StringConvert the decoder selection UI result into a name.(package private) voidSet the decoder selection to a specific decoder from a selected Loco.voidsetShowMatchedOnly(boolean state) Sets the Loco Selection Pane to "Matched Only"(true)or "Show All"(false).protected voidIdentify loco button pressed, start the identify operation.(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 clear selection.voidupdateForDecoderTypeID(List<DecoderFile> pList) Decoder identify has matched one or more specific types.Methods inherited from class jmri.jmrit.symbolicprog.CombinedLocoSelPane
addDecoderIdentButton, createProgrammerSelection, init, layoutRosterSelection, openButton, openKnownLoco, openNewLoco, propertyChange, selectDecoder, selectLoco, startIdentifyLoco, startProgrammerMethods 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
-
dTree
The decoder selection tree. -
viewButtons
A panel immediately below the decoder selection tree.
Used for tree action buttons. -
dListener
The listener for the decoder selection tree. -
dModel
-
dRoot
-
showAll
-
showMatched
-
selectedPath
-
-
Constructor Details
-
CombinedLocoSelTreePane
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.- Overrides:
layoutDecoderSelectionin classCombinedLocoSelPane- Returns:
- a JPanel for handling the decoder-selection GUI
-
setShowMatchedOnly
Sets the Loco Selection Pane to "Matched Only"(true)or "Show All"(false).
Changes the Decoder Tree Display and the Radio Buttons.- Parameters:
state- the desired state
-
createDecoderTypeContents
void createDecoderTypeContents()Reads the available decoders and loads them into the dModel tree model. -
getHoverText
Provide tooltip text: Decoder comment, with CV version info, formatted as best we can.- Parameters:
verString- version string, typically fromDecoderFile.getVersionsAsString()comment- version string, typically fromDecoderFile.getModelComment()orDecoderFile.getFamilyComment()- Returns:
- the combined formatted string.
-
startIdentifyDecoder
Identify loco button pressed, start the identify operation. This defines what happens when the identify is done.
This@Overridemethod invokesresetSelectionsbefore starting.- Overrides:
startIdentifyDecoderin classCombinedLocoSelPane
-
resetSelections
Resets the Decoder Tree Display selections and sets the state to "Show All". -
updateForDecoderTypeID
Decoder identify has matched one or more specific types.- Overrides:
updateForDecoderTypeIDin classCombinedLocoSelPane- Parameters:
pList- a list of decoders
-
updateForDecoderMfgID
Decoder identify has not matched specific types, but did find manufacturer match.- Overrides:
updateForDecoderMfgIDin classCombinedLocoSelPane- 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 clear selection.- Overrides:
updateForDecoderNotIDin classCombinedLocoSelPane- Parameters:
pMfgID- Manufacturer ID number (CV8)pModelID- Model ID number (CV7)
-
setDecoderSelectionFromLoco
Set the decoder selection to a specific decoder from a selected Loco.This must not trigger an update event from the Tree selection, so we remove and replace the listener.
- Overrides:
setDecoderSelectionFromLocoin classCombinedLocoSelPane- Parameters:
loco- the loco name
-
selectedDecoderType
Convert the decoder selection UI result into a name.- Overrides:
selectedDecoderTypein classCombinedLocoSelPane- Returns:
- The selected decoder type name, or null if none selected.
-
isDecoderSelected
boolean isDecoderSelected()Has the user selected a decoder type, either manually or via a successful event?- Overrides:
isDecoderSelectedin classCombinedLocoSelPane- Returns:
- true if a decoder type is selected
-