Стандартные действия

Фреймворк Jmix предоставляет стандартные действия, предназначенные для решения типовых задач, таких как вызов экрана деталей сущности, выбранной в dataGrid. Стандартные действия объявляются в XML-дескрипторе экрана путем указания их типа в атрибуте type элемента action.

Каждое стандартное действие реализуется классом, аннотированным @ActionType("<some_type>"). Класс задает свойства и поведение действия по умолчанию.

Для переопределения значений свойств по умолчанию можно задать атрибуты элемента action, такие как text, icon, shortcutCombination и др., например:

<action id="create" type="list_create"
        actionVariant="SUCCESS" icon="PLUS_CIRCLE"/>

Существует несколько категорий стандартных действий:

Дополнительные свойства

Стандартные действия обычно имеют дополнительные свойства, которые могут быть установлены в XML или используя сеттеры в Java. В XML дополнительные свойства конфигурируются во вложенном элементе <properties>, где каждый элемент <property> соответствует сеттеру, имеющемуся в классе данного действия:

<action id="edit" type="list_edit">
    <properties>
        <property name="viewId" value="CustomDepartmentDetailView"/>
    </properties>
</action>

То же самое можно сделать в контроллере на Java:

@ViewComponent("myDepartmentsTable.edit")
private EditAction<Department> myDepartmentsTableEdit;

@Subscribe
public void onInit(final InitEvent event) {
    myDepartmentsTableEdit.setViewId("CustomDepartmentDetailView");
}

Установка обработчиков

Если сеттер принимает функциональный интерфейс (обработчик), то установить этот обработчик в контроллере можно путем создания аннотированного метода. Например, CreateAction имеет метод setAfterSaveHandler(Consumer), который используется для установки обработчика, вызываемого после того как создаваемая сущность сохранена. Тогда обработчик можно задать следующим образом:

@Install(to = "departmentsTable.create", subject = "afterSaveHandler")
private void departmentsTableCreateAfterSaveHandler(final Department department) {
    notifications.create("Created " + department).show();
}

Чтобы сгенерировать заглушку обработчика в Jmix Studio, используйте вкладку Handlers панели инспектора Jmix UI, или команду Generate Handler, доступную на верхней панели контроллера экрана и через меню CodeGenerate (Alt+Insert / Cmd+N).