TwinColumn
TwinColumn
– это компонент с множественным выбором, выглядящий как два списка рядом, причем левый столбец содержит невыбранные элементы, а правый столбец — выбранные элементы. Пользователи могут выбирать значения, перемещая их слева направо и назад с помощью двойного щелчка или специальных кнопок.
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.
Атрибуты
-
Атрибут
addAllBtnEnabled
отображает кнопки, которые перемещают все элементы из одного столбца в другой. Возможны следующие значения:-
true
-
false
- значение по умолчанию.
-
-
Атрибуты
leftColumnCaption
иrightColumnCaption
позволяют задать для столбцов заголовки. -
Атрибут
rows
позволяет установить количество строк в каждом списке. Значениеheight
имеет приоритет над значениемrows
.
События и слушатели
Чтобы сгенерировать заглушку слушателя в Jmix Studio, выберите компонент в XML-дескрипторе экрана или на панели иерархии Jmix UI и используйте вкладку Handlers на панели инспектора Jmix UI. В качестве альтернативы вы можете воспользоваться кнопкой Generate Handler на верхней панели контроллера экрана. |
ValueChangeEvent
См. ValueChangeEvent.
OptionStyleProvider
См. OptionStyleProvider.
Validator
См. Validator.
XML-атрибуты TwinColumn
Просматривать и редактировать атрибуты, применимые к компоненту, можно с помощью панели инспектора Jmix UI в конструкторе экранов Studio. |
addAllBtnEnabled - align - box.expandRatio - caption - captionAsHtml - captionProperty - colspan - contextHelpText - contextHelpTextHtmlEnabled - css - dataContainer - description - descriptionAsHtml - editable - enable - height - htmlSanitizerEnabled - icon - id - leftColumnCaption - optionsContainer - property - required - requiredMessage - responsive - rightColumnCaption - rows - rowspan - stylename - tabIndex - visible - width