Application architecture
========================
### Application (Приложение)

Глобальный объект приложения, который инстанцируется в точке входа и
доступен из глобальной переменной app. Наследуясь от сгенерированного
boilerplate класса, он реализует определение платформы и первоначальную
регистрацию сцен.

### Представление (View)

-   _**Контейнер (Container) (мб widgetContainer?)**_ - объект, который
    является контейнером для виджетов. Реализует пространственную
    навигацию по помещенным в него виджетам. При наступлении события
    навигации передвижение курсора или нажатие навигационных кнопок на
    пульте) перемещает фокус на подходящий виджет.

-   _**Слой (Layer)**_ - контейнер, основной элемент <abbr title='Document Object Model'>DOM'a</abbr>. Слоем может
    быть сцена (scene) или попап (popup). Может содержать дочерние слои.

-   _**Виджет (Widget)**_ - контейнер, помещающийся в слой. Управляет
    своим состоянием и видимостью. Также содержит методы *beforeDOMShow,
    afterDOMShow, beforeDOMHide, afterDOMHide,* которые вызываются либо
    из слоя, куда включен виджет, либо при изменении видимости; 

### Модель (Model)

Для структурного представления используются модели (models). Модель
(*AbstractModel)* используется как контейнер для хранения данных, с
распространением события при изменении хранимых данных (EVENT\_CHANGE).
