Перейти к содержанию

DragController

Контроллер жеста перетаскивания, подключаемый к любому виджету через композицию для инициации drag-and-drop с ghost-предпросмотром, порогом смещения и автопрокруткой.

Обзор

DragController добавляет функционал инициатора перетаскивания любому виджету посредством композиции.

Пример использования

DragController.attach(headerWidget)
        .dragged(entireCardWidget)
        .payload(() -> DragPayload.of("card-1", "cards/item", "Card 1"))
        .threshold(4.0f)
        .ghostWidget(entireCardWidget, 0.75f)
        .onDragEnd(end -> System.out.println("Результат: " + end.outcome()));

Параметры настройки

Параметр Метод Назначение
Ручка attach(widget) Виджет, перехватывающий нажатие мыши для старта перетаскивания.
Перемещаемый виджет dragged(widget) Логический компонент, который фактически перемещается.
Ленивый payload payload(Supplier) Вычисляет данные только при фактическом превышении порога смещения.
Порог смещения threshold(px) Мертвая зона в пикселях до начала перетаскивания.
Фиксация оси lockGhostAxis(Orientation) Ограничивает движение ghost-виджета только по горизонтали или вертикали.
Автопрокрутка autoScroll(edge, speed) Прокручивает родительские контейнеры при поднесении к краю.

Подключение DragController к виджету

DragController.attach(header)
        .dragged(card)
        .payload(() -> DragPayload.of("card-1", "card", "Card #1", data))
        .threshold(4.0f)
        .onDragEnd(end -> System.out.println("Outcome: " + end.outcome()));

Связанные ссылки

  • DragSession: Состояние и контроллер активного жеста перетаскивания, управляющий координатами указателя, активной целью сброса, позиционированием ghost, индикаторами вставки и автопрокруткой.
  • DropController: Контроллер цели сброса, подключаемый к любому виджету через композицию для фильтрации payload и обработки событий drag enter, over, leave и drop.

API

DragController::attach(Widget)

Подключает новый DragController к указанному виджету-ручке.

Параметр Тип Описание
handle Widget Виджет, выступающий в роли ручки для инициации перетаскивания.

Возвращает DragController: Вновь подключенный экземпляр DragController..

DragController::autoScroll(boolean)

Включает или отключает поведение автопрокрутки.

Параметр Тип Описание
autoScroll boolean Включена ли автоматическая прокрутка.

Возвращает DragController: Данный DragController для цепочки вызовов..

DragController::autoScroll(float, float)

Настраивает параметры автоматической прокрутки контейнера при поднесении к краю.

Параметр Тип Описание
edge float Отступ от края в пикселях для срабатывания автопрокрутки.
pixelsPerSecond float Скорость автоматической прокрутки в пикселях в секунду.

Возвращает DragController: Данный DragController для цепочки вызовов..

DragController::cancel()

Программно отменяет активный жест перетаскивания.

DragController::detach()

Отключает контроллер перетаскивания от виджета-ручки и удаляет зарегистрированные слушатели.

DragController::dragged(Widget)

Задает логический виджет, перемещаемый операцией перетаскивания (например, всю карточку при перетаскивании за заголовок).

Параметр Тип Описание
dragged Widget Логический виджет, перемещаемый операцией перетаскивания.

Возвращает DragController: Данный DragController для цепочки вызовов..

DragController::dragging()

Проверяет, находится ли жест перетаскивания в активном состоянии с перемещением.

Возвращает boolean: True, если жест перетаскивания активен в данный момент..

DragController::enabled(boolean)

Включает или выключает данный контроллер перетаскивания.

Параметр Тип Описание
enabled boolean Включен ли контроллер перетаскивания.

Возвращает DragController: Данный DragController для цепочки вызовов..

DragController::filter(Predicate)

Задает предикат-фильтр для выборочного отклонения событий нажатия указателя.

Параметр Тип Описание
filter Predicate Предикат-фильтр для событий нажатия указателя.

Возвращает DragController: Данный DragController для цепочки вызовов..

DragController::ghost(DragGhost)

Настраивает пользовательский отрисовщик ghost-представления перетаскиваемого элемента.

Параметр Тип Описание
ghost DragGhost Отрисовщик ghost-представления перетаскиваемого элемента.

Возвращает DragController: Данный DragController для цепочки вызовов..

DragController::ghost(Widget)

Настраивает ghost-отображение, дублирующее визуальный облик указанного виджета.

Параметр Тип Описание
widget Widget Виджет, визуальный облик которого клонируется для ghost-отображения.

Возвращает DragController: Данный DragController для цепочки вызовов..

DragController::ghostOpacity(float)

Задает уровень непрозрачности для предпросмотра ghost-виджета.

Параметр Тип Описание
opacity float Непрозрачность ghost-отображения перетаскивания.

Возвращает DragController: Данный DragController для цепочки вызовов..

DragController::handle()

Возвращает виджет-ручку, к которому подключен данный контроллер.

Возвращает Widget: Виджет, настроенный как ручка перетаскивания..

DragController::lockGhostAxis(Orientation)

Ограничивает перемещение ghost-отображения только по горизонтали или вертикали.

Параметр Тип Описание
axis Orientation Ограничение оси перемещения ghost-отображения.

Возвращает DragController: Данный DragController для цепочки вызовов..

DragController::onDragEnd(Consumer)

Регистрирует коллбэк, вызываемый при завершении перетаскивания с указанием финального результата.

Параметр Тип Описание
listener Consumer Коллбэк, вызываемый при завершении перетаскивания.

Возвращает DragController: Данный DragController для цепочки вызовов..

DragController::onDragMove(Consumer)

Регистрирует коллбэк, вызываемый при каждом перемещении указателя во время перетаскивания.

Параметр Тип Описание
listener Consumer Коллбэк, вызываемый при перемещении указателя во время перетаскивания.

Возвращает DragController: Данный DragController для цепочки вызовов..

DragController::onDragStart(Consumer)

Регистрирует коллбэк, вызываемый в момент фактического начала перетаскивания.

Параметр Тип Описание
listener Consumer Коллбэк, вызываемый при старте сессии перетаскивания.

Возвращает DragController: Данный DragController для цепочки вызовов..

DragController::payload(DragPayload)

Настраивает статический константный payload для жеста перетаскивания.

Параметр Тип Описание
payload DragPayload Статический payload для передачи.

Возвращает DragController: Данный DragController для цепочки вызовов..

DragController::payload(Supplier)

Настраивает ленивый поставщик payload, вызываемый при превышении порога смещения перетаскивания.

Параметр Тип Описание
payload Supplier Ленивый поставщик payload, вызываемый в момент начала перетаскивания.

Возвращает DragController: Данный DragController для цепочки вызовов..

DragController::session()

Возвращает активную сессию DragSession или null, если перетаскивание неактивно.

Возвращает DragSession: Активная сессия перетаскивания DragSession или null..

DragController::sourceOpacity(float)

Задает прозрачность исходного виджета во время активного перетаскивания.

Параметр Тип Описание
opacity float Непрозрачность ghost-отображения перетаскивания.

Возвращает DragController: Данный DragController для цепочки вызовов..

DragController::threshold(float)

Задает минимальный порог смещения в пикселях до начала сессии перетаскивания.

Параметр Тип Описание
threshold float Порог смещения в пикселях до активации перетаскивания.

Возвращает DragController: Данный DragController для цепочки вызовов..