Добавление нового Order из окна редактирования Customer

Рассматривая пример из “Руководства по разработке приложений” про Заказы/Orders и Клиентов/Customers, хочу добавить возможность создавать новый Заказ из окна редактирования Заказчика. Добавил к ordersDcTable действия (create/remove/edit), панель с кнопками, сами кнопки. При нажатии на кнопку “Create” открывается форма для создания нового Заказа. Всё работает как задумано, но можно ли как то в эту форму заполнить по умолчанию значение редактируемого Заказчика, чтобы не выбирать его каждый раз снова?
2.5.4. Экран редактирования Покупателя со списком Заказов

Мой вариант
2019-07-08%2015%2023%2015

Конечно, можно.
Нужно самостоятельно открывать экран редактирования для создания нового заказа с использованием инициализатора.
Т.к. кода дескриптора и контроллера экрана вы тут не привели, то
по нажатию кнопки “Create order” выполнить примерно следующее:

private void createNewOrder() {
    screenBuilders.editor(ordersTable)
            .newEntity()
            .withInitializer(order-> {         
                order.setCustomer(customerDc.getItem()); //Инициализатор новой записи, создаваемой на экране. Заполняете нужный атрибут (Customer) Исходя из того, какой сейчас открыт на экране.
            })
            .withScreenClass(OrderEdit.class)    
            .withLaunchMode(OpenMode.DIALOG)      
            .build()
            .show();
}

Атрибуты я попытался угадать исходя из приведенного скрина, но, думаю, смысл понятен.
Подробнее про открытие экранов с передачей параметров есть в документации.

2 симпатии

Андрей, спасибо!
Не сразу, но “завелось”. Для того, что бы это заработало надо удалить свойство “action” у кнопки “Create”, которое было сгенерировано дизайнером студии. Иначе никакой код не работает, он просто игнорируется.

на самом деле достаточным было бы подписаться на экшен.

Какой? Как называется?

create
Ну типа того:

    @Subscribe("countriesTable.create")
    private void onCountriesTableCreate(Action.ActionPerformedEvent event) {   
    }
1 симпатия

Да, спасибо.С подпиской красивее получается.