Search in sources :

Example 11 with Action

use of io.jmix.ui.action.Action in project jmix by jmix-framework.

the class AttributeComponentProvider method addRow.

protected void addRow(Object value, ComponentContainer parent, boolean isReadOnly) {
    BoxLayout row = uiComponents.create(HBoxLayout.class);
    row.setSpacing(true);
    row.setWidthFull();
    TextField valueField = uiComponents.create(TextField.class);
    valueField.setValue(value);
    valueField.setEditable(!isReadOnly);
    row.add(valueField);
    row.expand(valueField);
    Button btnRemove = uiComponents.create(Button.class);
    btnRemove.setIconFromSet(JmixIcon.TIMES);
    btnRemove.setDescription(messages.getMessage(getClass(), "editAttribute.array.btnRemove"));
    Action removeRowAction = new BaseAction("removeRow").withCaption("").withHandler(actionPerformedEvent -> parent.remove(row));
    removeRowAction.setEnabled(!isReadOnly);
    btnRemove.setAction(removeRowAction);
    row.add(btnRemove);
    parent.add(row);
}
Also used : AbstractAction(io.jmix.ui.action.AbstractAction) Action(io.jmix.ui.action.Action) BaseAction(io.jmix.ui.action.BaseAction) BaseAction(io.jmix.ui.action.BaseAction)

Example 12 with Action

use of io.jmix.ui.action.Action in project jmix by jmix-framework.

the class ActionsImpl method createAction.

protected Action createAction(Class<? extends Action> actionClass, String id) {
    Constructor<? extends Action> constructor;
    try {
        constructor = actionClass.getConstructor(String.class);
    } catch (NoSuchMethodException e) {
        throw new RuntimeException(String.format("Unable to get constructor for '%s' action", actionClass), e);
    }
    try {
        Action instance = constructor.newInstance(id);
        autowireContext(instance);
        return instance;
    } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) {
        throw new RuntimeException(String.format("Error creating the '%s' action instance", actionClass), e);
    }
}
Also used : Action(io.jmix.ui.action.Action) InvocationTargetException(java.lang.reflect.InvocationTargetException)

Example 13 with Action

use of io.jmix.ui.action.Action in project jmix by jmix-framework.

the class ActionsImpl method createAction.

protected Action createAction(Class<? extends Action> actionClass) {
    Constructor<? extends Action> constructor;
    try {
        constructor = actionClass.getConstructor();
    } catch (NoSuchMethodException e) {
        throw new RuntimeException(String.format("Unable to get constructor for '%s' action", actionClass), e);
    }
    try {
        Action instance = constructor.newInstance();
        autowireContext(instance);
        return instance;
    } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) {
        throw new RuntimeException(String.format("Error creating the '%s' action instance", actionClass), e);
    }
}
Also used : Action(io.jmix.ui.action.Action) InvocationTargetException(java.lang.reflect.InvocationTargetException)

Example 14 with Action

use of io.jmix.ui.action.Action in project jmix by jmix-framework.

the class RoleAssignmentScreen method initScreenActions.

protected void initScreenActions() {
    Window window = getWindow();
    Messages messages = getApplicationContext().getBean(Messages.class);
    Icons icons = getApplicationContext().getBean(Icons.class);
    String commitShortcut = getApplicationContext().getBean(UiScreenProperties.class).getCommitShortcut();
    Action commitAndCloseAction = new BaseAction(Window.COMMIT_ACTION_ID).withCaption(messages.getMessage("actions.Ok")).withIcon(icons.get(JmixIcon.EDITOR_OK)).withPrimary(true).withShortcut(commitShortcut).withHandler(actionPerformedEvent -> {
        // noinspection ConstantConditions
        getScreenData().getDataContext().commit();
        close(new StandardCloseAction(Window.COMMIT_ACTION_ID));
    });
    window.addAction(commitAndCloseAction);
    Action closeAction = new BaseAction(Window.CLOSE_ACTION_ID).withIcon(icons.get(JmixIcon.EDITOR_CANCEL)).withCaption(messages.getMessage("actions.Cancel")).withHandler(actionPerformedEvent -> {
        if (dataContext.hasChanges()) {
            screenValidation.showUnsavedChangesDialog(this, WINDOW_CLOSE_ACTION).onDiscard(() -> close(WINDOW_CLOSE_ACTION));
        } else {
            close(WINDOW_CLOSE_ACTION);
        }
    });
    window.addAction(closeAction);
}
Also used : Window(io.jmix.ui.component.Window) Action(io.jmix.ui.action.Action) BaseAction(io.jmix.ui.action.BaseAction) Messages(io.jmix.core.Messages) UiScreenProperties(io.jmix.ui.UiScreenProperties) Icons(io.jmix.ui.icon.Icons) BaseAction(io.jmix.ui.action.BaseAction)

