TwinColumn

TwinColumn – это компонент с множественным выбором, выглядящий как два списка рядом, причем левый столбец содержит невыбранные элементы, а правый столбец — выбранные элементы. Пользователи могут выбирать значения, перемещая их слева направо и назад с помощью двойного щелчка или специальных кнопок.

twin column

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

Основы

Ниже приведен пример использования компонента TwinColumn для выбора экземпляров сущности. Чтобы указать возможные значения, используйте атрибут optionsContainer с id требуемой коллекции сущностей в качестве значения.

@JmixEntity
@Table(name = "UIEX1_EMPLOYEE")
@Entity(name = "uiex1_Employee")
public class Employee {
    @InstanceName
    @Column(name = "NAME")
    private String name;

    @JmixGeneratedValue
    @Column(name = "ID", nullable = false)
    @Id
    private UUID id;
}
<data>
    <collection id="employeesDc"
                class="ui.ex1.entity.Employee">
        <fetchPlan extends="_local"/>
        <loader id="employeesDl">
            <query>
                <![CDATA[select e from uiex1_Employee e]]>
            </query>
        </loader>
    </collection>
</data>
<layout>
    <twinColumn id="twinColumn"
                addAllBtnEnabled="true"
                optionsContainer="employeesDc"/>
</layout>

В приведенном выше примере компонент отображает поле сущностей Employee, помеченное аннотацией @InstanceName. Значение компонента представляет собой список выбранных сущностей.

Например, давайте определим кнопку, отображающую список имен выбранных сущностей:

<button id="button" caption="Show value"/>
@Autowired
private TwinColumn<Employee> twinColumn;
@Autowired
private Notifications notifications;
@Autowired
private MetadataTools metadataTools;

@Subscribe("button")
protected void onButtonClick(Button.ClickEvent event) {
    StringBuilder sb = new StringBuilder();
    Collection<Employee> employees = twinColumn.getValue();
    if (employees != null) {
        notifications.create()
                .withCaption(
                        employees.stream()
                                .map(employee -> metadataTools.getInstanceName(employee))
                                .collect(Collectors.joining("\n"))
                )
                .show();

    }
}

Опции

В качестве списка возможных значений можно использовать одну из реализаций Options интерфейса. См. больше о программной настройке опций в разделе для CheckBoxGroup.

Атрибуты

  1. Атрибут addAllBtnEnabled отображает кнопки, которые перемещают все элементы из одного столбца в другой. Возможны следующие значения:

    • true

    • false - значение по умолчанию.

  2. Атрибуты leftColumnCaption и rightColumnCaption позволяют задать для столбцов заголовки.

  3. Атрибут rows позволяет установить количество строк в каждом списке. Значение height имеет приоритет над значением rows.

События и слушатели

Чтобы сгенерировать заглушку слушателя в Jmix Studio, выберите компонент в XML-дескрипторе экрана или на панели иерархии Jmix UI и используйте вкладку Handlers на панели инспектора Jmix UI.

В качестве альтернативы вы можете воспользоваться кнопкой Generate Handler на верхней панели контроллера экрана.

ContextHelpIconClickEvent

ValueChangeEvent

OptionCaptionProvider

OptionStyleProvider

Validator

См. Validator.

XML-атрибуты TwinColumn

Просматривать и редактировать атрибуты, применимые к компоненту, можно с помощью панели инспектора Jmix UI в конструкторе экранов Studio.

XML-элемент TwinColumn