Search in sources :

Example 26 with Action

use of com.haulmont.cuba.gui.components.Action in project cuba by cuba-platform.

the class DesktopPickerField method updateOrderedShortcuts.

protected void updateOrderedShortcuts() {
    InputMap inputMap = getImpl().getInputField().getInputMap(JComponent.WHEN_FOCUSED);
    for (int i = 0; i < 9; i++) {
        KeyStroke keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_1 + i, modifiersMask, false);
        inputMap.remove(keyStroke);
    }
    int index = 0;
    for (Action action : actionsOrder) {
        KeyStroke keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_1 + index, modifiersMask, false);
        List<KeyStroke> keyStrokes = new LinkedList<>();
        keyStrokes.add(keyStroke);
        keyStrokesMap.put(action, keyStrokes);
        inputMap.put(keyStroke, action.getId());
        index++;
    }
}
Also used : AbstractAction(javax.swing.AbstractAction) Action(com.haulmont.cuba.gui.components.Action)

Example 27 with Action

use of com.haulmont.cuba.gui.components.Action in project cuba by cuba-platform.

the class DesktopWindowManager method createButtonsPanel.

protected JPanel createButtonsPanel(Action[] actions, final DialogWindow dialog) {
    JPanel buttonsPanel = new JPanel();
    boolean hasPrimaryAction = false;
    for (final Action action : actions) {
        JButton button = new JButton(action.getCaption());
        button.setEnabled(action.isEnabled());
        String icon = action.getIcon();
        if (icon != null) {
            button.setIcon(AppBeans.get(IconResolver.class).getIconResource(icon));
        }
        final DialogActionHandler dialogActionHandler = new DialogActionHandler(dialog, action);
        button.addActionListener(dialogActionHandler);
        button.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                JButton b = (JButton) e.getSource();
                userActionsLog.trace("Button (name = {}, text = {}) was clicked in dialog", b.getName(), b.getText());
            }
        });
        if (actions.length == 1) {
            dialog.addWindowListener(new WindowAdapter() {

                @Override
                public void windowClosing(WindowEvent e) {
                    dialogActionHandler.onClose();
                }
            });
        }
        button.setPreferredSize(new Dimension(button.getPreferredSize().width, DesktopComponentsHelper.BUTTON_HEIGHT));
        button.setMaximumSize(new Dimension(Integer.MAX_VALUE, DesktopComponentsHelper.BUTTON_HEIGHT));
        if (action instanceof AbstractAction && ((AbstractAction) action).isPrimary()) {
            hasPrimaryAction = true;
            SwingUtilities.invokeLater(new Runnable() {

                @Override
                public void run() {
                    button.requestFocus();
                }
            });
        }
        buttonsPanel.add(button);
    }
    if (!hasPrimaryAction && actions.length > 0) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                buttonsPanel.getComponent(0).requestFocus();
            }
        });
    }
    return buttonsPanel;
}
Also used : ValidationAwareAction(com.haulmont.cuba.desktop.sys.validation.ValidationAwareAction) AbstractAction(com.haulmont.cuba.gui.components.AbstractAction) Action(com.haulmont.cuba.gui.components.Action) AbstractAction(com.haulmont.cuba.gui.components.AbstractAction)

Example 28 with Action

use of com.haulmont.cuba.gui.components.Action in project cuba by cuba-platform.

the class DesktopWindowManager method assignDialogShortcuts.

protected void assignDialogShortcuts(final JDialog dialog, JPanel panel, final Action[] actions) {
    ClientConfig clientConfig = configuration.getConfig(ClientConfig.class);
    InputMap inputMap = panel.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
    ActionMap actionMap = panel.getActionMap();
    String commitShortcut = getConfigValueIfConnected(clientConfig::getCommitShortcut, "cuba.gui.commitShortcut", "CTRL-ENTER");
    KeyCombination okCombination = KeyCombination.create(commitShortcut);
    KeyStroke okKeyStroke = DesktopComponentsHelper.convertKeyCombination(okCombination);
    inputMap.put(okKeyStroke, "okAction");
    actionMap.put("okAction", new javax.swing.AbstractAction() {

        @Override
        public void actionPerformed(ActionEvent e) {
            for (Action action : actions) {
                if (action instanceof DialogAction) {
                    switch(((DialogAction) action).getType()) {
                        case OK:
                        case YES:
                            action.actionPerform(null);
                            dialog.setVisible(false);
                            cleanupAfterModalDialogClosed(null);
                            dialog.dispose();
                            return;
                    }
                }
            }
        }
    });
    String closeShortcut = getConfigValueIfConnected(clientConfig::getCloseShortcut, "cuba.gui.closeShortcut", "ESCAPE");
    KeyCombination closeCombination = KeyCombination.create(closeShortcut);
    KeyStroke closeKeyStroke = DesktopComponentsHelper.convertKeyCombination(closeCombination);
    inputMap.put(closeKeyStroke, "closeAction");
    actionMap.put("closeAction", new javax.swing.AbstractAction() {

        @Override
        public void actionPerformed(ActionEvent e) {
            if (actions.length == 1) {
                actions[0].actionPerform(null);
                dialog.setVisible(false);
                cleanupAfterModalDialogClosed(null);
                dialog.dispose();
            } else {
                for (Action action : actions) {
                    if (action instanceof DialogAction) {
                        switch(((DialogAction) action).getType()) {
                            case CANCEL:
                            case CLOSE:
                            case NO:
                                action.actionPerform(null);
                                dialog.setVisible(false);
                                cleanupAfterModalDialogClosed(null);
                                dialog.dispose();
                                return;
                        }
                    }
                }
            }
        }
    });
}
Also used : ValidationAwareAction(com.haulmont.cuba.desktop.sys.validation.ValidationAwareAction) AbstractAction(com.haulmont.cuba.gui.components.AbstractAction) Action(com.haulmont.cuba.gui.components.Action) javax.swing(javax.swing) ClientConfig(com.haulmont.cuba.client.ClientConfig)

