Search in sources :

Example 6 with Action

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

the class AbstractComponentLoader method loadDeclarativeActionByType.

@Nullable
protected Action loadDeclarativeActionByType(ActionsHolder actionsHolder, Element element) {
    String id = loadActionId(element);
    String actionTypeId = element.attributeValue("type");
    if (StringUtils.isNotEmpty(actionTypeId)) {
        Actions actions = applicationContext.getBean(Actions.class);
        Action instance = actions.create(actionTypeId, id);
        initAction(element, instance);
        loadActionConstraint(instance, element);
        return instance;
    }
    return null;
}
Also used : Action(io.jmix.ui.action.Action) ItemTrackingAction(io.jmix.ui.action.ItemTrackingAction) BaseAction(io.jmix.ui.action.BaseAction) Actions(io.jmix.ui.Actions) Nullable(javax.annotation.Nullable)

Example 7 with Action

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

the class AbstractLookup method selectItemsOnClick.

protected void selectItemsOnClick(@SuppressWarnings("unused") Collection collection) {
    Action selectAction = getActionNN(LOOKUP_SELECT_ACTION_ID);
    selectAction.actionPerform(getLookupComponent());
}
Also used : Action(io.jmix.ui.action.Action) BaseAction(io.jmix.ui.action.BaseAction)

Example 8 with Action

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

the class AbstractLookup method initLookupLayout.

@Override
public void initLookupLayout() {
    Action selectAction = getAction(LOOKUP_SELECT_ACTION_ID);
    if (selectAction != null && selectAction.getOwner() == null) {
        Fragments fragments = UiControllerUtils.getScreenContext(this).getFragments();
        ScreenFragment lookupWindowActions = fragments.create(this, "lookupWindowActions");
        lookupWindowActions.getFragment().setId("lookupWindowActions");
        lookupWindowActions.getFragment().setVisible(false);
        getFrame().add(lookupWindowActions.getFragment());
    }
    Element element = ((Component.HasXmlDescriptor) getFrame()).getXmlDescriptor();
    if (element != null) {
        String lookupComponent = element.attributeValue("lookupComponent");
        if (StringUtils.isNotEmpty(lookupComponent)) {
            Component component = getFrame().getComponent(lookupComponent);
            setLookupComponent(component);
        }
    }
    Component lookupComponent = getLookupComponent();
    if (lookupComponent instanceof LookupComponent.LookupSelectionChangeNotifier) {
        LookupComponent.LookupSelectionChangeNotifier selectionNotifier = (LookupComponent.LookupSelectionChangeNotifier) lookupComponent;
        if (selectAction != null) {
            // noinspection unchecked
            selectionNotifier.addLookupValueChangeListener(valueChangeEvent -> selectAction.setEnabled(!selectionNotifier.getLookupSelectedItems().isEmpty()));
            selectAction.setEnabled(!selectionNotifier.getLookupSelectedItems().isEmpty());
        }
    }
}
Also used : Action(io.jmix.ui.action.Action) BaseAction(io.jmix.ui.action.BaseAction) ScreenFragment(io.jmix.ui.screen.ScreenFragment) Element(org.dom4j.Element) Fragments(io.jmix.ui.Fragments) Component(io.jmix.ui.component.Component)

Example 9 with Action

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

the class AbstractWindow method initEnableEditingActionStub.

protected void initEnableEditingActionStub() {
    String enableEditingActionId = "enableEditing";
    Action enableEditingAction = getAction(enableEditingActionId);
    if (enableEditingAction == null) {
        enableEditingAction = new BaseAction(enableEditingActionId).withCaption(messages.getMessage("actions.EnableEditing")).withHandler(actionPerformedEvent -> {
            // 'enableEditing' action stub, in order to prevent breaking changes.
            throw new IllegalStateException("Only io.jmix.ui.screen.ReadOnlyAwareScreen " + "inheritors must support the 'enableEditing' action");
        });
        enableEditingAction.setVisible(false);
        addAction(enableEditingAction);
    }
}
Also used : WindowManager(com.haulmont.cuba.gui.WindowManager) Autowired(org.springframework.beans.factory.annotation.Autowired) Frame(io.jmix.ui.component.Frame) HashMap(java.util.HashMap) ScreenSettings(com.haulmont.cuba.gui.screen.ScreenSettings) Component(io.jmix.ui.component.Component) Icons(io.jmix.ui.icon.Icons) Map(java.util.Map) Action(io.jmix.ui.action.Action) BaseAction(io.jmix.ui.action.BaseAction) DialogOptions(com.haulmont.cuba.gui.DialogOptions) DsContext(com.haulmont.cuba.gui.data.DsContext) Window(io.jmix.ui.component.Window) Nullable(javax.annotation.Nullable) LegacyFrame(com.haulmont.cuba.gui.screen.compatibility.LegacyFrame) Internal(io.jmix.core.annotation.Internal) Order(org.springframework.core.annotation.Order) Subscription(io.jmix.core.common.event.Subscription) Collection(java.util.Collection) JmixOrder(io.jmix.core.JmixOrder) Messages(com.haulmont.cuba.core.global.Messages) UnknownOperationResult(io.jmix.ui.util.UnknownOperationResult) Consumer(java.util.function.Consumer) Settings(com.haulmont.cuba.settings.Settings) List(java.util.List) io.jmix.ui.screen(io.jmix.ui.screen) Stream(java.util.stream.Stream) WindowInfo(io.jmix.ui.WindowInfo) CubaLegacySettings(com.haulmont.cuba.settings.CubaLegacySettings) Element(org.dom4j.Element) MessageTools(io.jmix.core.MessageTools) OperationResult(io.jmix.ui.util.OperationResult) UiScreenProperties(io.jmix.ui.UiScreenProperties) io.jmix.ui.component(io.jmix.ui.component) Action(io.jmix.ui.action.Action) BaseAction(io.jmix.ui.action.BaseAction) BaseAction(io.jmix.ui.action.BaseAction)

