Example usage for com.vaadin.event ShortcutListener ShortcutListener

List of usage examples for com.vaadin.event ShortcutListener ShortcutListener

Introduction

In this page you can find the example usage for com.vaadin.event ShortcutListener ShortcutListener.

Prototype

public ShortcutListener(String caption, int keyCode, int... modifierKeys) 

Source Link

Usage

From source file:com.cms.utils.ConfirmWindown.java

public ConfirmWindown(String caption, String question, String yes, String no) {
    setCaption(caption);//w ww  . j a v  a  2  s  .c  om
    btnYes.setCaption(yes);
    btnYes.focus();
    btnNo.setCaption(no);
    setModal(true);
    center();
    buttonsLayout.addComponent(btnYes);
    buttonsLayout.setComponentAlignment(btnYes, Alignment.MIDDLE_CENTER);
    buttonsLayout.addComponent(btnNo);
    buttonsLayout.setComponentAlignment(btnNo, Alignment.MIDDLE_CENTER);
    layout.addComponent(new Label(question));
    layout.addComponent(buttonsLayout);
    setContent(layout);
    layout.setMargin(true);
    buttonsLayout.setMargin(true);
    buttonsLayout.setWidth("100%");
    setWidth("300px");
    setHeight("160px");
    setResizable(false);
    btnYes.addClickListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent event) {
            decision.yes(event);
            close();
        }
    });
    btnNo.addClickListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent event) {
            decision.no(event);
            close();
        }
    });
    addShortcutListener(new ShortcutListener("Close", ShortcutAction.KeyCode.ESCAPE, null) {
        @Override
        public void handleAction(Object sender, Object target) {
            close();
        }
    });
    UI.getCurrent().addWindow(this);
}

From source file:com.esofthead.mycollab.vaadin.web.ui.SearchTextField.java

License:Open Source License

public SearchTextField() {
    this.setDefaultComponentAlignment(Alignment.MIDDLE_RIGHT);
    ELabel icon = ELabel.fontIcon(FontAwesome.SEARCH);
    innerField = new TextField();
    innerField.setImmediate(true);/*from   w ww  . j a v a2 s  .  c om*/
    innerField.setInputPrompt("Search");
    innerField.setWidth("180px");
    this.with(icon, innerField).withStyleName("searchfield");
    ShortcutListener shortcutListener = new ShortcutListener("searchfield", ShortcutAction.KeyCode.ENTER,
            null) {
        @Override
        public void handleAction(Object sender, Object target) {
            String value = ((TextField) target).getValue();
            if (isNotBlank(value)) {
                doSearch(value);
            } else {
                emptySearch();
            }
        }
    };
    ShortcutExtension.installShortcutAction(innerField, shortcutListener);
}

From source file:com.haulmont.cuba.web.app.folders.CubaFoldersPane.java

License:Apache License

protected Component createAppFoldersPane() {
    List<AppFolder> appFolders = foldersService.loadAppFolders();
    if (appFolders.isEmpty())
        return null;

    appFoldersTree = new CubaTree();
    appFoldersTree.setCubaId("appFoldersTree");
    appFoldersTree.setSelectable(true);//from ww w.  j av  a  2s .  co m
    appFoldersTree.setItemStyleGenerator(new FolderTreeStyleProvider());
    appFoldersTree.addShortcutListener(
            new ShortcutListener("applyAppFolder", ShortcutAction.KeyCode.ENTER, (int[]) null) {
                @Override
                public void handleAction(Object sender, Object target) {
                    if (target == appFoldersTree) {
                        AbstractSearchFolder folder = (AbstractSearchFolder) appFoldersTree.getValue();
                        if (folder != null) {
                            openFolder(folder);
                        }
                    }
                }
            });
    appFoldersTree.addExpandListener(new Tree.ExpandListener() {
        @Override
        public void nodeExpand(Tree.ExpandEvent event) {
            AppFolder folder = (AppFolder) event.getItemId();
            if (StringUtils.isBlank(folder.getQuantityScript())) {
                folder.setQuantity(null);
                folder.setItemStyle(null);
                setFolderTreeItemCaption(appFoldersTree, folder);
            }
        }
    });
    appFoldersTree.addCollapseListener(new Tree.CollapseListener() {
        @Override
        public void nodeCollapse(Tree.CollapseEvent event) {
            AppFolder folder = (AppFolder) event.getItemId();
            if (StringUtils.isBlank(folder.getQuantityScript())) {
                reloadSingleParentFolder(folder, null);
                setFolderTreeItemCaption(appFoldersTree, folder);
            }
        }
    });

    appFoldersRoot = messages.getMainMessage("folders.appFoldersRoot");
    fillTree(appFoldersTree, appFolders, isNeedRootAppFolder() ? appFoldersRoot : null);
    appFoldersTree.addItemClickListener(new FolderClickListener());
    appFoldersTree.addActionHandler(new AppFolderActionsHandler());

    for (Object itemId : appFoldersTree.rootItemIds()) {
        appFoldersTree.expandItemsRecursively(itemId);
    }

    return appFoldersTree;
}