Example 15 with Action

use of io.jmix.ui.action.Action in project jmix by jmix-framework.

the class ComponentLoaderHelper method loadLegacyListAction.

public static Optional<Action> loadLegacyListAction(ComponentLoader.Context context, ActionsHolder actionsHolder, Element element, @Nullable String caption, @Nullable String description, @Nullable String iconPath, @Nullable String shortcut) {
    Boolean isInvokeMethod = Boolean.parseBoolean(element.attributeValue("invoke"));
    if (isLegacyFrame(context) && !isInvokeMethod) {
        String id = element.attributeValue("id");
        // Try to create a standard list action
        for (ListActionType type : ListActionType.values()) {
            if (type.getId().equals(id)) {
                Action instance = type.createAction((ListComponent) actionsHolder);
                String enable = element.attributeValue("enable");
                if (StringUtils.isNotEmpty(enable)) {
                    instance.setEnabled(Boolean.parseBoolean(enable));
                }
                String visible = element.attributeValue("visible");
                if (StringUtils.isNotEmpty(visible)) {
                    instance.setVisible(Boolean.parseBoolean(visible));
                }
                if (StringUtils.isNotBlank(caption)) {
                    instance.setCaption(caption);
                }
                if (StringUtils.isNotBlank(description)) {
                    instance.setDescription(description);
                }
                if (StringUtils.isNotBlank(iconPath)) {
                    instance.setIcon(iconPath);
                }
                if (StringUtils.isNotBlank(shortcut)) {
                    instance.setShortcut(shortcut);
                }
                loadActionOpenType(instance, element, context);
                loadActionConstraint(instance, element);
                return Optional.of(instance);
            }
        }
    }
    return Optional.empty();
}
Also used : DeclarativeTrackingAction(com.haulmont.cuba.gui.xml.DeclarativeTrackingAction) Action(io.jmix.ui.action.Action) BaseAction(io.jmix.ui.action.BaseAction) DeclarativeAction(com.haulmont.cuba.gui.xml.DeclarativeAction) ListActionType(com.haulmont.cuba.gui.components.actions.ListActionType)

Aggregations

Action (io.jmix.ui.action.Action)82 BaseAction (io.jmix.ui.action.BaseAction)47 DialogAction (io.jmix.ui.action.DialogAction)11 ItemTrackingAction (io.jmix.ui.action.ItemTrackingAction)11 Component (io.jmix.ui.component.Component)9 Autowired (org.springframework.beans.factory.annotation.Autowired)9 GuiDevelopmentException (io.jmix.ui.GuiDevelopmentException)8 Icons (io.jmix.ui.icon.Icons)8 UiScreenProperties (io.jmix.ui.UiScreenProperties)7 io.jmix.ui.component (io.jmix.ui.component)7 io.jmix.ui.screen (io.jmix.ui.screen)7 Nullable (javax.annotation.Nullable)7 Dialogs (io.jmix.ui.Dialogs)6 Notifications (io.jmix.ui.Notifications)6 AbstractAction (io.jmix.ui.action.AbstractAction)6 Window (io.jmix.ui.component.Window)6 JmixButton (io.jmix.ui.widget.JmixButton)6 JmixIcon (io.jmix.ui.icon.JmixIcon)5 Named (javax.inject.Named)5 OpenType (com.haulmont.cuba.gui.WindowManager.OpenType)4