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

DropController

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

Обзор

DropController управляет валидацией и жизненным циклом зон приема сброса виджетов.

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

DropController.attach(targetContainer)
        .accepts("items/weapon", "items/armor")
        .onDragEnter(event -> targetContainer.style().border(ColorView.GREEN, 2.0f))
        .onDragLeave(event -> targetContainer.style().clearBorder())
        .onDrop(event -> addItem(event.payload().data(Item.class)));

Возможности

  • Декларативная фильтрация: Фильтрация типов через accepts(String...) или предикаты accepts(Predicate<DragPayload>).
  • Автоматическое подтверждение: Автоматически вызывает event.accept(zone) при совпадении payload.
  • Коллбэки жизненного цикла: Удобная цепочка методов onDragEnter, onDragOver, onDragLeave и onDrop.

Подключение DropController с валидацией

DropController.attach(targetPanel)
        .accepts("card")
        .onDrop(event -> System.out.println("Dropped: " + event.payload().id()));

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

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

API

DropController::accepts(DragPayload)

Проверяет, принимаются ли переданные данные payload согласно настроенным фильтрам.

Параметр Тип Описание
payload DragPayload Данные для валидации.

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

DropController::accepts(Predicate)

Задает предикат для валидации принимаемых данных payload.

Параметр Тип Описание
validator Predicate Предикат-валидатор данных.

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

DropController::accepts(String)

Настраивает фильтр принимаемых типов данных payload.

Параметр Тип Описание
types String Принимаемые типы данных.

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

DropController::attach(Widget)

Подключает контроллер приема сброса к указанному виджету зоны сброса.

Параметр Тип Описание
zone Widget Виджет, выступающий в роли зоны сброса.

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

DropController::detach()

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

DropController::enabled(boolean)

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

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

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

DropController::hovering()

Проверяет, находится ли в данный момент курсор с подходящим payload над зоной сброса.

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

DropController::onDragEnter(Consumer)

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

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

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

DropController::onDragLeave(Consumer)

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

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

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

DropController::onDragOver(Consumer)

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

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

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

DropController::onDrop(Consumer)

Регистрирует слушатель события успешного сброса данных в зону сброса.

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

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

DropController::zone()

Возвращает виджет, зарегистрированный в качестве зоны сброса.

Возвращает Widget: Виджет, выступающий в роли зоны сброса..