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;
}
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());
}
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());
}
}
}
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);
}
}
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);
}
Aggregations