Class FnMapPanel

All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible

public class FnMapPanel extends 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: