11.3Call/Answer Explained
Figure 83 illustrates the call/answer principle. The application is showing our ContactListView
component.
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.
After the 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.