twinColumn

Компонент для интуитивного выбора элементов из списка или коллекции путем перемещения между двумя колонками.

  • XML-элемент: twinColumn

  • Java-класс: TwinColumn

Основы

Компонент отображает две колонки бок о бок. Левая колонка содержит элементы для выбора, правая - уже выбранные элементы. Пользователи могут выбирать один или несколько элементов и перемещать их между колонками с помощью кнопок, добавляя или удаляя из выбора.

twin column basics

Для создания компонента используйте 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"/>
twin column select all buttons

Надписи колонок

Вы можете задать описательные надписи для каждой колонки с помощью атрибутов itemsColumnLabel и selectedItemsColumnLabel:

<twinColumn itemsContainer="usersDc"
            itemsColumnLabel="Users"
            selectedItemsColumnLabel="Moderators"/>
twin column labels

Порядок элементов

По умолчанию элементы не сохраняют свою исходную позицию в списке. При каждом перемещении в другую колонку элемент добавляется в конец списка. Вы можете сохранять исходный порядок элементов, установив reorderable="true".

<twinColumn itemsContainer="usersDc" reorderable="true"/>

Варианты оформления

Внешний вид компонента можно настроить с помощью атрибута themeNames, который предлагает четыре варианта:

checkboxes

Использует флажки для обозначения выбранных элементов вместо изменения цвета фона строки.

twin column checkboxes
no-border

Убирает границу компонента.

twin column no border
no-row-border

Убирает разделители между строками.

twin column no row border
no-space-between-actions

Убирает промежутки между кнопками действий.

twin column no space between actions
Вы можете комбинировать несколько тем, перечисляя их через запятую, чтобы изменить несколько аспектов внешнего вида одновременно.

Элементы