3.5.2.1.50. Tree
Компонент Tree
предназначен для отображения иерархической структуры, представленной сущностями, содержащими ссылки на самих себя.
XML-имя компонента: tree
Пример описания компонента Tree
в XML-дескрипторе экрана:
<data readOnly="true">
<collection id="departmentsDc" class="com.company.sales.entity.Department" view="department-view">
<loader id="departmentsDl">
<query>
<![CDATA[select e from sales_Department e]]>
</query>
</loader>
</collection>
</data>
<layout>
<tree id="departmentsTree" dataContainer="departmentsDc" hierarchyProperty="parentDept"/>
</layout>
В атрибуте dataContainer должен быть указан контейнер данных с типом CollectionContainer, а в атрибуте hierarchyProperty
нужно указать имя атрибута сущности, являющегося ссылкой на саму себя.
В атрибуте captionProperty
можно задать имя свойства сущности, отображаемого в дереве. Если этот атрибут не определен, то будет отображаться имя экземпляра сущности.
Атрибут contentMode
определяет, как должны отображаться заголовки элементов дерева. Поддерживаются следующие режимы отображения:
-
TEXT
- текстовые значения отображаются как простой текст. -
PREFORMATTED
- текстовые значения отображаются в виде предварительно отформатированного текста. В этом режиме переводы строки сохраняются при отображении на экране. -
HTML
- текстовые значения интерпретируются и отображаются в формате HTML. При использовании этого режима следует соблюдать осторожность, чтобы избежать проблем с XSS.
Метод setItemCaptionProvider()
задает функцию, которая обеспечивает простановку имени атрибута сущности в качестве заголовка для каждого элемента дерева.
Атрибуты выбора Tree
:
-
Атрибут
multiselect
позволяет задать режим множественного выделения элементов дерева. Еслиmultiselect
равенtrue
, то пользователь может выделить несколько элементов с помощью клавиатуры или мыши, удерживая клавиши Ctrl или Shift. По умолчанию режим множественного выделения отключен.
-
selectionMode
- определяет режим выделения строк. Поддерживаются следующие режимы:-
SINGLE
- единичный выбор строки. -
MULTI
- множественный выбор строк как в таблице. -
NONE
- выбор строк отключен.
Выделение строк можно отслеживать с помощью слушателя
SelectionListener
. Источник события выделения можно отследить с помощью метода isUserOriginated().Атрибут
selectionMode
имеет приоритет над устаревшимmultiselect
. -
Метод setItemClickAction()
позволяет задать действие, которое будет выполнено при двойном клике по узлу дерева.
Каждый элемент дерева может иметь значок слева. Создайте реализацию интерфейса ListComponent.IconProvider
в контроллере экрана и установите ее для компонента Tree
:
@Inject
private Tree<Department> tree;
@Subscribe
protected void onInit(InitEvent event) {
tree.setIconProvider(department -> {
if (department.getParentDept() == null) {
return "icons/root.png";
}
return "icons/leaf.png";
});
}
Вы можете подписаться на события разворачивания и сворачивания элементов дерева следующим образом:
@Subscribe("tree")
public void onTreeExpand(Tree.ExpandEvent<Task> event) {
notifications.create()
.withCaption("Expanded: " + event.getExpandedItem().getName())
.show();
}
@Subscribe("tree")
public void onTreeCollapse(Tree.CollapseEvent<Task> event) {
notifications.create()
.withCaption("Collapsed: " + event.getCollapsedItem().getName())
.show();
}
Для компонента Tree
можно установить DescriptionProvider, с помощью которого отображается HTML в том случае, если задан режим ContentMode.HTML
. Результат выполнения провайдера будет санитизирован, если для компонента Tree
атрибут htmlSanitizerEnabled
установлен в значение true
.
Значение атрибута htmlSanitizerEnabled
имеет приоритет над значением глобального свойства cuba.web.htmlSanitizerEnabled.
В старых экранах компонент Tree
может быть связан с данными через источник данных вместо более удобного контейнера. В этом случае необходимо определить вложенный элемент treechildren
, который должен содержать ссылку на источник данных с типом hierarchicalDatasource
в значении атрибута datasource. Определение hierarchicalDatasource
должно включать атрибут hierarchyProperty
- имя атрибута сущности, являющегося ссылкой на саму себя.
- Атрибуты tree
-
caption - captionAsHtml - captionProperty - contentMode - contextHelpText - contextHelpTextHtmlEnabled - css - dataContainer - description - descriptionAsHtml - enable - box.expandRatio - height - htmlSanitizerEnabled - id - multiselect - showOrphans - stylename - tabIndex - visible - width
- Элементы tree
- Атрибуты treechildren
- API
-
addCollapseListener - addExpandListener - setDescriptionProvider - setDetailsGenerator - setItemCaptionProvider