Как реализован entityLookup в ParameterEditor?

Jmix version: 1.5.3
Jmix Studio plugin version: 2.0.3-232
IntelliJ version: IntelliJ IDEA 2023.2.2 (Ultimate Edition)

Добрый день!
Я хотел переопределить класс ParameterEditor, чтобы в отчете при создании параметра типа Entity при выборе полей через Browse экран передавалось значения в сам Browse экран, но не вижу реализацию entityLookup в контроллере.

protected void initDefaultValueField() {
        defaultValueLabel.setVisible(false);
        defaultValueBox.removeAll();
        ReportInputParameter parameter = getEditedEntity();
        if (canHaveDefaultValue()) {
            Field<Object> field;
            if (ParameterType.ENTITY.equals(parameter.getType()) && Boolean.TRUE.equals(parameter.getLookup())) {
                ReportInputParameter entityParam = metadata.create(ReportInputParameter.class);
                entityParam.setReport(parameter.getReport());
                entityParam.setType(parameter.getType());
                entityParam.setEntityMetaClass(parameter.getEntityMetaClass());
                entityParam.setScreen(parameter.getScreen());
                entityParam.setAlias(parameter.getAlias());
                entityParam.setRequired(parameter.getRequired());
                field = parameterFieldCreator.createField(entityParam);
            } else {
                field = parameterFieldCreator.createField(parameter);
            }
            field.addValueChangeListener(e -> {
                if (e.getValue() != null) {
                    parameter.setDefaultValue(objectToStringConverter.convertToString(e.getValue().getClass(), e.getValue()));
                } else {
                    parameter.setDefaultValue(null);
                }
            });

            if (parameter.getParameterClass() != null) {
                field.setValue(objectToStringConverter.convertFromString(parameter.getParameterClass(), parameter.getDefaultValue()));
            }
            field.setRequired(false);

            defaultValueBox.add(field);
            defaultValueLabel.setVisible(true);
        }
        defaultValueBox.setEnabled(secureOperations.isEntityUpdatePermitted(metadata.getClass(ReportInputParameter.class), policyStore));
    }

Тут я вижу как работают с label, но реализации самого lookup нет. Можете подсказать?

Вот создание поля для сущности.

Если перейти в parameterFieldCreator.createField
Судя по коду там используется SingleFieldCreator из мапы fieldCreationMapping.
в SingleFieldCreator и создается EntityLookupAction
image

Не думаю что стоит все это переопределять.

Мб из field просто получить этот action и добавить ему screenConfigurer

1 симпатия

Спасибо!
Буду двигаться в описанную вами сторону