Собственные типы действий

В проекте можно создать собственные типы действий или переопределить существующие стандартные типы.

Предположим, что вы хотите создать действие, которое бы показывало имя экземпляра текущей сущности, выбранной в dataGrid, и использовать это действие в различных экранах, указывая только его тип. Чтобы это сделать, необходимо выполнить следующие шаги:

  1. Создайте для действия отдельный класс с аннотацией @ActionType, в которой укажите желаемое имя типа:

    package com.company.onboarding.view.actions;
    
    import com.vaadin.flow.component.Component;
    import io.jmix.core.MetadataTools;
    import io.jmix.flowui.Notifications;
    import io.jmix.flowui.action.ActionType;
    import io.jmix.flowui.action.list.ItemTrackingAction;
    import org.springframework.beans.factory.annotation.Autowired;
    
    @ActionType("showSelected")
    public class ShowSelectedAction<E> extends ItemTrackingAction<E> {
    
        @Autowired
        private MetadataTools metadataTools;
    
        @Autowired
        private Notifications notifications;
    
        public ShowSelectedAction(String id) {
            super(id);
            setText("Show Selected");
        }
    
        @Override
        public void actionPerform(Component component) {
            if (getTarget() != null) {
                E selected = getTarget().getSingleSelectedItem();
                if (selected != null) {
                    notifications.create(metadataTools.getInstanceName(selected)).show();
                }
            }
        }
    }
  2. Теперь вы можете использовать действие в дескрипторах экрана, просто указывая его тип:

    <action id="showSelected" type="showSelected"/>

Если вы хотите переопределить существующий тип действия, просто зарегистрируйте свое новое действие с таким же именем типа в аннотации @ActionType.