Изменение поведения экрана DetailListView

Здравствуйте!

Создал экран DetailListView. Мне нужно, чтобы он работал следующим образом: при открытии экрана DetailView не должен сразу открываться вместе с ListView, а должен всплывать справа только при нажатии на запись в dataGrid. Как можно это реализовать? Искал в документации, но не нашел, как можно это сделать.

Заранее спасибо!

Здравствуйте,

Описанное вами поведение похоже на экран MasterView, его можно сгенерировать для сущности в Jmix Studio:

Jmix Studio:
image

Пример для сущности User:

Режим просмотра:
image

Режим редактирования:
image

С Уважением,
Никита

Добрый день! Да, я собственно его так и создал. Но проблема в том, что при нажатии на пункт меню “Пользователи”, и таблица с пользователями, и карточка отдельного пользователя открывается сразу же. Мне же нужно сделать так, чтобы карточка открывалась только тогда, когда я нажал на конкретного пользователя в dataGrid. Если нажал еще раз на него, карточка скрылась. Такое поведение можно реализовать?

Да, вы можете это сделать, для этого вам необходимо немного изменить код в MasterView, добавить новый метод:

    @Subscribe
    public void onReady(final ReadyEvent event) {
        usersDataGrid.addSelectionListener(item -> {
            Optional<User> firstSelectedItem = item.getFirstSelectedItem();
            updateControls(firstSelectedItem.isPresent());
        });
    }

А также изменить следующий метод, чтобы он не блокировал экран, а скрывал:

    private void updateControls(boolean editing) {
        form.getChildren().forEach(component -> {
            if (component instanceof HasValueAndElement<?, ?> field) {
                field.setReadOnly(!editing);
            }
        });
        detailsLayout.setVisible(editing);
        detailActions.setVisible(editing);
    }

С Уважением,
Никита