The base class for Frontends in the IVI system.
A Frontend exposes pieces of the overall user interface. For example, there could be a Frontend for the main menu and one for the map view. A frontend can expose multiple panels at the same time, like a main panel and a panel for a notification. A frontend can also be headless, like a phone Frontend that might not show a panel until a phone call starts.
A Frontend implementation is responsible for the logic to add Panels by calling Frontend.addPanel or Frontend.addPanels. This responsibility can be delegated to other classes.
An entry point for this Frontend to communicate with the rest of the system. This frontend context may not be reused by any other frontend.
Open any initial task panels for this Frontend. By default a frontend opens its main panel, chosen with createMainTaskPanel. Alternatively, openTaskPanels can be overridden to decide which, if any, panels to open. Implementations of this method can call addPanel or addPanels to open panels. It is acceptable to open no panels at all.