Figure 83 illustrates the call/answer principle. The application is showing our
When the user presses edit next to a contact name, the
ContactListView component executes its callbacks until it reaches the line
self call: ..., where it sends the message
call: and passes it the
ContactView component. This causes
ContactView to take control of the browser region occupied by
ContactListView. Note that the other component
A, can continue to be active; this is an example of having multiple, simultaneous control flows in an application.
When the component
ContactView reaches the line
self answer, it sends the message
answer, which has the effect of closing the
ContactView component, giving back control to the
ContactListView component, and possibly returning a value, as you will see in the next section. The returned value can be a complex object such as credit card information or a complete Contact object, or it can be as simple as a primitive object such an integer or a string. With Seaside you handle objects directly and there is no need to translate or marshall them in order to pass them around different components.
answer message send, the execution of the component
ContactListView continues just after the call that opened the component
ContactView. This is marked as
"continue here" in the diagram.