twinColumn
Компонент для интуитивного выбора элементов из списка или коллекции путем перемещения между двумя колонками.
- 
XML-элемент: twinColumn
- 
Java-класс: TwinColumn
Основы
Компонент отображает две колонки бок о бок. Левая колонка содержит элементы для выбора, правая - уже выбранные элементы. Пользователи могут выбирать один или несколько элементов и перемещать их между колонками с помощью кнопок, добавляя или удаляя из выбора.
 
Для создания компонента используйте XML-элемент twinColumn и задайте его атрибут itemsContainer, указав контейнер коллекции. Элементы из этого контейнера будут отображаться в колонках.
Пример создания базового компонента twinColumn:
<data>
    <collection id="usersDc" class="com.company.onboarding.entity.User">
        <loader id="usersDl" readOnly="true">
            <query>
                <![CDATA[select e from User e]]>
            </query>
        </loader>
        <fetchPlan extends="_base"/>
    </collection>
</data>
<facets>
    <dataLoadCoordinator auto="true"/> (1)
</facets>
<layout>
    <twinColumn itemsContainer="usersDc"/>
</layout>| 1 | Включите dataLoadCoordinator фасет для автоматической загрузки данных. | 
Привязка данных
Привязка данных означает связывание визуального компонента с контейнером данных. Изменения в компоненте или соответствующем контейнере могут вызывать взаимные обновления. Подробнее смотрите в разделе Использование компонентов данных.
Для создания twinColumn с привязкой к данным используйте атрибуты dataContainer и property. Атрибут itemsContainer используется для создания списка элементов.
Множественный выбор
Компонент twinColumn всегда работает в режиме множественного выбора, позволяя пользователям выбирать и перемещать несколько элементов одновременно. Вы также можете добавить возможность перемещения всех элементов сразу, установив атрибут selectAllButtonsVisible:
<twinColumn itemsContainer="usersDc" selectAllButtonsVisible="true"/> 
Надписи колонок
Вы можете задать описательные надписи для каждой колонки с помощью атрибутов itemsColumnLabel и selectedItemsColumnLabel:
<twinColumn itemsContainer="usersDc"
            itemsColumnLabel="Users"
            selectedItemsColumnLabel="Moderators"/> 
Порядок элементов
По умолчанию элементы не сохраняют свою исходную позицию в списке. При каждом перемещении в другую колонку элемент добавляется в конец списка. Вы можете сохранять исходный порядок элементов, установив reorderable="true".
<twinColumn itemsContainer="usersDc" reorderable="true"/>Варианты оформления
Внешний вид компонента можно настроить с помощью атрибута themeNames, который предлагает четыре варианта:
checkboxes
Использует флажки для обозначения выбранных элементов вместо изменения цвета фона строки.
 
no-border
Убирает границу компонента.
 
no-row-border
Убирает разделители между строками.
 
no-space-between-actions
Убирает промежутки между кнопками действий.
 
| Вы можете комбинировать несколько тем, перечисляя их через запятую, чтобы изменить несколько аспектов внешнего вида одновременно. | 
Атрибуты
id - alignSelf - ariaLabel - ariaLabelledBy - classNames - colspan - css - dataContainer - enabled - height - helperText - itemsColumnLabel - itemsContainer - label - maxHeight - maxWidth - minHeight - minWidth - property - readOnly - reorderable - required - requiredMessage - selectAllButtonsVisible - selectedItemsColumnLabel - themeNames - visible - width