Class CombinedLocoSelTreePane
- 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
-
- jmri.jmrit.symbolicprog.CombinedLocoSelTreePane
-
- 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:
LocoSelTreePane
public class CombinedLocoSelTreePane extends CombinedLocoSelPane
Provide GUI controls to select a known loco and/or new decoder.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.Showableattribute also interacts with those.- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static classCombinedLocoSelTreePane.DecoderTreeNode(package private) static classCombinedLocoSelTreePane.InvisibleTreeModelThe following has been taken from an example given in..-
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 protected javax.swing.event.TreeSelectionListenerdListenerThe listener for the decoder selection tree.(package private) CombinedLocoSelTreePane.InvisibleTreeModeldModel(package private) CombinedLocoSelTreePane.DecoderTreeNodedRootprotected javax.swing.JTreedTreeThe decoder selection tree.(package private) java.util.ArrayList<javax.swing.tree.TreePath>selectedPath(package private) javax.swing.JRadioButtonshowAll(package private) javax.swing.JRadioButtonshowMatchedprotected javax.swing.JPanelviewButtonsA panel immediately below the decoder selection tree.-
Fields inherited from class jmri.jmrit.symbolicprog.CombinedLocoSelPane
_statusLabel, go2, iddecoder, idloco, locoBox, programmerBox, 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 CombinedLocoSelTreePane(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) voidcreateDecoderTypeContents()Reads the available decoders and loads them into the dModel tree model.(package private) java.lang.StringgetHoverText(java.lang.String verString, java.lang.String comment)Provide tooltip text: Decoder comment, with CV version info, formatted as best we can.(package private) booleanisDecoderSelected()Has the user selected a decoder type, either manually or via a successful event?protected javax.swing.JPanellayoutDecoderSelection()Create the panel used to select the decoder.voidresetSelections()Resets the Decoder Tree Display selections and sets the state to "Show All".protected java.lang.StringselectedDecoderType()Convert the decoder selection UI result into a name.(package private) voidsetDecoderSelectionFromLoco(java.lang.String loco)Set 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 voidstartIdentifyDecoder()Identify loco button pressed, start the identify operation.(package private) voidupdateForDecoderMfgID(java.lang.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(java.util.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, startProgrammer
-
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
-
dTree
protected javax.swing.JTree dTree
The decoder selection tree.
-
viewButtons
protected javax.swing.JPanel viewButtons
A panel immediately below the decoder selection tree.
Used for tree action buttons.
-
dListener
protected transient volatile javax.swing.event.TreeSelectionListener dListener
The listener for the decoder selection tree.
-
showAll
javax.swing.JRadioButton showAll
-
showMatched
javax.swing.JRadioButton showMatched
-
selectedPath
java.util.ArrayList<javax.swing.tree.TreePath> selectedPath
-
-
Constructor Detail
-
CombinedLocoSelTreePane
public CombinedLocoSelTreePane(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 aProgModeSelectorpanel that configures the programming mode.
-
-
Method Detail
-
layoutDecoderSelection
protected javax.swing.JPanel layoutDecoderSelection()
Create the panel used to select the decoder.- Overrides:
layoutDecoderSelectionin classCombinedLocoSelPane- Returns:
- a JPanel for handling the decoder-selection GUI
-
setShowMatchedOnly
public void setShowMatchedOnly(boolean state)
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
java.lang.String getHoverText(java.lang.String verString, java.lang.String comment)
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
protected void 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
public void resetSelections()
Resets the Decoder Tree Display selections and sets the state to "Show All".
-
updateForDecoderTypeID
public void updateForDecoderTypeID(java.util.List<DecoderFile> pList)
Decoder identify has matched one or more specific types.- Overrides:
updateForDecoderTypeIDin classCombinedLocoSelPane- 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.- 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
void updateForDecoderNotID(int pMfgID, int pModelID)
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
void setDecoderSelectionFromLoco(java.lang.String loco)
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
protected java.lang.String 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
-
-