Как получить доступ к вложенному экрану и всем его компонентам?

Добрый день!
У меня есть экран Screen1, у него есть чекбокс, по нажатию которого открывается экран Screen2 (внутри него есть 4 чекбокса). Я пытаюсь в Screen1 реализовать подписку на изменение значения компонента SourceCodeEditor, код выглядит следующим образом:

public class Screen1 extends Screen {
    @Autowired
    private SourceCodeEditor Field;

    @Subscribe("Field")
    public void FieldValueChange(HasValue.ValueChangeEvent<String> event) {
        Screen screen2 = UiControllerUtils.getScreen(Screen2.class);//получение вложенного экрана
        boolean disableValue = StringUtils.isBlank(Field.getValue());
    }
}

в методе я попытался получить доступ к вложенному экрану (не уверен, что он так называется), но это не работает. Как это сделать правильно?

Добрый день!

Не могли бы Вы предоставить чуть больше контекста?

Каким образом открываются Screen2? Открыт ли он в диалоге?

В чем заключается конечная цель подписки на изменение значения в другом экране?
В вашем случае, возможно, правильнее будет получить конечные значения компонентов на Screen2 (4 чекбоксов), а затем, с их помощью конфигурировать SourceCodeEditor?

@d.kremnev изменил подход, поэтому предыдущий вопрос не актуален) Но появился другой вопрос: как можно настроить поведение в этом окне, чтобы, если все чекбоксы НЕ выбраны, кнопка “Сформировать” становится неактивной? А если выбран хоть один, то становится активной?
image
Я попробовал вот так, но не сработало:

    @Subscribe
    public void onAfterInit(AfterInitEvent event) {
        if (!constraintCheckBox.isChecked() && !indexCheckBox.isChecked() && !triggerCheckBox.isChecked() && !deleteCheckBox.isChecked()) {
            okButton.setEnabled(false);
        }
    }

Если Вы хотите отслеживать состояние сразу нескольких чекбокссов, то, вероятнее всего, Вам больше подойдёт компонент CheckBoxGroup.

Вот пример его использования: click!

Вы можете определить для него ValueChangeEventListener, который будет определять состояние кнопки okButton.

1 симпатия

Спасибо!