This section shows you how to specify all the callbacks necessary for each element in the example interface, together with other attributes that are required for correct operation of the callback functions. You need to specify attribute values for the display pane, the list panel and the graph pane.
Selection-Text
display pane and display the Attributes dialog.
selection-reader
and click
OK
.This reader allows the display pane to be identified by the callback code.
For the list panel, you need to specify four callbacks and a reader.
List
list panel and display its Attributes dialog.
list-reader
. Do not click
OK
yet.Like the display pane, this reader is necessary so that the list panel can be identified by the callback code.
Next, you need to specify the following four types of callback (make sure you click the "Callbacks" tab):
Selection callback. The function that is called when you select a list item.
Extend callback. The function that is called when you extend the current selection.
Retract callback. The function that is called when you deselect a list item.
Action callback. The function that is called when you double-click on a list item.
SELECTION-CALLBACK to
'update-selection-select
EXTEND-CALLBACK to
'update-selection-extend
RETRACT-CALLBACK to
'update-selection-retract
ACTION-CALLBACK to
'display-selection-in-dialog
Graph
graph pane and display its Attributes dialog.For the graph pane, you need to set the same four callbacks, as well as a reader, and two other attributes that are important for the callback code to run correctly.
SELECTION-CALLBACK to
'update-selection-select
EXTEND-CALLBACK to
'update-selection-extend
RETRACT-CALLBACK to
'update-selection-retract
ACTION-CALLBACK to
'display-selection-in-dialog
graph-reader
.(defun children-function (x)
(when (< x 8)
(list (* x 2) (1+ (* x 2)))))
Now set the CHILDREN-FUNCTION attribute to
'children-function
.
The children function defines what is drawn in the graph, and so is vital for any graph pane. It is called when displaying the prototype interface, so it is best to define it before setting this attribute.