Record Binding

This dialog is used to bind input records to this module's input ports
and output record fields.  

There is a scrollable list of buttons representing this module's input
ports and a button for Module Results in a framed region on the left
side of this dialog.  Input pipes are named for the upstream module to
which they are connected.  

Selecting an input pipe will cause all records on that pipe to be shown
in a scrolled list of buttons next to the input pipe list.  In addition,
selecting an input pipe (or Module Results) will cause the scrolled
lists of buttons on the far right of the dialog to be changed to show
the input ports and output record fields that the newly selected input
pipe is bound to.

Selecting a record in the record list causes a scrolled list of colored
buttons representing the fields of the newly selected input record to
appear to the right of the record list.

The strategy here is very similar to the Pipe To Port Binding Dialog.
Clicking on an input record field and then an input port or output field
(or vice versa) will cause that input port or output record field to be
bound to the input record field.  The binding will be shown by the input
pipe or output record field taking the same color as the input record
field it is bound to.

This means that the input field will gives its value to the input ports
and output record fields it is bound to each time one of these input
records is seen by the module.

At least one record from each input pipe must satisfy the input ports
and output record fields that the input pipe is bound to.  In addition,
once a record has a field bound to one thing satisfied by its input
pipe, the record must have fields bound to everything satisfied by its
input pipe.  In other words, an input record either fully satisfies the
input ports and output record fields its pipe is bound to, or it doesn't
satisfy them at all.

Once you start binding fields from a specific input record to input
ports and output record fields,  you will be unable to choose a new
input pipe or input record until you have pressed DONE or CLEAR.

DONE indicates you are finished making bindings between input record
fields and the associated input ports and output record fields.  DONE
will be insensitive unless all input ports and output fields associated
with the current input pipe have been satisfied by fields of the current
record.  

CLEAR removes all bindings between the current input record and the
associated input ports and output record fields.  It is the equivalent
of discarding the record.

Below the record list are buttons used to change the status of the currently
selected record.  TOGGLE COPY THRU determines if the current record is
passed thru to downstream modules.  If a record is copied thru, a C will
appear next to it in the scrolled record list.  Discard Record
effectively removes all bindings between the current record and its
associated input ports and output record fields.  If the record has been
field extracted (i.e. it satisfies input ports and output record
fields), an E will appear next to it in the scrolled record list.

Once all input pipes have satisfied their associated input ports and
output record fields with at least one record, Module Results will
become sensitive.  This is necessary since the type of values on the
module's input ports affects the type of the module's result.

Module Results are handled exactly the same as input pipes except that
bindings are automatically made between the input fields (output ports)
and output record fields if they are like named, which is the default.

Clicking on RESET causes all bindings to revert to what they where when
this dialog was popped up.


