CheckBoxGroup
Компонент CheckBoxGroup обеспечивает выбор нескольких значений из списка опций, используя группу флажков (чекбоксов). Если нужно выбрать только одно значение из списка, следует использовать компонент RadioButtonGroup.
XML-имя компонента: checkBoxGroup.
 
Основы
Компонент может принимать список опций из контейнера данных. Для этого используется атрибут optionsContainer. Например:
<data>
    <collection id="countriesDc" class="ui.ex1.entity.Country">
        <fetchPlan extends="_local"/>
        <loader id="countriesDl">
            <query>
                <![CDATA[select e from uiex1_Country e]]>
            </query>
        </loader>
    </collection>
</data>
<layout>
    <checkBoxGroup optionsContainer="countriesDc"
                   caption="Countries"/>
</layout>В данном случае компонент CheckBoxGroup отобразит имена экземпляров сущности Country, находящихся в контейнере countriesDc, а его метод getValue() вернет Collection выбранных экземпляров сущности.
 
То же самое можно сделать программно:
<data>
    <collection id="countriesDc" class="ui.ex1.entity.Country">
        <fetchPlan extends="_local"/>
        <loader id="countriesDl">
            <query>
                <![CDATA[select e from uiex1_Country e]]>
            </query>
        </loader>
    </collection>
</data>
<layout>
    <checkBoxGroup id="countriesCheckBoxGroup"
                   caption="Countries"/>
</layout>Обратите внимание, что в приведенном выше XML-дескрипторе optionsContainer не назначался группе флажков countriesCheckBoxGroup. Сделаем это программно в контроллере:
@Autowired
private CheckBoxGroup<Country> countriesCheckBoxGroup;
@Autowired
private CollectionContainer<Country> countriesDc;
@Subscribe
protected void onInit(InitEvent event) {
    countriesCheckBoxGroup.setOptions(new ContainerOptions<>(countriesDc));
}С помощью атрибута captionProperty можно указать другой атрибут сущности для отображения в компоненте.
Атрибут orientation задает расположение элементов группы. По умолчанию элементы располагаются по вертикали. Значение horizontal задает горизонтальное расположение.
Опции
setOptions()
Метод setOptions() принимает одну из реализаций интерфейса Options и позволяет работать со всеми типами опций:
@Autowired
private CheckBoxGroup<Operation> checkBoxGroup;
@Subscribe
protected void onInit(InitEvent event) {
    checkBoxGroup.setOptions(new EnumOptions<>(Operation.class));
}setOptionsEnum(), setOptionsList() и setOptionsMap() работают так же, как в компоненте ComboBox.
Валидация
Для проверки введенных в компонент CheckBoxGroup значений можно использовать валидатор во вложенном элементе validators.
Для CheckBoxGroup доступны следующие предопределенные валидаторы:
В приведенном ниже примере показано использование SizeValidator для validatedCheckBoxGroup:
<checkBoxGroup id="validatedCheckBoxGroup"
               optionsContainer="customersDc"
               caption="The number of customers is limited from 2 to 5">
    <validators>
        <size min="2" max="5"/>
    </validators>
</checkBoxGroup>События и слушатели
| Чтобы сгенерировать заглушку слушателя в Jmix Studio, выберите компонент в XML-дескрипторе экрана или на панели иерархии Jmix UI и используйте вкладку Handlers на панели инспектора Jmix UI. В качестве альтернативы вы можете воспользоваться кнопкой Generate Handler на верхней панели контроллера экрана. | 
OptionDescriptionProvider
OptionDescriptionProvider используется для генерации всплывающих подсказок для опций компонента CheckBoxGroup.
В приведенном ниже примере показано использование OptionDescriptionProvider для checkBoxGroupDesc:
@Install(to = "checkBoxGroupDesc", subject = "optionDescriptionProvider")
protected String checkBoxGroupDescOptionDescriptionProvider(Customer customer) {
    return "Email: " + customer.getEmail();
}Чтобы создать его программно, используйте метод компонента setOptionDescriptionProvider().
OptionIconProvider
См. OptionIconProvider.
Validator
Добавляет экземпляр валидатора в компонент. validator должен выбросить ValidationException, если значение недопустимо.
Если вас не устраивают предопределенные валидаторы, добавьте свой собственный экземпляр валидатора:
@Install(to = "validCheckBoxGroup", subject = "validator")
protected void validCheckBoxGroupValidator(Collection<EducationalStage> value) {
    if (value.contains(EducationalStage.NO) & value.size() > 1)
        throw new ValidationException("You cannot select the No Education " +
                "value together with other values");
}ValueChangeEvent
См. ValueChangeEvent.
XML-атрибуты CheckBoxGroup
| Просматривать и редактировать атрибуты, применимые к компоненту, можно с помощью панели инспектора Jmix UI в конструкторе экранов Studio. | 
align - caption - captionAsHtml - captionProperty - colspan - contextHelpText - contextHelpTextHtmlEnabled - css - dataContainer - description - descriptionAsHtml - editable - enable - box.expandRatio - height - htmlSanitizerEnabled - icon - id - optionsContainer - optionsEnum - orientation - property - required - requiredMessage - responsive - rowspan - stylename - tabIndex - visible - width