From source file:com.haulmont.cuba.web.app.folders.CubaFoldersPane.java

License:Apache License

protected Component createSearchFoldersPane() {
    searchFoldersTree = new CubaTree();
    searchFoldersTree.setCubaId("searchFoldersTree");
    searchFoldersTree.setSelectable(true);
    searchFoldersTree.setItemStyleGenerator(new FolderTreeStyleProvider());
    searchFoldersTree.addShortcutListener(
            new ShortcutListener("applySearchFolder", ShortcutAction.KeyCode.ENTER, (int[]) null) {
                @Override/*ww  w  .j a  va  2  s.  c o m*/
                public void handleAction(Object sender, Object target) {
                    if (target == searchFoldersTree) {
                        AbstractSearchFolder folder = (AbstractSearchFolder) searchFoldersTree.getValue();
                        if (folder != null) {
                            openFolder(folder);
                        }
                    }
                }
            });

    List<SearchFolder> searchFolders = foldersService.loadSearchFolders();
    searchFoldersRoot = messages.getMainMessage("folders.searchFoldersRoot");
    searchFoldersTree.addItemClickListener(new FolderClickListener());
    searchFoldersTree.addActionHandler(new SearchFolderActionsHandler());
    if (!searchFolders.isEmpty()) {
        fillTree(searchFoldersTree, searchFolders, isNeedRootSearchFolder() ? searchFoldersRoot : null);
    }

    for (Object itemId : searchFoldersTree.rootItemIds()) {
        searchFoldersTree.expandItemsRecursively(itemId);
    }
    return searchFoldersTree;
}

From source file:com.haulmont.cuba.web.app.folders.FolderEditWindow.java

License:Apache License

