MainTabSheet Component
Контейнер, предназначенный для отображения открытых экранов на вкладках. Одновременно видно только содержимое выбранной вкладки.
XML-элемент |
|
|---|---|
Java-класс |
|
Атрибуты |
id - alignSelf - classNames - colspan - css - height - width - maxHeight - maxWidth - minHeight - minWidth - visible - themeNames - tabsDraggable |
Обработчики |
AttachEvent - DetachEvent - SelectedChangeEvent - TabsCollectionChangeEvent |
Элементы |
Основы
Для создания компонента используйте XML-элемент mainTabSheet внутри элемента workArea. И workArea, и mainTabSheet доступны только в дескрипторе главного экрана.
Следующий пример демонстрирует создание базового mainTabSheet:
<mainTabSheet id="mainTabSheet"
classNames="jmix-main-tabsheet"
tabsDraggable="true"
width="100%" height="100%">
<actions>
<action id="closeThisTabAction" type="tabmod_closeThisTab"/>
<action id="closeOthersTabsAction" type="tabmod_closeOtherTabs"/>
<action id="closeAllTabsAction" type="tabmod_closeAllTabs"/>
</actions>
</mainTabSheet>
Действия
Компонент mainTabSheet реализует интерфейс HasActions и может содержать как стандартные, так и пользовательские действия. Действия вызываются из контекстного меню, которое появляется по щелчку правой кнопкой мыши на области вкладок.
Стандартными действиями являются следующие:
Drag and drop
mainTabSheet поддерживает перетаскивание вкладок. Эта возможность может использоваться, например, для изменения порядка вкладок.
Изменяя значение атрибута tabsDraggable, вы можете разрешить или запретить пользователю перетаскивать вкладки. Значение по умолчанию — false.
События и обработчики
SelectedChangeEvent
При каждом переключении пользователем между вкладками генерируется событие io.jmix.tabbedmode.component.workarea.TabbedViewsContainer.SelectedChangeEvent. Создайте обработчик события для выполнения пользовательского кода в ответ на переключение вкладки.
Следующий код будет отправлять уведомление при каждом переключении вкладки:
@Autowired
private Notifications notifications;
@Subscribe("mainTabSheet")
public void onMainTabSheetSelectedChange(final SelectedChangeEvent<MainTabSheet> event) {
notifications.create(event.getSelectedTab() + " is now selected")
.show();
}
| Чтобы сгенерировать заготовки методов-обработчиков в Studio, используйте кнопку Generate Handler на верхней панели контроллера экрана. Либо выберите компонент в дескрипторе экрана и используйте вкладку Handlers панели Component Inspector. |
TabsCollectionChangeEvent
При открытии или закрытии пользователем экранов, что приводит к созданию новой вкладки или удалению существующей, генерируется событие io.jmix.tabbedmode.component.workarea.TabbedViewsContainer.TabsCollectionChangeEvent. Создайте обработчик события для выполнения пользовательского кода в ответ на изменение набора вкладок.
Следующий код будет отправлять уведомление при каждом изменении набора вкладок:
@Autowired
private Notifications notifications;
@Subscribe("mainTabSheet")
public void onMainTabSheetTabsCollectionChange(final TabsCollectionChangeEvent<MainTabSheet> event) {
notifications.create("Tabs collection changed", "Change type: " + event.getChangeType())
.show();
}
| Чтобы сгенерировать заготовки методов-обработчиков в Studio, используйте кнопку Generate Handler на верхней панели контроллера экрана. Либо выберите компонент в дескрипторе экрана и используйте вкладку Handlers панели Component Inspector. |
Варианты темы
centered
Располагает вкладки по центру главного экрана вместо стандартного положения по левому краю:
small
Уменьшает размер вкладок:

minimal
Упрощает визуальный стиль, оставляя только надписи вкладок без дополнительных визуальных элементов:

hide-scroll-buttons
Скрывает кнопки прокрутки, которые помогают перемещаться между не помещающимися вкладками:

bordered
Добавляет границу вокруг самих вкладок, а также вокруг области содержимого.

