3.5.2.1.1. AppMenu

Компонент AppMenu позволяет динамически управлять элементами главного меню в главном экране приложения.

gui AppMenu

CUBA Studio предоставляет готовые шаблоны главного экрана на основе стандартного экрана MainScreen платформы. В примере ниже приведён шаблон, расширяющий класс MainScreen и обеспечивающий прямой доступ к экземпляру компонента AppMenu:

public class ExtMainScreen extends MainScreen implements Window.HasFoldersPane {

    @Inject
    private Notifications notifications;
    @Inject
    private AppMenu mainMenu;

    @Subscribe
    public void onInit(InitEvent event) {
        AppMenu.MenuItem item = mainMenu.createMenuItem("shop", "Shop");
        AppMenu.MenuItem subItem = mainMenu.createMenuItem("customer", "Customers", null, menuItem -> {
            notifications.create()
                    .withCaption("Customers menu item clicked")
                    .withType(Notifications.NotificationType.HUMANIZED)
                    .show();
        });
        item.addChildItem(subItem);
        mainMenu.addMenuItem(item, 0);
    }
}

Методы интерфейса AppMenu:

  • addMenuItem() - добавляет элемент меню в конец списка элементов или на позицию с указанным индексом.

  • createMenuItem() - фабричный метод для создания нового элемента меню. Не добавляет элемент к меню. id должен быть уникальным внутри всего меню.

  • createSeparator() - создаёт разделитель элементов меню.

  • getMenuItem()/getMenuItemNN() - возвращает объект элемента меню по его идентификатору.

  • getMenuItems() - возвращает список элементов меню.

  • hasMenuItems() - возвращает true, если меню содержит элементы.

Методы интерфейса MenuItem:

  • addChildItem() / removeChildItem() - добавляет/удаляет элемент меню в конец или на указанную позицию в списке дочерних элементов.

  • getCaption() - возвращает строковый заголовок элемента меню.

  • getChildren() - возвращает список дочерних элементов.

  • setCommand() - используется для описания действия, которое должно быть выполнено при выборе этого элемента меню кликом мыши.

  • setDescription() - устанавливает строковое описание элемента меню, отображаемое в виде всплывающей подсказки.

  • setIconFromSet() - устанавливает значок элемента меню.

  • getId() - возвращает идентификатор элемента меню.

  • getMenu() - возвращает родительский экземпляр AppMenu.

  • setStylename() - устанавливает один или более пользовательских стилей для компонента, заменяя все ранее заданные стили. Имена стилей при перечислении отделаются пробелами. Имя стиля должно быть названием существующего CSS-класса.

  • hasChildren() - возвращает true, если у элемента меню есть дочерние элементы.

  • isSeparator() - возвращает true, если элемент является разделителем.

  • setVisible() - управляет видимостью элемента меню.

Внешний вид компонента AppMenu можно настроить с помощью переменных SCSS с префиксами $cuba-menubar-* и $cuba-app-menubar-*. Эти переменные можно изменить в визуальном редакторе после расширения темы или создания новой темы.