Вообще говоря, любой виджет Widget - контейнер, в который можно поместить дочерние элементы. Но наследованный от него WidgetContainer же предоставляет специальный функционал:
родительский виджет имеет определенный размер. Если дочерние элементы вылезают за пределы WidgetContainer, то они скрываются, а у пользователя появляется возможность скроллировать рабочую область контейнера до нужного элемента, используя скроллбар
дочерние элементы можно добавлять в конец или начало контейнера, автоматически размещая их перед первым или после последнего элемента, для формирования визуального связного списка элементов
имеются определенные оптимизации и шаблоны для более удобной и быстрой работы со списком элементов
В системе виджетов есть реализации двух скроллируемых контейнеров:
WidgetScrollableContainer - универсальный скроллируемый контейнер произвольных виджетов
WidgetTextContainer - скроллируемый контейнер текстовых элементов. Оптимизирован под свою задачу
Все эти контейнеры унаследованы от базового класса WidgetContainer. Объекты самого базового класса WidgetContainer создавать нельзя.
border: WidgetPanel - Окно, в котором отображаются добавленные элементы. Опционально, если не задан - создастся автоматически по размеру контейнера.
scrollBar: WidgetGlideScrollBar - Скроллбар для прокрутки содержимого. Опционально, если не задан, то контейнер нельзя прокручивать (но он может ресайзится автоматически при WIDGET_SIZING_INTERNAL)
widgetsArrangement: WidgetsArrangement - Порядок добавления элементов. Опционально, если не задано, то WIDGETS_ARRANGEMENT_T2B.
elementsInterval: number (float) - Интервал между соседними элементами. Опционально, если не задано, то 0.0f
elementsLimit: number (int) - Максимальное число элементов в контейнере. Опционально, если не задано (или задано <= 0), то не ограничено.
elementFixedSize: number (float) - Фиксированный размер элемента по оси роста контейнера (widgetsArrangement). Опционально, если задано, то контейнер использует данное значение для всех элементов, если нет - вычисляет динамически для каждого элемента. Если при заданном значении фактический размер элементов будет отличаться, то отображение будет некорректным.
__Border: PanelSafe - область внутри которой будет размещено содержимое контейнера, создается из ресурса контейнера, поле border. Если поле не задано, то создается как Cork
__Content (родитель / владелец - __Border): PanelSafe - область непосредственно содержимого контейнера, создается как Cork
__ScrollBar: GlideScrollBarSafe - скроллбар, создается из ресурса контейнера, поле scrollBar. Если поле не задано, то не создается
Контейнер не имеет никаких дополнительных реакций.