Drawer
Drawer представляет собой сворачиваемую панель, которая позволяет пользователям переключать содержимое. Обычно он используется как контейнер для компонента SideMenu.
XML-имя компонента: drawer.
Основы
Определение Drawer в дескрипторе экрана должно иметь следующую структуру: CssLayout содержит и drawer, и остальные части компоновки экрана (например, workArea), с назначенным стилем jmix-drawer-layout.
Сам drawer должен включать следующие элементы, которые представляют:
-
Заголовок
Drawer–CssLayoutсо стилемjmix-drawer-header.-
Значок заголовка со стилем
app-icon. -
Сам заголовок со стилем
app-title.
-
-
Содержимое
Drawer, например, SideMenu, со стилемjmix-drawer-content. -
Нижний колонтитул
Drawerсо стилемjmix-drawer-footer.-
Кнопка помещается в нижний колонтитул
drawerи используется для сворачивания и разворачиванияDrawer.
-
toggle
Метод toggle() разворачивает или сворачивает drawer в зависимости от его текущего состояния. Например, если drawer уже свернут, он будет развернут после вызова метода toggle(), и наоборот.
Вы также можете проверить текущее состояние drawer с помощью метода isCollapsed().
expandOnHover
Атрибут expandOnHover задает режим, при котором элемент drawer разворачивается при наведении. Обратите внимание, что состояние "свернут/развернут" при этом не изменяется. Значение по умолчанию – false.
Пример использования
Наиболее распространенный способ использования drawer — на главном экране.
Например:
<layout>
<cssLayout stylename="jmix-drawer-layout">
<drawer id="drawer" expandOnHover="true">
<cssLayout stylename="jmix-drawer-header"
width="100%">
<hbox spacing="true">
<image id="logoImage"
stylename="app-icon"
scaleMode="SCALE_DOWN">
<resource>
<theme path="branding/app-icon-menu.svg"/>
</resource>
</image>
<label id="appTitleLabel"
stylename="app-title"
value="Application"/>
</hbox>
</cssLayout>
<sideMenu id="sideMenu"
width="100%"
stylename="jmix-drawer-content"/>
<cssLayout stylename="jmix-drawer-footer"
width="100%">
<hbox align="BOTTOM_RIGHT">
<button id="collapseDrawerButton"
icon="CHEVRON_LEFT"
stylename="jmix-drawer-collapse-button"
description="mainMsg://sideMenuCollapse"/>
</hbox>
</cssLayout>
</drawer>
<hbox spacing="true" margin="true">
<textArea height="300px"
width="125px"
caption="Text area #1"/>
<textArea height="300px"
width="125px"
caption="Text area #2"/>
</hbox>
</cssLayout>
</layout>
@Autowired
private Drawer drawer;
@Autowired
private Button collapseDrawerButton;
@Subscribe("collapseDrawerButton")
public void onCollapseDrawerButtonClick(Button.ClickEvent event) {
drawer.toggle(); (1)
if (drawer.isCollapsed()) { (2)
collapseDrawerButton.setIconFromSet(JmixIcon.CHEVRON_RIGHT);
} else {
collapseDrawerButton.setIconFromSet(JmixIcon.CHEVRON_LEFT);
}
}
| 1 | Переключение состояния drawer по нажатию кнопки. |
| 2 | Изменение значка кнопки в зависимости от состояния drawer. |
Все XML-атрибуты
box.expandRatio - colspan - css - expandOnHover - id - rowspan - stylename