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

ContextMenu

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

Обзор

ContextMenu — плавающее выпадающее контекстное меню, отображающее упорядоченный список действий, подменю и разделителей.

Ключевые возможности: - Обычные и форматированные пункты меню с колбэками Runnable. - Вложенные иерархические подменю. - Умное позиционирование внутри границ экрана (hostBounds, arrangeInHost). - Автоматическое закрытие при клике вне области меню (closeOnOutsideClick).

Создание и открытие контекстного меню

ContextMenu menu = new ContextMenu();
menu.item("Copy", () -> copy()).separator().item("Paste", () -> paste());
menu.openAt(mouseX, mouseY);

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

  • OverlayLayer: Полноэкранный слой оверлеев, управляющий модальными подложками, диалогами, всплывающими окнами и проверкой попаданий.
  • Popup: Всплывающий виджет, позиционируемый относительно целевых элементов интерфейса или экранных координат.

API

ContextMenu()

Создает пустое контекстное меню.

ContextMenu::arrangeInHost(RectView)

Компонует меню внутри границ экрана, корректируя сторону размещения при выходе за границы.

Параметр Тип Описание
hostBounds RectView Прямоугольная область границ родительского контейнера.

ContextMenu::close()

Закрывает меню и все активные подменю.

Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..

ContextMenu::closeOnOutsideClick()

Возвращает true, если клик снаружи закрывает меню.

Возвращает boolean: True, если закрытие по клику вне виджета включено..

ContextMenu::closeOnOutsideClick(boolean)

Устанавливает, должен ли клик снаружи закрывать меню.

Параметр Тип Описание
closeOnOutsideClick boolean Закрывать ли виджет автоматически при клике вне его области.

Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..

ContextMenu::item(Button)

Добавляет готовую кнопку в качестве пункта меню.

Параметр Тип Описание
button Button Пользовательская кнопка для прикрепления.

Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..

ContextMenu::item(RichText)

Добавляет пункт меню с форматированным текстом RichText.

Параметр Тип Описание
text RichText Отображаемая текстовая строка.

Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..

ContextMenu::item(RichText, Runnable)

Добавляет пункт меню с форматированным текстом RichText и действием по клику.

Параметр Тип Описание
text RichText Отображаемая текстовая строка.
action Runnable Действие для выполнения.

Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..

ContextMenu::item(String)

Добавляет текстовый пункт меню с простым текстом.

Параметр Тип Описание
text String Отображаемая текстовая строка.

Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..

ContextMenu::item(String, Runnable)

Добавляет текстовый пункт меню с действием по клику.

Параметр Тип Описание
text String Отображаемая текстовая строка.
action Runnable Действие для выполнения.

Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..

ContextMenu::itemButton(int)

Возвращает кнопку элемента по указанному индексу.

Параметр Тип Описание
index int Индекс элемента (начиная с нуля).

Возвращает Button: Экземпляр кнопки..

ContextMenu::itemCount()

Возвращает общее количество элементов в меню.

Возвращает int: Общее количество элементов..

ContextMenu::open()

Открывает меню в его последней настроенной позиции.

Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..

ContextMenu::open(boolean)

Устанавливает состояние открытия контекстного меню.

Параметр Тип Описание
open boolean Флаг целевого состояния открытия.

Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..

ContextMenu::openAt(float, float)

Открывает меню по указанным координатам экрана.

Параметр Тип Описание
x float Горизонтальная координата X.
y float Вертикальная координата Y.

Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..

ContextMenu::opened()

Возвращает true, если контекстное меню открыто.

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

ContextMenu::padding(EdgeInsets)

Устанавливает внутренние отступы вокруг пунктов меню.

Параметр Тип Описание
padding EdgeInsets Внутренние отступы контента.

Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..

ContextMenu::selectItem(int)

Выбирает элемент меню по указанному индексу.

Параметр Тип Описание
index int Индекс элемента (начиная с нуля).

Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..

ContextMenu::selectedItemIndex()

Возвращает индекс текущего наведенного или выбранного с клавиатуры элемента.

Возвращает int: Индекс элемента..

ContextMenu::separator()

Добавляет разделительную полосу между элементами.

Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..

ContextMenu::separator(Separator)

Добавляет пользовательский разделитель Separator.

Параметр Тип Описание
separator Separator Визуальный элемент разделителя.

Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..

Добавляет каскадный пункт меню с подменю и пользовательской кнопкой.

Параметр Тип Описание
button Button Пользовательская кнопка для прикрепления.
submenu ContextMenu Вложенный контейнер подменю.

Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..

Добавляет каскадный пункт меню с подменю и текстом RichText.

Параметр Тип Описание
text RichText Отображаемая текстовая строка.
submenu ContextMenu Вложенный контейнер подменю.

Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..

Добавляет каскадный пункт меню с подменю и простым текстом.

Параметр Тип Описание
text String Отображаемая текстовая строка.
submenu ContextMenu Вложенный контейнер подменю.

Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..

ContextMenu::toggle(float, float)

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

Параметр Тип Описание
x float Горизонтальная координата X.
y float Вертикальная координата Y.

Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..