Example 10 with Action

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

the class AbstractEditor method initCommitActions.

protected void initCommitActions(@SuppressWarnings("unused") InitEvent event) {
    Component commitAndCloseButton = ComponentsHelper.findComponent(getFrame(), WINDOW_COMMIT_AND_CLOSE);
    UiScreenProperties screenProperties = getApplicationContext().getBean(UiScreenProperties.class);
    boolean commitAndCloseButtonExists = false;
    String commitShortcut = screenProperties.getCommitShortcut();
    if (commitAndCloseButton != null) {
        commitAndCloseButtonExists = true;
        getFrame().addAction(new BaseAction(WINDOW_COMMIT_AND_CLOSE).withCaption(messages.getMessage("actions.SaveClose")).withPrimary(true).withShortcut(commitShortcut).withHandler(e -> commitAndClose()));
    }
    boolean finalCommitAndCloseButtonExists = commitAndCloseButtonExists;
    Action commitAction = new BaseAction(WINDOW_COMMIT).withCaption(messages.getMessage(commitAndCloseButtonExists ? "actions.Save" : "actions.Ok")).withPrimary(!commitAndCloseButtonExists).withShortcut(commitAndCloseButtonExists ? null : commitShortcut).withHandler(e -> {
        if (!finalCommitAndCloseButtonExists) {
            commitAndClose();
        } else {
            if (commit()) {
                commitActionPerformed = true;
            }
        }
    });
    getFrame().addAction(commitAction);
    Action closeAction = new BaseAction(WINDOW_CLOSE).withCaption(messages.getMessage("actions.Cancel")).withHandler(e -> close(commitActionPerformed ? Window.COMMIT_ACTION_ID : getId()));
    getFrame().addAction(closeAction);
    Action enableEditingAction = new BaseAction(ENABLE_EDITING).withCaption(messages.getMessage("actions.EnableEditing")).withHandler(e -> setReadOnly(false));
    enableEditingAction.setVisible(false);
    getFrame().addAction(enableEditingAction);
}
Also used : Iterables(com.google.common.collect.Iterables) EntityAccessException(io.jmix.core.EntityAccessException) MetaClass(io.jmix.core.metamodel.model.MetaClass) DynamicAttributesGuiTools(com.haulmont.cuba.gui.dynamicattributes.DynamicAttributesGuiTools) Security(com.haulmont.cuba.core.global.Security) Date(java.util.Date) ValidationErrors(io.jmix.ui.component.ValidationErrors) Autowired(org.springframework.beans.factory.annotation.Autowired) StringUtils(org.apache.commons.lang3.StringUtils) EntityValues(io.jmix.core.entity.EntityValues) Metadata(com.haulmont.cuba.core.global.Metadata) EntityOp(io.jmix.core.security.EntityOp) DatasourceImplementation(com.haulmont.cuba.gui.data.impl.DatasourceImplementation) Categorized(io.jmix.dynattr.model.Categorized) Component(io.jmix.ui.component.Component) DsContextImplementation(com.haulmont.cuba.gui.data.impl.DsContextImplementation) com.haulmont.cuba.gui.data(com.haulmont.cuba.gui.data) PersistenceHelper(com.haulmont.cuba.core.global.PersistenceHelper) Action(io.jmix.ui.action.Action) BaseAction(io.jmix.ui.action.BaseAction) UiCrossFieldChecks(io.jmix.core.validation.group.UiCrossFieldChecks) MetadataTools(io.jmix.core.MetadataTools) ConstraintViolation(javax.validation.ConstraintViolation) Window(io.jmix.ui.component.Window) Nullable(javax.annotation.Nullable) LockService(com.haulmont.cuba.core.app.LockService) LockNotSupported(io.jmix.core.pessimisticlocking.LockNotSupported) Collection(java.util.Collection) EntityCopyUtils(com.haulmont.cuba.gui.data.impl.EntityCopyUtils) Datatypes(com.haulmont.chile.core.datatypes.Datatypes) Validator(javax.validation.Validator) Set(java.util.Set) UserSessionSource(com.haulmont.cuba.core.global.UserSessionSource) CollectionPropertyDatasourceImpl(com.haulmont.cuba.gui.data.impl.CollectionPropertyDatasourceImpl) WindowParams(com.haulmont.cuba.gui.WindowParams) GuiDevelopmentException(io.jmix.ui.GuiDevelopmentException) LockInfo(io.jmix.core.pessimisticlocking.LockInfo) ReadOnlyScreensSupport(io.jmix.ui.screen.ReadOnlyScreensSupport) EntityStates(io.jmix.core.EntityStates) Entity(io.jmix.core.Entity) Element(org.dom4j.Element) ReadOnlyAwareScreen(io.jmix.ui.screen.ReadOnlyAwareScreen) ElementKind(javax.validation.ElementKind) MetaProperty(io.jmix.core.metamodel.model.MetaProperty) OperationResult(io.jmix.ui.util.OperationResult) UiScreenProperties(io.jmix.ui.UiScreenProperties) ComponentsHelper(io.jmix.ui.component.ComponentsHelper) Action(io.jmix.ui.action.Action) BaseAction(io.jmix.ui.action.BaseAction) UiScreenProperties(io.jmix.ui.UiScreenProperties) BaseAction(io.jmix.ui.action.BaseAction) Component(io.jmix.ui.component.Component)

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