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