ScreenSettingsFacet
Фасет ScreenSettingsFacet
сохраняет настройки, установленные пользователем для визуальных компонентов.
Component’s XML-name: screenSettings
.
Основы
ScreenSettingsFacet
определяется в элементе facets
XML-дескриптора экрана.
Чтобы включить сохранение настроек экрана для всех его компонентов, установите для атрибута auto
значение true
:
<facets>
<screenSettings auto="true"/>
</facets>
Вы можете включить сохранение настроек экрана только для конкретных компонентов. Для этого, нужные компоненты должны быть объявлены явно:
<facets>
<screenSettings id="settingsFacet">
<components>
<component id="carsTable"/>
</components>
</screenSettings>
</facets>
<layout expand="carsTable">
<groupTable id="carsTable"
width="100%"
dataContainer="carsDc">
<!-- ... -->
</groupTable>
</layout>
При необходимости, вы также можете отключить сохранение настроек экрана для конкретного компонента. Для этого, установите для атрибута enable
значение false
:
<facets>
<screenSettings id="settingsFacet" auto="true">
<components>
<component id="carsTable" enable="false"/>
</components>
</screenSettings>
</facets>
<layout expand="carsTable">
<groupTable id="carsTable"
width="100%"
dataContainer="carsDc">
<!-- ... -->
</groupTable>
</layout>
События и слушатели
Чтобы сгенерировать заглушку слушателя в Jmix Studio, выберите фасет в XML-дескрипторе экрана или на панели иерархии Jmix UI и используйте вкладку Handlers на панели инспектора Jmix UI. В качестве альтернативы вы можете воспользоваться кнопкой Generate Handler на верхней панели контроллера экрана. |
ScreenSettingsFacet
имеет три делегата для перехвата жизненного цикла настроек экрана.
ApplySettingsDelegate
Данный слушатель позволяет сохранять состояния компонентов по срабатыванию AfterShowEvent.
@Autowired
private ScreenSettingsFacet settingsFacet;
@Autowired
private GroupTable<Car> carsTable;
@Install(to = "settingsFacet", subject = "applySettingsDelegate")
private void settingsFacetApplySettingsDelegate(ScreenSettingsFacet.SettingsContext settingsContext) {
settingsContext.getScreenSettings()
.getBoolean("carsTable", "visibility")
.ifPresent(visibility -> carsTable.setVisible(visibility));
settingsFacet.applySettings();
}
Чтобы создать слушателя события программно, используйте метод setApplySettingsDelegate()
.
ApplyDataLoadingSettingsDelegate
Данный слушатель позволяет сохранять состояния компонентов по срабатыванию BeforeShowEvent.
Чтобы создать слушателя события программно, используйте метод setApplyDataLoadingSettingsDelegate()
.
SaveSettingsDelegate
Данный слушатель позволяет сохранять состояния компонентов по срабатыванию AfterDetachEvent.
Чтобы создать слушателя события программно, используйте метод setSaveSettingsDelegate()
.