fullPath

open fun fullPath(includeRoot: Boolean = true, includeSelf: Boolean = true, textOf: (TreeItem<T>) -> String = { it.value?.toString().orEmpty() }, delimiterOf: (i: Int, lastIndex: Int, left: TreeItem<T>, right: TreeItem<T>) -> String = { _, _, _, _ -> " / " }): String

Возвращает строковое представление полного пути к текущему элементу (TreeItem) в дереве (TreeView).

Функция строит путь от корня до текущего узла с учётом настроек:

  • можно включать или исключать корневой элемент (includeRoot);

  • можно включать или исключать сам текущий элемент (includeSelf);

  • можно настроить, как каждый элемент преобразуется в текст (textOf);

  • можно настроить, какой разделитель будет использоваться между элементами (delimiterOf).

Пример:

Root
└─ Users
└─ Admin

Вызов:

cell.fullPath()

Вернёт:

Root / Users / Admin

Параметры

Parameters

includeRoot

учитывать ли корневой узел. По умолчанию true. ⚠️ Свойство TreeView.isShowRoot игнорируется — корень включается или исключается только этим параметром.

includeSelf

учитывать ли текущий элемент (this.treeItem). По умолчанию true. Если false, строка строится до родителя.

textOf

функция преобразования TreeItem<T>String. По умолчанию it.value?.toString().orEmpty(). Можно подменить, например:

textOf = { it.value?.name ?: "<unnamed>" }
delimiterOf

функция, возвращающая разделитель между двумя соседними элементами пути. Вызывается для каждой пары элементов (left, right) с их индексами.

Параметры:

  • i: индекс текущего элемента в списке (0..lastIndex-1);

  • lastIndex: индекс последнего элемента пути;

  • left: текущий элемент;

  • right: следующий элемент.

По умолчанию всегда возвращает " / ".

Это даёт гибкость. Например:

delimiterOf = { _, _, left, _ ->
if (left.value.toString() == "Root") ":" else "."
}

Для дерева Root → Users → Admin даст результат:

Root:Users.Admin

Возвращаемое значение

Строка с полным путём или пустая строка, если путь построить невозможно (например, если элемент null или исключены все звенья).