Navigator - direct screens switching;
Command - the switching command which is Navigator performs;
CommandBuffer - manager which performs commands delivery to Navigator, saving as well if Navigator cannot perform them at the input moment;
NavigatorHolder - mediator between Navigation and CommandBuffer (no info at the scheme);
Router - object which generates low-level commands for the Navigator by the call of high-level methods for navigation;
Screen - high-level specific screen realization.
Initially, Cicerone has four basic transfer commands:
- Back() - deletes the current screen from the stack and make the previous to be active;
- BackTo(Screen) - returns to the specified screen if it's in the chain, and delete all the screens that were up front. If the specified screen not found in stack or there's a null transfer instead of screen transfer, the transfer performs to the root screen;
- Forward(Screen) - adds a screen to the stack and make it to be active;
- Replace(Screen) - replaces active screen to the specified.
From these commands in the Router class six basic high-level commands were formed:
- navigateTo(Screen) - transfer to a new screen;
- newScreenChain(Screen) - stack reset to the root screen and new screen opening;
- newRootScreen(Screen) - stack reset and root screen replacement;
- replaceScreen(Screen) - active screen replacement;
- backTo(Screen) - returning to any screen in stack;
- exit() - active screen exit