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
, необходимо вызвать этот метод.