Commander Chain
Mojo provides a model for propagating commands through the application, stage, and scene controllers called the Commander Chain. The chain is an array of handlers, ordered like a stack. The handlers, or commanders, are put onto the chain in the order that they register themselves, and commands are propagated according to this order.
Commanders are registered implicitly by declaring a handleCommand method as a stage-assistant or
scene-assistant method, or for dialogs, when instantiated. The framework
always adds the App-Assistants to the end of the Stage-Controller chain at
instantiation.
Commanders can register explicitly by calling the pushCommander method from
either the stage controller or scene controller. The commander will be
removed when the scene assistant is popped or the application is
closed.
The chain is really a tree of chains (see Figure 4-14). There is a chain for each stage controller, and within each stage there is a chain for each scene controller. Commands are propagated starting with the most recent commander registered in the active scene controller’s chain. After all commanders in the scene have been called, propagation continues with the most recent commander in the active stage controller chain through the rest of the chain. There are chains for each of the inactive stage controllers and scene controllers, but commands are not propagated to any inactive chains.
Figure 4-14. A Commander Chain propagation example
At any time, any commander can stop ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access