Example 29 with Action

use of com.haulmont.cuba.gui.components.Action in project cuba by cuba-platform.

the class WebAbstractActionsHolderComponent method actionPropertyChanged.

protected void actionPropertyChanged(PropertyChangeEvent evt) {
    Action action = (Action) evt.getSource();
    CubaButton button = actionButtons.get(action);
    if (Action.PROP_ICON.equals(evt.getPropertyName())) {
        setContextMenuButtonIcon(button, showIconsForPopupMenuActions ? action.getIcon() : null);
    } else if (Action.PROP_CAPTION.equals(evt.getPropertyName())) {
        setContextMenuButtonCaption(button, action.getCaption(), action.getShortcutCombination());
    } else if (Action.PROP_DESCRIPTION.equals(evt.getPropertyName())) {
        button.setDescription(action.getDescription());
    } else if (Action.PROP_ENABLED.equals(evt.getPropertyName())) {
        button.setEnabled(action.isEnabled());
    } else if (Action.PROP_VISIBLE.equals(evt.getPropertyName())) {
        button.setVisible(action.isVisible());
    }
}
Also used : Action(com.haulmont.cuba.gui.components.Action) CubaButton(com.haulmont.cuba.web.widgets.CubaButton)

Example 30 with Action

use of com.haulmont.cuba.gui.components.Action in project cuba by cuba-platform.

the class ActionsHolderLoader method loadDeclarativeAction.

@Override
protected Action loadDeclarativeAction(ActionsHolder actionsHolder, Element element) {
    String id = element.attributeValue("id");
    if (StringUtils.isEmpty(id)) {
        throw new GuiDevelopmentException("No action id provided", context, "ActionsHolder ID", actionsHolder.getId());
    }
    if (StringUtils.isEmpty(element.attributeValue("invoke"))) {
        // only in legacy frames
        if (context instanceof ComponentContext && ((ComponentContext) context).getFrame().getFrameOwner() instanceof LegacyFrame) {
            // Try to create a standard list action
            for (ListActionType type : ListActionType.values()) {
                if (type.getId().equals(id)) {
                    Action instance = type.createAction((ListComponent) actionsHolder);
                    loadStandardActionProperties(instance, element);
                    loadActionOpenType(instance, element);
                    loadActionConstraint(instance, element);
                    loadShortcut(instance, element);
                    return instance;
                }
            }
        } else {
            String actionTypeId = element.attributeValue("type");
            if (StringUtils.isNotEmpty(actionTypeId)) {
                Actions actions = beanLocator.get(Actions.NAME);
                Action instance = actions.create(actionTypeId, id);
                if (instance instanceof ListAction) {
                    ((ListAction) instance).setTarget((ListComponent) actionsHolder);
                }
                loadStandardActionProperties(instance, element);
                loadActionConstraint(instance, element);
                loadShortcut(instance, element);
                loadCustomProperties(instance, element);
                return instance;
            }
        }
    }
    return super.loadDeclarativeAction(actionsHolder, element);
}
Also used : ListAction(com.haulmont.cuba.gui.components.actions.ListAction) Action(com.haulmont.cuba.gui.components.Action) Actions(com.haulmont.cuba.gui.components.Actions) GuiDevelopmentException(com.haulmont.cuba.gui.GuiDevelopmentException) LegacyFrame(com.haulmont.cuba.gui.screen.compatibility.LegacyFrame) ListActionType(com.haulmont.cuba.gui.components.actions.ListActionType) ListAction(com.haulmont.cuba.gui.components.actions.ListAction)

Aggregations

Action (com.haulmont.cuba.gui.components.Action)35 ShowInfoAction (com.haulmont.cuba.gui.components.sys.ShowInfoAction)5 AbstractAction (javax.swing.AbstractAction)5 com.haulmont.cuba.gui.components (com.haulmont.cuba.gui.components)4 GuiDevelopmentException (com.haulmont.cuba.gui.GuiDevelopmentException)3 Component (com.haulmont.cuba.gui.components.Component)3 DialogAction (com.haulmont.cuba.gui.components.DialogAction)3 Window (com.haulmont.cuba.gui.components.Window)3 BaseAction (com.haulmont.cuba.gui.components.actions.BaseAction)3 Datasource (com.haulmont.cuba.gui.data.Datasource)3 CubaButton (com.haulmont.cuba.web.widgets.CubaButton)3 Inject (javax.inject.Inject)3 MetaClass (com.haulmont.chile.core.model.MetaClass)2 ClientConfig (com.haulmont.cuba.client.ClientConfig)2 Messages (com.haulmont.cuba.core.global.Messages)2 ValidationAwareAction (com.haulmont.cuba.desktop.sys.validation.ValidationAwareAction)2 AbstractAction (com.haulmont.cuba.gui.components.AbstractAction)2 Button (com.haulmont.cuba.gui.components.Button)2 ListActionType (com.haulmont.cuba.gui.components.actions.ListActionType)2 CollectionDsActionsNotifier (com.haulmont.cuba.gui.data.impl.CollectionDsActionsNotifier)2