ReorderController
Контроллер переупорядочивания при перетаскивании, подключаемый к контейнерам (VBox, HBox, PanelWidget) с поддержкой линий вставки и автоматического изменения порядка элементов.
Обзор
ReorderController реализует переупорядочивание элементов перетаскиванием внутри линейных контейнеров (VBox, HBox, PanelWidget).
Возможности
- Индикатор вставки: Отображает визуальную линию вставки в позиции будущего размещения элемента.
- Автоматическое применение: Автоматически меняет порядок детей в контейнере при
autoApply(true). - Внутреннее и внешнее перетаскивание: Поддерживает перемещение только собственных элементов или прием внешних элементов.
ReorderController.attach(vbox)
.orientation(Orientation.VERTICAL)
.accepts("task/*")
.autoApply(true)
.indicator(3.0f, 4.0f, ColorView.ofHex("#007ACC"))
.onReorder((from, to) -> syncDatabaseOrder(from, to));
Переупорядочивание дочерних элементов в контейнере
ReorderController.attach(vbox)
.orientation(Orientation.VERTICAL)
.accepts("card")
.onReorder((from, to) -> dataList.add(to, dataList.remove((int) from)));
Связанные ссылки
- DragController: Контроллер жеста перетаскивания, подключаемый к любому виджету через композицию для инициации drag-and-drop с ghost-предпросмотром, порогом смещения и автопрокруткой.
- DragSession: Состояние и контроллер активного жеста перетаскивания, управляющий координатами указателя, активной целью сброса, позиционированием ghost, индикаторами вставки и автопрокруткой.
- DropController: Контроллер цели сброса, подключаемый к любому виджету через композицию для фильтрации payload и обработки событий drag enter, over, leave и drop.
API
ReorderController::accepts(Predicate)
Задает предикат-валидатор допустимых payload для переупорядочивания.
| Параметр | Тип | Описание |
|---|---|---|
validator |
Predicate |
Пользовательский валидатор данных. |
Возвращает ReorderController: Данный ReorderController для цепочки вызовов..
ReorderController::accepts(String)
Настраивает типы payload, разрешенные для вызова переупорядочивания.
| Параметр | Тип | Описание |
|---|---|---|
types |
String |
Принимаемые типы данных для переупорядочивания. |
Возвращает ReorderController: Данный ReorderController для цепочки вызовов..
ReorderController::attach(Widget)
Подключает ReorderController к указанному контейнеру дочерних элементов.
| Параметр | Тип | Описание |
|---|---|---|
container |
Widget |
Виджет-контейнер, чьи дочерние элементы переупорядочиваются. |
Возвращает ReorderController: Вновь подключенный экземпляр ReorderController..
ReorderController::autoApply(boolean)
Включает или отключает автоматическое перемещение дочерних элементов в списке контейнера.
| Параметр | Тип | Описание |
|---|---|---|
autoApply |
boolean |
Применять ли изменения порядка дочерних элементов автоматически. |
Возвращает ReorderController: Данный ReorderController для цепочки вызовов..
ReorderController::container()
Возвращает целевой виджет-контейнер, к которому подключен данный контроллер.
Возвращает Widget: Виджет-контейнер, элементы которого переупорядочиваются..
ReorderController::detach()
Отключает ReorderController от контейнера и удаляет слушатели.
ReorderController::enabled(boolean)
Включает или отключает данный контроллер переупорядочивания.
| Параметр | Тип | Описание |
|---|---|---|
enabled |
boolean |
Включен ли контроллер переупорядочивания. |
Возвращает ReorderController: Данный ReorderController для цепочки вызовов..
ReorderController::indicator(ColorView, float, float)
Настраивает толщину, отступ и цвет линии индикатора вставки при переупорядочивании.
| Параметр | Тип | Описание |
|---|---|---|
color |
ColorView |
Цвет линии вставки при переупорядочивании. |
thickness |
float |
Толщина линии вставки при переупорядочивании. |
inset |
float |
Боковой отступ линии вставки. |
Возвращает ReorderController: Данный ReorderController для цепочки вызовов..
ReorderController::internalOnly(boolean)
Ограничивает переупорядочивание элементами, принадлежащими исключительно данному контейнеру.
| Параметр | Тип | Описание |
|---|---|---|
internalOnly |
boolean |
Принимать ли элементы только из данного контейнера. |
Возвращает ReorderController: Данный ReorderController для цепочки вызовов..
ReorderController::itemFilter(Predicate)
Задает предикат-фильтр, определяющий возможность перетаскивания конкретных дочерних элементов.
| Параметр | Тип | Описание |
|---|---|---|
itemFilter |
Predicate |
Предикат, определяющий возможность перетаскивания дочернего виджета. |
Возвращает ReorderController: Данный ReorderController для цепочки вызовов..
ReorderController::onReorder(BiConsumer)
Регистрирует упрощенный коллбэк с исходным и целевым индексами перемещения.
| Параметр | Тип | Описание |
|---|---|---|
listener |
BiConsumer |
Коллбэк, получающий fromIndex и toIndex. |
Возвращает ReorderController: Данный ReorderController для цепочки вызовов..
ReorderController::onReorder(Consumer)
Регистрирует коллбэк, принимающий объект события ReorderEvent.
| Параметр | Тип | Описание |
|---|---|---|
listener |
Consumer |
Коллбэк, вызываемый при переупорядочивании элементов. |
Возвращает ReorderController: Данный ReorderController для цепочки вызовов..
ReorderController::orientation(Orientation)
Настраивает ориентацию компоновки (HORIZONTAL или VERTICAL) для переупорядочивания.
| Параметр | Тип | Описание |
|---|---|---|
orientation |
Orientation |
Ориентация компоновки дочерних элементов контейнера. |
Возвращает ReorderController: Данный ReorderController для цепочки вызовов..