Class FnMapPanel

  • All Implemented Interfaces:
    java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible

    public class FnMapPanel
    extends javax.swing.JPanel
    Provide a graphical representation of the NMRA Standard mapping between cab functions and physical outputs.

    Uses data from the "model" element from the decoder definition file to configure the number of rows and columns and set up any custom column names:

    numOuts
    Number of physical outputs.
     
    numFns
    Maximum number of function rows to display.
     
    output
    name="n" label="yyy"
     - Set lower line of heading for column number "n" to "yyy".*
     
    name="n" label="xxx|yyy"
     - Set upper line of heading for column number "n" to "xxx" and lower line to "yyy".*
     
    name="n" label="|"
     - Sets both lines of heading for column number "n" to blank, causing the column to be suppressed from the table.*
     
     * The forms above increase the value of numOuts to n if numOuts < n.
     
    name="text1" label="text2"
     - Set upper line of heading of column numOuts+1 to "xxx" and lower line to "yyy". numOuts is then incremented.
     (This is a legacy form, the other forms are preferred.)
    Default column headings:
    First row is the column number.
    Second row is defined in "SymbolicProgBundle.properties".
    Column headings can be overridden by the "output" elements documented above.
     
    Two rows are available for column headings:
    Use the "|" character to designate a row break.
    Columns will be suppressed if any of the following are true:
    No variables are found for that column.
    The column output name is of the form name="n" label="|".
    Column number is > maxOut (an internal variable, currently 40).
    Searches the decoder file for variable definitions of the form:
    "Fd controls output n" (where d is a function number in the range 0-28 and n is an output number in the range 0-maxOut)
    "FL controls output n" (L for light)
    "Sd controls output n" (where s is a sensor number in the range 0-28 and n is an output number in the range 0-maxOut)
    "STOP controls output n" (where STOP designates a decoder state)
    "DRIVE controls output n" (where DRIVE designates a decoder state)
    "FWD controls output n" (where FWD designates a decoder state)
    "REV controls output n" (where REV designates a decoder state)

    Directional variants of all the above forms:
    "xxx(f) controls output n"
    "xxx(r) controls output n"

    Alternate variants of all the above forms:
    "xxx controls output n(alt)" (allows an alternate definition for the same variable, such as used by Tsunami decoders)
    "xxx(f) controls output n(alt)"
    "xxx(r) controls output n(alt)"

    The "tooltip" & "label" attributes on a fnmapping variable are ignored. Expanded internationalized tooltips are generated in the code.
    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
      • 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
    • Field Summary

      Fields 
      Modifier and Type Field Description
      (package private) VariableTableModel _varModel  
      (package private) java.awt.GridBagConstraints cs  
      (package private) int firstFnRow  
      (package private) int firstOutCol  
      (package private) java.lang.String[] fnExtraList  
      (package private) java.util.List<java.lang.String> fnList  
      (package private) int fnNameCol  
      (package private) java.lang.String[] fnVariantList  
      (package private) java.awt.GridBagLayout gl  
      (package private) int highestFn  
      (package private) int highestSensor  
      (package private) int maxOut  
      (package private) int numFn  
      (package private) int numOut  
      (package private) boolean[] outIsUsed  
      (package private) java.lang.String[] outLabel  
      (package private) java.lang.String[] outName  
      (package private) int outputLabelRow  
      (package private) int outputNameRow  
      (package private) int outputNumRow  
      • 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
      • Fields inherited from class java.awt.Component

        accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
      • Fields inherited from interface java.awt.image.ImageObserver

        ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
    • Constructor Summary

      Constructors 
      Constructor Description
      FnMapPanel​(VariableTableModel v, java.util.List<java.lang.Integer> varsUsed, org.jdom2.Element model)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      (package private) void addOutputElements​(java.util.List<org.jdom2.Element> input, java.util.List<org.jdom2.Element> accumulate)  
      protected void configOutputs​(org.jdom2.Element model)
      Use the "family" and "model" element from the decoder definition file to configure the number of outputs and set up any that are named instead of numbered.
      void dispose()
      clean up at end
      (package private) void labelAt​(int row, int column, java.lang.String name)  
      (package private) void labelAt​(int row, int column, java.lang.String name, int anchor)  
      (package private) void loadSplitLabel​(int iOut, java.lang.String theLabel)  
      (package private) void saveAt​(int row, int column, javax.swing.JComponent j)  
      (package private) void saveAt​(int row, int column, javax.swing.JComponent j, int anchor)  
      • 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
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Method Detail

      • saveAt

        void saveAt​(int row,
                    int column,
                    javax.swing.JComponent j)
      • saveAt

        void saveAt​(int row,
                    int column,
                    javax.swing.JComponent j,
                    int anchor)
      • labelAt

        void labelAt​(int row,
                     int column,
                     java.lang.String name)
      • labelAt

        void labelAt​(int row,
                     int column,
                     java.lang.String name,
                     int anchor)
      • configOutputs

        protected void configOutputs​(org.jdom2.Element model)
        Use the "family" and "model" element from the decoder definition file to configure the number of outputs and set up any that are named instead of numbered.
        Parameters:
        model - ELement holding content to decode
      • addOutputElements

        void addOutputElements​(java.util.List<org.jdom2.Element> input,
                               java.util.List<org.jdom2.Element> accumulate)
      • loadSplitLabel

        void loadSplitLabel​(int iOut,
                            java.lang.String theLabel)
      • dispose

        public void dispose()
        clean up at end