multiSelectListBox

multiSelectListBox позволяет пользователям выбирать несколько значений из прокручиваемого списка элементов с помощью флажков.

XML-элемент

multiSelectListBox

Java-класс

JmixMultiSelectListBox

Атрибуты

id - alignSelf - ariaLabel - ariaLabelledBy - classNames - colspan - css - enabled - height - itemsContainer - itemsEnum - maxHeight - maxWidth - minHeight - minWidth - readOnly - visible - width

Обработчики

AttachEvent - ComponentValueChangeEvent - itemEnabledProvider - itemLabelGenerator - renderer

Элементы

fragmentRenderer - tooltip

Основы

Для создания списка элементов используйте атрибуты itemsContainer или itemsEnum:

<data>
    <collection class="com.company.onboarding.entity.Hobby" id="hobbiesDc"> (1)
        <fetchPlan extends="_base"/>
        <loader id="hobbiesDl">
            <query>
                <![CDATA[select e from Hobby e]]>
            </query>
        </loader>
    </collection>
</data>
<layout>
    <multiSelectListBox itemsContainer="hobbiesDc"/> (2)
</layout>
1 CollectionContainer для сущности Hobby.
2 multiSelectListBox получает hobbiesDc в качестве контейнера элементов, чтобы отобразить список хобби.
multi select list box basics

Поставщик itemEnabledProvider

itemEnabledProvider позволяет вам динамически управлять активным состоянием отдельных элементов на основе определенных условий. Неактивные элементы отображаются серыми и не могут быть выбраны пользователем. По умолчанию все элементы активны.

@Install(to = "multiSelectListBox", subject = "itemEnabledProvider")
private boolean multiSelectListBoxItemEnabledProvider(final User user) {
    if (user != null) {
        return user.getActive();
    }
    return true;
}

Настройка надписей элементов

itemLabelGenerator позволяет вам настраивать способ отображения элементов в компоненте multiSelectListBox. Это дает вам контроль над текстом, который видят пользователи, позволяя представлять информацию в более удобном или контекстно-зависимом виде.

@Install(to = "multiSelectListBox", subject = "itemLabelGenerator")
private String multiSelectListBoxItemLabelGenerator(final User item) {
    return metadataTools.format(item.getDisplayName()).toUpperCase();
}

Рендеринг элементов

Можно настроить рендеринг элементов. Рендерер применяется к каждому элементу для создания компонента, который представляет этот элемент.

Для этого можно использовать метод setRenderer() или аннотацию @Supply.

@Supply(to = "mSelectListBox", subject = "renderer")
private ComponentRenderer<Span, User> mSelectListBoxRenderer() {
    return new ComponentRenderer<>(user -> {
        Span span = uiComponents.create(Span.class);
        span.setText(user.getDisplayName());
        span.setClassName("font-bold");
        return span;
    });
}

В качестве альтернативы вы можете отображать элементы, используя вложенный элемент fragmentRenderer. Дополнительную информацию смотрите в разделе Рендерер фрагментов.

Обработчики

В Jmix существует множество общих обработчиков, которые конфигурируются одинаково для всех компонентов.

Ниже приведены обработчики, специфичные для multiSelectListBox.

Чтобы сгенерировать заглушку обработчика в Jmix Studio, используйте вкладку Handlers панели инспектора Jmix UI, или команду Generate Handler, доступную на верхней панели контроллера экрана и через меню CodeGenerate (Alt+Insert / Cmd+N).

Название

Описание

itemEnabledProvider

itemEnabledProvider применяется к каждому элементу данного multiSelectListBox, чтобы определить, должен ли элемент быть включен (true) или отключен (false). Смотрите Поставщик itemEnabledProvider.

itemLabelGenerator

Позволяет вам настроить метки, отображаемые для каждого элемента multiSelectListBox. Смотрите Настройка надписей элементов.

renderer

Устанавливает рендерер элементов для данного multiSelectListBox. Смотрите Рендеринг элементов.

Смотрите также

Смотрите документацию Vaadin для получения дополнительной информации.