CheckBoxGroup
CheckBoxGroup
allows you to select multiple values from a list of options using checkboxes. If you need to choose only one value from the list, you should use the RadioButtonGroup component.
Component’s XML-name: checkBoxGroup
.
Basics
The component can take a list of options from a data container. You can use the optionsContainer
attribute, for example:
<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>
In this case, the CheckBoxGroup
component will display instance names of the Country
entity, located in the countriesDc
data container, and its getValue()
method will return the Collection
of selected entity instances.
Also, you can do the same thing programmatically:
<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>
Please note that in the XML descriptor above, we did not assign an optionsContainer
to the countriesCheckBoxGroup
check box group; we will do this programmatically in the controller:
@Autowired
private CheckBoxGroup<Country> countriesCheckBoxGroup;
@Autowired
private CollectionContainer<Country> countriesDc;
@Subscribe
protected void onInit(InitEvent event) {
countriesCheckBoxGroup.setOptions(new ContainerOptions<>(countriesDc));
}
With the help of the captionProperty attribute, you can choose another entity attribute to display in the component.
The orientation
attribute defines the orientation of group elements. By default, elements are arranged vertically. The horizontal
value sets the horizontal orientation.
Options
setOptions()
The setOptions()
method takes one of the implementations of the Options
interface and enables working with all types of options:
@Autowired
private CheckBoxGroup<Operation> checkBoxGroup;
@Subscribe
protected void onInit(InitEvent event) {
checkBoxGroup.setOptions(new EnumOptions<>(Operation.class));
}
setOptionsEnum()
, setOptionsList()
and setOptionsMap()
work in the same way as in the ComboBox component.
Validation
To check values entered into the CheckBoxGroup
component, you can use a validator in a nested validators
element.
The following predefined validators are available for CheckBoxGroup
:
In the example below, we will show a SizeValidator
usage for 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>
Events and Handlers
To generate a handler stub in Jmix Studio, select the component in the screen descriptor XML or in the Jmix UI hierarchy panel and use the Handlers tab of the Jmix UI inspector panel. Alternatively, you can use the Generate Handler button in the top panel of the screen controller. |
OptionDescriptionProvider
The option description provider generates tooltip descriptions for the options of the CheckBoxGroup
component.
In the example below, we will show an OptionDescriptionProvider
usage for the checkBoxGroupDesc
:
@Install(to = "checkBoxGroupDesc", subject = "optionDescriptionProvider")
protected String checkBoxGroupDescOptionDescriptionProvider(Customer customer) {
return "Email: " + customer.getEmail();
}
To register the option lookup handler programmatically, use the setOptionDescriptionProvider()
component method.
OptionIconProvider
See OptionIconProvider.
Validator
Adds a validator instance to the component. The validator
must throw ValidationException
if the value is not valid.
If you are not satisfied with the predefined validators, add your own validator instance:
@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
See ValueChangeEvent.
CheckBoxGroup XML Attributes
You can view and edit attributes applicable to the component using the Jmix UI inspector panel of the Studio’s Screen Designer. |
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