Checkbox renderer

Доброго дня.
Jmix 2.5.0
Подскажите, пожалуйста, базовый пример реализации компонент-рендерера, который можно было бы декларативно навесить (переиспользовать для разных колонок и сущностей) на булевое property колонки datagrid для отображения Checkbox.

Добрый день,

Вы можете создать CheckboxRenderer:

public class CheckboxRenderer extends ComponentRenderer<Checkbox, Object> {

    public CheckboxRenderer(ValueProvider<Object, Boolean> valueProvider) {
        super(item -> new Checkbox(valueProvider.apply(item)));
    }
}

и CheckboxRendererProvider, который обязательно реализовывает io.jmix.flowui.xml.layout.loader.component.datagrid.RendererProvider:

@Component("demo_CheckboxRendererProvider")
public class CheckboxRendererProvider implements RendererProvider<CheckboxRenderer> {

    public static final String NAME = "checkboxRenderer";

    @Override
    public boolean supports(String rendererName) {
        return NAME.equals(rendererName);
    }

    @Override
    public CheckboxRenderer createRenderer(Element element,
                                           MetaPropertyPath metaPropertyPath,
                                           ComponentLoader.Context context) {
        return new CheckboxRenderer((ValueProvider<Object, Boolean>) item ->
                EntityValues.getValueEx(item, metaPropertyPath));
    }
}

Тогда в XML можно будет задавать кастомный элемент рендерера:

<column property="active">
    <checkboxRenderer/>
</column>

Screenshot 2025-03-17 at 12.20.40

Проблема только в том, что научить XML подсвечивать и предлагать Ваш рендерер проблематично.

Глеб

1 симпатия