public FolderEditWindow(boolean adding, Folder folder, Presentations presentations, Runnable commitHandler) {
    this.folder = folder;
    this.commitHandler = commitHandler;

    messages = AppBeans.get(Messages.NAME);
    messagesPack = AppConfig.getMessagesPack();
    userSessionSource = AppBeans.get(UserSessionSource.NAME);
    Configuration configuration = AppBeans.get(Configuration.NAME);
    clientConfig = configuration.getConfig(ClientConfig.class);

    setCaption(adding ? getMessage("folders.folderEditWindow.adding") : getMessage("folders.folderEditWindow"));

    ThemeConstants theme = App.getInstance().getThemeConstants();
    setWidthUndefined();/*w w w .  j  a  v  a2 s  .com*/
    setResizable(false);

    int[] modifiers = { ShortcutAction.ModifierKey.CTRL };
    addAction(new ShortcutListener("commit", com.vaadin.event.ShortcutAction.KeyCode.ENTER, modifiers) {
        @Override
        public void handleAction(Object sender, Object target) {
            commit();
        }
    });

    layout = new VerticalLayout();
    layout.setWidthUndefined();
    layout.setSpacing(true);

    setContent(layout);
    setModal(true);
    center();

    String fieldWidth = theme.get("cuba.web.FolderEditWindow.field.width");

    nameField = new TextField();
    nameField.setRequired(true);
    nameField.setCaption(getMessage("folders.folderEditWindow.nameField"));
    nameField.setWidth(fieldWidth);
    nameField.setValue(folder.getName());
    nameField.focus();
    layout.addComponent(nameField);

    tabNameField = new TextField();
    tabNameField.setCaption(getMessage("folders.folderEditWindow.tabNameField"));
    tabNameField.setWidth(fieldWidth);
    tabNameField.setValue(StringUtils.trimToEmpty(folder.getTabName()));
    layout.addComponent(tabNameField);

    parentSelect = new ComboBox();
    parentSelect.setCaption(getMessage("folders.folderEditWindow.parentSelect"));
    parentSelect.setWidth(fieldWidth);
    parentSelect.setNullSelectionAllowed(true);
    fillParentSelect();
    parentSelect.setValue(folder.getParent());
    layout.addComponent(parentSelect);

    if (folder instanceof SearchFolder) {
        if (presentations != null) {
            presentation = new ComboBox();
            presentation.setCaption(getMessage("folders.folderEditWindow.presentation"));
            presentation.setWidth(fieldWidth);
            presentation.setNullSelectionAllowed(true);
            fillPresentations(presentations);
            presentation.setValue(((SearchFolder) folder).getPresentation());
            layout.addComponent(presentation);
        } else if (((SearchFolder) folder).getPresentation() != null) {
            selectedPresentationField = new TextField();
            selectedPresentationField.setWidth(fieldWidth);
            selectedPresentationField.setCaption(getMessage("folders.folderEditWindow.presentation"));
            selectedPresentationField.setValue(((SearchFolder) folder).getPresentation().getName());
            selectedPresentationField.setEnabled(false);
            layout.addComponent(selectedPresentationField);
        }
    }

    sortOrderField = new TextField();
    sortOrderField.setCaption(getMessage("folders.folderEditWindow.sortOrder"));
    sortOrderField.setWidth(fieldWidth);
    sortOrderField.setValue(folder.getSortOrder() == null ? "" : folder.getSortOrder().toString());
    layout.addComponent(sortOrderField);

    if (userSessionSource.getUserSession().isSpecificPermitted("cuba.gui.searchFolder.global")
            && folder instanceof SearchFolder && BooleanUtils.isNotTrue(((SearchFolder) folder).getIsSet())) {
        globalCb = new CubaCheckBox(getMessage("folders.folderEditWindow.global"));
        globalCb.setValue(((SearchFolder) folder).getUser() == null);
        layout.addComponent(globalCb);
    }

    applyDefaultCb = new CubaCheckBox(getMessage("folders.folderEditWindow.applyDefault"));
    applyDefaultCb.setValue(BooleanUtils.isTrue(((AbstractSearchFolder) folder).getApplyDefault()));
    applyDefaultCb.setVisible(clientConfig.getGenericFilterManualApplyRequired()
            && folder instanceof SearchFolder && BooleanUtils.isNotTrue(((SearchFolder) folder).getIsSet()));
    layout.addComponent(applyDefaultCb);

    HorizontalLayout buttonsLayout = new HorizontalLayout();
    buttonsLayout.setMargin(new MarginInfo(true, false, false, false));
    buttonsLayout.setSpacing(true);
    layout.addComponent(buttonsLayout);

    okBtn = new CubaButton(getMessage("actions.Ok"));
    okBtn.setIcon(WebComponentsHelper.getIcon("icons/ok.png"));
    okBtn.addStyleName(WebButton.ICON_STYLE);

    initButtonOkListener();
    buttonsLayout.addComponent(okBtn);

    cancelBtn = new CubaButton(getMessage("actions.Cancel"));
    cancelBtn.setIcon(WebComponentsHelper.getIcon("icons/cancel.png"));
    cancelBtn.addStyleName(WebButton.ICON_STYLE);
    cancelBtn.addClickListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent event) {
            close();
        }
    });
    buttonsLayout.addComponent(cancelBtn);

    if (AppUI.getCurrent().isTestMode()) {
        setCubaId("folderEditWindow");

        nameField.setCubaId("nameField");
        tabNameField.setCubaId("tabNameField");
        parentSelect.setCubaId("parentSelect");
        if (presentation != null) {
            presentation.setCubaId("presentationSelect");
        }
        sortOrderField.setCubaId("sortOrderField");
        if (selectedPresentationField != null) {
            selectedPresentationField.setCubaId("selectedPresentationField");
        }
        if (globalCb != null) {
            globalCb.setCubaId("globalCb");
        }
        applyDefaultCb.setCubaId("applyDefaultCb");
        okBtn.setCubaId("okBtn");
        cancelBtn.setCubaId("cancelBtn");
    }
}

