Skip to content

Latest commit

 

History

History
157 lines (137 loc) · 8.59 KB

File metadata and controls

157 lines (137 loc) · 8.59 KB
OptionsGroup

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

gui optionsGroup

XML-имя компонента: optionsGroup.

Компонент OptionsGroup реализован для блоков Web Client и Desktop Client.

  • Простейший вариант использования OptionsGroup - выбор значения перечисления (enum) для атрибута сущности. Например, сущность Role имеет атрибут type типа RoleType, который является перечислением. Тогда для редактирования этого атрибута можно использовать OptionsGroup следующим образом:

    link:../../../../../../source/gui_vcl/optionsgroup_1.xml[role=include]

    Как видно из примера, в экране описывается источник данных roleDs для сущности Role. В компоненте optionsGroup в атрибуте datasource указывается ссылка на источник данных, а в атрибуте property − название атрибута сущности, значение которого должно быть отображено.

    В результате компонент примет следующий вид:

    gui optionsGroup roleType
  • Список опций компонента может быть задан произвольно с помощью методов setOptionsList(), setOptionsMap() и setOptionsEnum(), либо с помощью XML-атрибута optionsDatasource.

  • Метод setOptionsList() позволяет программно задать список опций компонента. Для этого объявляем компонент в XML-дескрипторе:

    link:../../../../../../source/gui_vcl/optionsgroup_2.xml[role=include]

    Затем инжектируем компонент в контроллер и в методе init() задаем ему список опций:

    link:../../../../../../source/gui_vcl/optionsgroup_3.java[role=include]

    Компонент примет следующий вид:

    gui optionsGroup integerList

    При этом метод getValue() компонента в зависимости от выбранной опции будет возвращать Integer значения 2,4,5,7.

  • Метод setOptionsMap() позволяет задать строковые названия и значения опций по отдельности. Например, для описанного в XML-дескрипторе компонента numberOfSeatsField в методе init() контроллера задаем мэп опций:

    link:../../../../../../source/gui_vcl/optionsgroup_4.java[role=include]

    Компонент примет следующий вид:

    gui optionsGroup integerMap

    При этом метод getValue() компонента в зависимости от выбранной опции будет возвращать Integer значения 2,4,5,7, а не строки, отображаемые на экране.

  • setOptionsEnum() принимает в качестве параметра класс перечисления. Список опций будет состоять из локализованных названий значений перечисления, значением компонента будет являться выбранное значение перечисления.

  • Компонент может брать список опций из источника данных. Для этого используется атрибут optionsDatasource. Например:

    link:../../../../../../source/gui_vcl/optionsgroup_5.xml[role=include]

    В данном случае компонент coloursField отобразит имена экземпляров сущности Colour, находящихся в источнике данных coloursDs, а его метод getValue() вернет выбранный экземпляр сущности.

    С помощью атрибута captionProperty можно указать, какой атрибут сущности использовать вместо имени экземпляра для строковых названий опций.

  • С помощью атрибута multiselect можно переключить OptionsGroup в режим множественного выбора. Если multiselect включен, то компонент отображается как группа независимых флажков, а значением компонента является список выбранных опций.

    Например, создадим в XML-дескрипторе экрана компонент:

    link:../../../../../../source/gui_vcl/optionsgroup_6.xml[role=include]

    И в контроллере зададим для него список опций - значения перечисления RoleType:

    link:../../../../../../source/gui_vcl/optionsgroup_7.java[role=include]

    Компонент примет следующий вид:

    gui optionsGroup roleType multi

    В данном случае метод getValue() компонента вернет объект типа java.util.List, содержащий значения RoleType.READONLY и RoleType.DENYING.

    Этот пример иллюстрирует также способность компонента OptionsGroup автоматически отображать локализованные значения перечислений, входящих в модель данных приложения.

    Чтобы программно задать выбор некоторых значений OptionsGroup, нужно передать список значений в формате java.util.List в метод setValue():

    optionsGroup.setValue(Arrays.asList(RoleType.STANDARD, RoleType.ADMIN));
  • Атрибут orientation задает расположение элементов группы. По умолчанию элементы располагаются по вертикали. Значение horizontal задает горизонтальное расположение.