multiSelectListBox
multiSelectListBox позволяет пользователям выбирать несколько значений из прокручиваемого списка элементов с помощью флажков.
XML-элемент |
|
|---|---|
Java-класс |
|
Атрибуты |
id - alignSelf - ariaLabel - ariaLabelledBy - classNames - colspan - css - enabled - height - itemsContainer - itemsEnum - maxHeight - maxWidth - minHeight - minWidth - readOnly - visible - width |
Обработчики |
AttachEvent - ComponentValueChangeEvent - itemEnabledProvider - itemLabelGenerator - renderer |
Элементы |
Основы
Для создания списка элементов используйте атрибуты 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 в качестве контейнера элементов, чтобы отобразить список хобби. |
Поставщик 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, доступную на верхней панели контроллера экрана и через меню Code → Generate (Alt+Insert / Cmd+N). |
Название |
Описание |
|---|---|
|
|
Позволяет вам настроить метки, отображаемые для каждого элемента |
|
Устанавливает рендерер элементов для данного |
Смотрите также
Смотрите документацию Vaadin для получения дополнительной информации.