From source file:com.haulmont.cuba.web.app.ui.serverlogviewer.ServerLogWindow.java

License:Apache License

@Override
public void init(Map<String, Object> params) {
    localJmxField.setValue(jmxControlAPI.getLocalNodeName());
    localJmxField.setEditable(false);//w w  w . jav  a 2s.c  o  m

    localJmxInstance = jmxControlAPI.getLocalInstance();

    jmxInstancesDs.refresh();
    jmxConnectionField.setValue(localJmxInstance);
    jmxConnectionField.setRequired(true);
    jmxConnectionField.addValueChangeListener(e -> {
        JmxInstance jmxInstance = (JmxInstance) e.getValue();
        try {
            refreshHostInfo();
        } catch (JmxControlException ex) {
            showNotification(getMessage("exception.unableToConnectToInterface"), NotificationType.WARNING);
            if (jmxInstance != localJmxInstance) {
                jmxConnectionField.setValue(localJmxInstance);
            }
        }
    });

    autoRefreshCheck.addValueChangeListener(e -> {
        if (Boolean.TRUE.equals(e.getValue())) {
            updateLogTailTimer.start();
        } else {
            updateLogTailTimer.stop();
        }
    });

    jmxConnectionField.removeAllActions();

    LookupAction action = LookupAction.create(jmxConnectionField);
    action.setAfterLookupCloseHandler((window, actionId) -> {
        jmxInstancesDs.refresh();
    });
    jmxConnectionField.addAction(action);

    jmxConnectionField
            .addAction(new BaseAction("actions.Add").withIcon("icons/plus-btn.png").withHandler(event -> {
                JmxInstanceEditor instanceEditor = (JmxInstanceEditor) openEditor(
                        metadata.create(JmxInstance.class), OpenType.DIALOG);
                instanceEditor.addCloseListener(actionId -> {
                    if (COMMIT_ACTION_ID.equals(actionId)) {
                        jmxInstancesDs.refresh();
                        jmxConnectionField.setValue(instanceEditor.getItem());
                    }
                });
            }));

    logTailLabel.setSizeAuto();
    logTailLabel.setHtmlEnabled(true);
    logTailLabel.setStyleName("c-log-content");

    loggerLevelField.setOptionsList(LoggingHelper.getLevels());
    appenderLevelField.setOptionsList(LoggingHelper.getLevels());

    refreshHostInfo();

    loggerNameField.addValueChangeListener(e -> {
        List<String> currentLoggers = new ArrayList<>(
                jmxRemoteLoggingAPI.getLoggerNames(getSelectedConnection()));

        Collections.sort(currentLoggers);
        currentLoggers.add(0, getMessage("logger.new"));
        if (e.getValue() != null && e.getValue().equals(currentLoggers.get(0))) {
            openAddLoggerDialog();
        }
    });

    downloadButton.setEnabled(security.isSpecificPermitted("cuba.gui.administration.downloadlogs"));

    ComboBox comboBox = logFileNameField.unwrap(ComboBox.class);
    comboBox.addShortcutListener(
            new ShortcutListener("", KeyCode.D, new int[] { ModifierKey.CTRL, ModifierKey.SHIFT }) {
                @Override
                public void handleAction(Object sender, Object target) {
                    downloadLog();
                }
            });
    comboBox.addShortcutListener(
            new ShortcutListener("", KeyCode.S, new int[] { ModifierKey.CTRL, ModifierKey.SHIFT }) {
                @Override
                public void handleAction(Object sender, Object target) {
                    showLogTail();
                }
            });

    downloadButton.setDescription("CTRL-SHIFT-D");
    showTailButton.setDescription("CTRL-SHIFT-S");
}

