EditorScreenFacet

EditorScreenFacet – это, по сути, ScreenFacet с расширенным набором опций для открытия экранов редактирования сущностей.

XML-имя компонента: editorScreen.

Атрибуты

В дополнение к атрибутам ScreenFacet, EditorScreenFacet имеет следующие собственные атрибуты:

  • addFirst - определяет, будет ли новый элемент добавлен в начало или конец коллекции. Это влияет только на автономные контейнеры; во вложенных контейнерах новые элементы всегда добавляются в конец.

  • container - задает CollectionContainer. Контейнер обновляется после коммита экрана. Если контейнер вложенный, фреймворк автоматически инициализирует ссылку на родительский объект и настраивает контекст данных для редактирования композиций.

  • editMode - устанавливает режим редактирования экрана, соответствует перечислению EditMode:

    • CREATE - для создания нового экземпляра сущности;

    • EDIT - для редактирования существующего.

  • entityClass - полное имя класса сущности.

  • field - задает id компонента EntityPicker. Если поле задано, фреймворк устанавливает в него закоммиченную сущность после успешного коммита редактора.

  • listComponent - задает id компонента-списка. Он используется для получения контейнера, если тот не задан. Обычно это компонент Table или DataGrid, отображающий список сущностей.

Пример использования:

<window xmlns="http://jmix.io/schema/ui/window"
        caption="msg://editorScreenFacetScreen.caption">
    <data readOnly="true">
        <collection id="departmentsDc"
                    class="ui.ex1.entity.Department">
            <fetchPlan extends="_base">
                <property name="employees" fetchPlan="_base"/>
            </fetchPlan>
            <loader id="departmentsDl">
                <query>
                    <![CDATA[select e from uiex1_Department e]]>
                </query>
            </loader>
        </collection>
    </data>
    <facets>
        <editorScreen id="editorScreen"
                      editMode="CREATE"
                      entityClass="ui.ex1.entity.Customer"
                      onButton="openEditBtn"
                      addFirst="true">
        </editorScreen>
        <dataLoadCoordinator auto="true"/>
        <screenSettings id="settingsFacet" auto="true"/>
    </facets>
    <layout>
        <button id="openEditBtn"
                caption="Open an editor screen"
                width="100%"/>
    </layout>
</window>

События и слушатели

Чтобы сгенерировать заглушку слушателя в Jmix Studio, выберите фасет в XML-дескрипторе экрана или на панели иерархии Jmix UI и используйте вкладку Handlers на панели инспектора Jmix UI.

В качестве альтернативы вы можете воспользоваться кнопкой Generate Handler на верхней панели контроллера экрана.

AfterCloseEvent

AfterCloseEvent отправляется после закрытия настраиваемого фасетом экрана. Подробнее см. в AfterCloseEvent.

AfterShowEvent

AfterShowEvent отправляется после отображения настраиваемого фасетом экрана. Подробнее см. в AfterShowEvent.

EntityProvider

Метод делегата EntityProvider позволяет передать экземпляр сущности на открывающийся экран:

@Autowired
private DataManager dataManager;

@Install(to = "editorScreen", subject = "entityProvider")
private User editorScreenEntityProvider() {
    User user = dataManager.create(User.class);
    user.setFirstName("John");
    user.setLastName("Doe");

    return user;
}

Чтобы создать слушателя события программно, используйте метод setEntityProvider().

Initializer

Слушатель Initializer принимает новый экземпляр сущности и может инициализировать его перед отображением на экране редактора. Подробнее см. в Initializer.

Чтобы создать слушателя события программно, используйте метод setInitializer().

OptionsProvider

ParentDataContextProvider

Метод делегата ParentDataContextProvider позволяет передать родительский DataContext в открывающийся экран:

@Autowired
private DataContext dataContext;

@Install(to = "editorScreen", subject = "parentDataContextProvider")
private DataContext editorScreenParentDataContextProvider() {
    return dataContext;
}

Чтобы задать провайдер родительского DataContext программно, используйте метод setParentDataContextProvider().

ScreenConfigurer

Transformation

Этот слушатель вызывается после выбора и валидации сущности в экране редактора. Подробнее см. в Transformation.

Все XML-атрибуты

Вы можете просматривать и редактировать применимые к фасету атрибуты с помощью панели инспектора Jmix UI в дизайнере экранов Studio.