We have implemented the graphical aspects of the interface completely, but the only functional aspect of our interface that has been implemented is the ``Quit'' button. To make our interface fully functional, refresh-number-info must be implemented, using the current ``Name'' field and toggle selector values to find a phone number:
(define refresh-number-info
(lambda ()
(let* ([name (send name-text get-value)]
[home? (zero? (send number-selector get-selection))]
[number (lookup-number name home?)]
[number-string (if number
number
"(Unknown)")])
(send number-text set-value number-string))))
The method get-value extracts the string value of the ``Name''
text field name-text. Similarly, get-selection extracts
the index of the selected switch in the ``home''-``office'' toggle
selector number-selector. The pre-supplied Scheme procedure
lookup-number performs the phone book search, returning either a
phone number string or #f. If no number is found in the phone
book, the displayed result is ``(Unknown)''. Finally, the
set-value method of number-text is invoked to update the
``Number'' display text field.