From source file:com.haulmont.cuba.web.gui.components.mainwindow.WebFtsField.java

License:Apache License

public WebFtsField() {
    component = new CssLayout();
    component.setPrimaryStyleName(FTS_FIELD_STYLENAME);

    ComponentsFactory cf = AppBeans.get(ComponentsFactory.NAME);
    com.haulmont.cuba.gui.components.TextField searchFieldComponent = cf
            .createComponent(com.haulmont.cuba.gui.components.TextField.class);
    searchField = (TextField) WebComponentsHelper.unwrap(searchFieldComponent);
    searchField.setStyleName("c-ftsfield-text");

    AppUI ui = AppUI.getCurrent();/*from  w  ww  .  j  a  v  a 2 s.c om*/
    if (ui.isTestMode()) {
        searchField.setCubaId("ftsField");
        searchField.setId(ui.getTestIdManager().reserveId("ftsField"));
    }
    searchField.addShortcutListener(
            new ShortcutListener("fts", com.vaadin.event.ShortcutAction.KeyCode.ENTER, null) {
                @Override
                public void handleAction(Object sender, Object target) {
                    openSearchWindow();
                }
            });

    searchBtn = new CubaButton();
    searchBtn.setStyleName("c-ftsfield-button");
    searchBtn.setIcon(WebComponentsHelper.getIcon("app/images/fts-button.png"));
    searchBtn.addClickListener((Button.ClickListener) event -> openSearchWindow());

    component.addComponent(searchField);
    component.addComponent(searchBtn);

    adjustHeight();
    adjustWidth();
}

From source file:com.haulmont.cuba.web.gui.components.WebAbstractActionsHolderComponent.java

License:Apache License

protected WebAbstractActionsHolderComponent() {
    Configuration configuration = AppBeans.get(Configuration.NAME);
    ClientConfig clientConfig = configuration.getConfig(ClientConfig.class);
    showIconsForPopupMenuActions = clientConfig.getShowIconsForPopupMenuActions();

    contextMenuPopup = new VerticalLayout();
    contextMenuPopup.setCubaId("cubaContextMenu");
    contextMenuPopup.setSizeUndefined();
    contextMenuPopup.setStyleName("c-cm-container");

    shortcutsDelegate = new ShortcutsDelegate<ShortcutListener>() {
        @Override/*from   w w  w .j a v a  2 s. c om*/
        protected ShortcutListener attachShortcut(final String actionId, KeyCombination keyCombination) {
            ShortcutListener shortcut = new ShortcutListener(actionId, keyCombination.getKey().getCode(),
                    KeyCombination.Modifier.codes(keyCombination.getModifiers())) {

                @Override
                public void handleAction(Object sender, Object target) {
                    if (target == component) {
                        Action action = getAction(actionId);
                        if (action != null && action.isEnabled() && action.isVisible()) {
                            action.actionPerform(WebAbstractActionsHolderComponent.this);
                        }
                    }
                }
            };
            component.addShortcutListener(shortcut);
            return shortcut;
        }

        @Override
        protected void detachShortcut(Action action, ShortcutListener shortcutDescriptor) {
            component.removeShortcutListener(shortcutDescriptor);
        }

        @Override
        protected Collection<Action> getActions() {
            return WebAbstractActionsHolderComponent.this.getActions();
        }
    };
}

From source file:com.haulmont.cuba.web.gui.components.WebAbstractTable.java

License:Apache License

