UXListView
- class
UXListView(php\gui\UXListView) extendsUXControl.
use php\gui\UXListView;
Класс компонента для отображений списков в GUI, в котором можно выделять элементы.
Изображение компонента:
Свойства
->editable->editingIndex->fixedCellSize->placeholder->items->itemsText->orientation->multipleSelection->selectedIndexes->selectedIndex->focusedIndex->selectedItems->selectedItem->focusedItem
Методы
- Конструктор (
new)__construct ->scrollTo()->edit()->setCellFactory()->setDraggableCellFactory()->update()
Свойства
editable (bool)
В разработке, свойство еще не работает.
Возможность редактировать элементы списка двойным кликом или вызовом методаedit(). По-умолчаниюfalse.
editingIndex (int)
Только для чтения.
Индекс элемента, который в данный момент находится на редактировании.
fixedCellSize (int)
Размер ячейки, высота каждого элемента в списке, по-умолчанию значение -1, которое означает, что высота будет высчитываться автоматически.

placeholder (UXNode)
Компонент, который будет отображаться если список пустой. Это может быть что угодно, картинка, кнопка, любой визуальный компонент. По-умолчанию null, что означает - при пустом списке ничего не отображать.
$listView->placeholder = new UXLabel('Список пуст.');
items (UXList)
Содержимое списка, набор его элементов. Обычно он состоит из строк, однако это могут быть любые значения - числа, текст, объекты и даже другие визуальные компоненты.
По-умолчанию, при отображении списка компонент пытается любое значение привести к строке, в этом случае, для объектов будет вызываться их магический метод
__toString(). Это поведение можно переопределить через методsetCellFactory().
itemsText (string)
Содержимое списке в виде одной строки, в виде текста, где каждая строка отделена символом перевода на новую строку \n.
$text = $listView->itemsText;
// это аналогично такому коду
$text = str::join($listView->items, "\n");
orientation (string)
Направление списка - горизонтальное ('HORIZONTAL') или вертикальное ('VERTICAL'), по-умолчанию вертикальное 'VERTICAL'.
multipleSelection (bool)
Возможность выделить в списке сразу несколько элементов, например, зажав кнопку CTRL или SHIFT.
selectedIndexes (array)
Массив индексов выделенных элементов в списке, индексация начинается с нуля. Особенно актуально, когда в списке можно выделить несколько элементов.
selectedIndex (int)
Выделенный элемент в списке, индексация начинается с нуля. Если значение равно -1, значит в списке ничего не выделено.
$listView->selectedIndex = -1; // снимает выделение со всех элементов.
$listView->selectedIndex = 2; // выделить 3 по счету элемент.
focusedIndex (int)
Индекс элемента из списка, на котором стоит фокус.
selectedItems (array)
Список выделенных элементов в списке в виде массива их значений (не путать с индексами). Особенно актуально, когда можно выделять несколько элементов.
selectedItem (mixed)
Один выделенный элемент в списке, его значение (не путать с индексами).
focusedItem (mixed)
Элемент, его значение, на котором стоит фокус (не путать с индексами).
Методы
__construct()
Конструктор класса UXList, без параметров.
$listView = new UXListView();
scrollTo()
scrollTo(int $index)
Проскролить к элементу под индексом $index, индексация начинается с нуля. См. также selectedIndex и focusedIndex.
edit()
edit(int $index)
Начать редактирование элемента под индексом $index, индексация начинается с нуля. Не работает без установленного в true свойства editable.
setCellFactory()
setCellFactory(callable $handler)
где $handler это метод или функция вида:
function (UXListCell $cell, mixed $item)
Метод переопределяет то, как визуально отображать элементы в списке.
$listView->setCellFactory(function (UXListCell $cell, $item) {
$cell->graphic = new UXLabel($item->text);
$cell->text = null;
});
setDraggableCellFactory()
setDraggableCellFactory(callable $handler, callable $dragDoneHandler)
где:
// $handler
function (UXListCell $cell, $item) {}
// $dragDoneHandler
function (UXDragEvent $e, UXListView $view) {}
Определяет то, как будет выглядеть процедура drag-n-drop для списка.
update()
Вызывает перерисовку компонента списка, иногда актуально, когда компонент не может зафиксировать обновление items, необходимо вызвать этот метод.