protected void initComponent(final T component) {
    component.setMultiSelect(false);/*from   ww w .  j a v a2 s  . co m*/
    component.setImmediate(true);
    component.setValidationVisible(false);
    component.setShowBufferedSourceException(false);

    component.setBeforePaintListener(() -> {
        com.vaadin.ui.Table.CellStyleGenerator generator = component.getCellStyleGenerator();
        if (generator instanceof WebAbstractTable.StyleGeneratorAdapter) {
            //noinspection unchecked
            ((StyleGeneratorAdapter) generator).resetExceptionHandledFlag();
        }
    });

    Messages messages = AppBeans.get(Messages.NAME);
    component.setSortAscendingLabel(messages.getMainMessage("tableSort.ascending"));
    component.setSortResetLabel(messages.getMainMessage("tableSort.reset"));
    component.setSortDescendingLabel(messages.getMainMessage("tableSort.descending"));

    setClientCaching(component);

    int defaultRowHeaderWidth = 16;
    ThemeConstants theme = App.getInstance().getThemeConstants();
    if (theme != null) {
        defaultRowHeaderWidth = theme.getInt("cuba.web.Table.defaultRowHeaderWidth");
    }

    // CAUTION: vaadin considers null as row header property id;
    component.setColumnWidth(null, defaultRowHeaderWidth); // todo get width from theme

    contextMenuPopup.setParent(component);
    component.setContextMenuPopup(contextMenuPopup);

    shortcutsDelegate.setAllowEnterShortcut(false);

    component.addValueChangeListener(event -> {
        if (datasource == null) {
            return;
        }

        final Set<? extends Entity> selected = getSelected();
        if (selected.isEmpty()) {
            Entity dsItem = datasource.getItemIfValid();
            datasource.setItem(null);
            if (dsItem == null) {
                // in this case item change event will not be generated
                refreshActionsState();
            }
        } else {
            // reset selection and select new item
            if (isMultiSelect()) {
                datasource.setItem(null);
            }

            Entity newItem = selected.iterator().next();
            Entity dsItem = datasource.getItemIfValid();
            datasource.setItem(newItem);

            if (Objects.equals(dsItem, newItem)) {
                // in this case item change event will not be generated
                refreshActionsState();
            }
        }

        LookupSelectionChangeEvent selectionChangeEvent = new LookupSelectionChangeEvent(this);
        getEventRouter().fireEvent(LookupSelectionChangeListener.class,
                LookupSelectionChangeListener::lookupValueChanged, selectionChangeEvent);
    });

    component.addShortcutListener(
            new ShortcutListener("tableEnter", com.vaadin.event.ShortcutAction.KeyCode.ENTER, null) {
                @Override
                public void handleAction(Object sender, Object target) {
                    if (target == WebAbstractTable.this.component) {
                        if (enterPressAction != null) {
                            enterPressAction.actionPerform(WebAbstractTable.this);
                        } else {
                            handleClickAction();
                        }
                    }
                }
            });

    component.addItemClickListener(event -> {
        if (event.isDoubleClick() && event.getItem() != null) {
            handleClickAction();
        }
    });

    component.setSelectable(true);
    component.setTableFieldFactory(createFieldFactory());
    component.setColumnCollapsingAllowed(true);
    component.setColumnReorderingAllowed(true);

    setEditable(false);

    componentComposition = new TableComposition();
    componentComposition.setTable(component);
    componentComposition.setPrimaryStyleName("c-table-composition");
    componentComposition.addComponent(component);

    component.setCellStyleGenerator(createStyleGenerator());
    component.addColumnCollapseListener(this::handleColumnCollapsed);

    // force default sizes
    componentComposition.setHeightUndefined();
    componentComposition.setWidthUndefined();
}

From source file:com.haulmont.cuba.web.gui.components.WebAbstractTree.java

License:Apache License

public void initComponent(CubaTree component) {
    componentComposition = new CssLayout();
    componentComposition.setPrimaryStyleName("c-tree-composition");
    componentComposition.setWidthUndefined();
    componentComposition.addComponent(component);

    component.setSizeFull();/*from   w  w  w. ja v  a  2  s.  co  m*/

    component.addShortcutListener(
            new ShortcutListener("tableEnter", com.vaadin.event.ShortcutAction.KeyCode.ENTER, null) {
                @Override
                public void handleAction(Object sender, Object target) {
                    if (target == WebAbstractTree.this.component) {
                        if (enterPressAction != null) {
                            enterPressAction.actionPerform(WebAbstractTree.this);
                        } else {
                            handleClickAction();
                        }
                    }
                }
            });
}