Search in sources :

Example 16 with KeyListener

use of org.eclipse.swt.events.KeyListener in project knime-core by knime.

the class WrappedMultipleNodeDialog method createButtonsForButtonBar.

/**
 * {@inheritDoc}
 */
@Override
protected void createButtonsForButtonBar(final Composite parent) {
    // WORKAROUND: can't use IDialogConstants.OK_ID here, as this always
    // closes the dialog, regardless if the settings couldn't be applied.
    final Button btnOK = createButton(parent, IDialogConstants.NEXT_ID, IDialogConstants.OK_LABEL, false);
    final Button btnCancel = createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
    ((GridLayout) parent.getLayout()).numColumns++;
    this.swtKeyListener = new KeyListener() {

        /**
         * {@inheritDoc}
         */
        @Override
        public void keyReleased(final KeyEvent ke) {
            // TODO there's no point to this presently since we don't ever change the text
            if (ke.keyCode == SWT.MOD1) {
                btnOK.setText("OK");
            }
        }

        /**
         * {@inheritDoc}
         */
        @Override
        public void keyPressed(final KeyEvent ke) {
            if (ke.keyCode == SWT.ESC) {
                // close dialog on ESC
                doCancel();
            }
            // TODO this does not mimic the same behavior as found in WrappedNodeDialog to change the OK button text
            if ((ke.keyCode == SWT.CR) && ((ke.stateMask == SWT.MOD1) || (ke.stateMask == SWT.SHIFT + SWT.MOD1))) {
                // force OK - Execute when CTRL/Command and ENTER is pressed
                // open first out-port view if SHIFT is pressed
                doOK(ke);
            }
        }
    };
    this.awtKeyListener = new KeyAdapter() {

        @Override
        public void keyReleased(final java.awt.event.KeyEvent ke) {
            // TODO there's no point to this presently since we don't ever change the text
            int menuAccelerator = (Platform.OS_MACOSX.equals(Platform.getOS())) ? java.awt.event.KeyEvent.VK_META : java.awt.event.KeyEvent.VK_CONTROL;
            if (ke.getKeyCode() == menuAccelerator) {
                getShell().getDisplay().asyncExec(() -> {
                    btnOK.setText("OK");
                });
            }
        }

        @Override
        public void keyPressed(final java.awt.event.KeyEvent ke) {
            if (ke.getKeyCode() == java.awt.event.KeyEvent.VK_ESCAPE) {
                // close dialog on ESC
                getShell().getDisplay().asyncExec(() -> {
                    doCancel();
                });
            }
            // TODO this does not mimic the same behavior as found in WrappedNodeDialog to change the OK button text
            int modifierKey = (Platform.OS_MACOSX.equals(Platform.getOS())) ? InputEvent.META_DOWN_MASK : InputEvent.CTRL_DOWN_MASK;
            if ((ke.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) && ((ke.getModifiersEx() & modifierKey) != 0)) {
                getShell().getDisplay().asyncExec(() -> {
                    // force OK - Execute when CTRL/Command and ENTER is pressed
                    if (doApply()) {
                        runOK();
                    }
                });
            }
        }
    };
    if (!Platform.OS_MACOSX.equals(Platform.getOS())) {
        btnOK.addKeyListener(this.swtKeyListener);
        btnCancel.addKeyListener(this.swtKeyListener);
        m_wrapper.addKeyListener(this.swtKeyListener);
    }
    // Register listeners that notify the content object, which
    // in turn notify the dialog about the particular event.
    btnOK.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(final SelectionEvent se) {
            // OK only
            doOK(se);
        }
    });
    btnCancel.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(final SelectionEvent se) {
            doCancel();
        }
    });
}
Also used : KeyEvent(org.eclipse.swt.events.KeyEvent) Button(org.eclipse.swt.widgets.Button) KeyAdapter(java.awt.event.KeyAdapter) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) SelectionEvent(org.eclipse.swt.events.SelectionEvent) KeyListener(org.eclipse.swt.events.KeyListener)

Example 17 with KeyListener

use of org.eclipse.swt.events.KeyListener in project knime-core by knime.

the class WrappedNodeDialog method createButtonsForButtonBar.

/**
 * {@inheritDoc}
 */
@Override
protected void createButtonsForButtonBar(final Composite parent) {
    // WORKAROUND: can't use IDialogConstants.OK_ID here, as this always
    // closes the dialog, regardless if the settings couldn't be applied.
    final Button btnOK = createButton(parent, IDialogConstants.NEXT_ID, IDialogConstants.OK_LABEL, false);
    final Button btnApply = createButton(parent, IDialogConstants.FINISH_ID, "Apply", false);
    final Button btnCancel = createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
    ((GridLayout) parent.getLayout()).numColumns++;
    final Button btnHelp = new Button(parent, SWT.PUSH | SWT.FLAT);
    Image img = ImageRepository.getIconImage(SharedImages.Help);
    btnHelp.setImage(img);
    boolean writeProtected = m_dialogPane.isWriteProtected();
    btnOK.setEnabled(!writeProtected);
    btnApply.setEnabled(!writeProtected);
    this.swtKeyListener = new KeyListener() {

        /**
         * {@inheritDoc}
         */
        @Override
        public void keyReleased(final KeyEvent ke) {
            if (ke.keyCode == SWT.MOD1) {
                btnOK.setText("OK");
            }
        }

        /**
         * {@inheritDoc}
         */
        @Override
        public void keyPressed(final KeyEvent ke) {
            if ((ke.keyCode == SWT.ESC) && m_dialogPane.closeOnESC()) {
                // close dialog on ESC
                doCancel();
            }
            // this locks the WFM so avoid calling it each time.
            Predicate<NodeContainer> canExecutePredicate = n -> n.getParent().canExecuteNode(n.getID());
            if (ke.keyCode == SWT.MOD1 && canExecutePredicate.test(m_nodeContainer)) {
                // change OK button label, when CTRL/COMMAND is pressed
                btnOK.setText("OK - Execute");
            }
            if ((ke.keyCode == SWT.CR) && ((ke.stateMask & SWT.MOD1) != 0)) {
                // Bug 3942: transfer focus to OK button to have all component to auto-commit their changes
                btnOK.forceFocus();
                // force OK - Execute when CTRL/COMMAND and ENTER is pressed
                // open first out-port view if SHIFT is pressed
                ke.doit = doApply();
                if (ke.doit) {
                    runOK(canExecutePredicate.test(m_nodeContainer), (ke.stateMask & SWT.SHIFT) != 0);
                }
                // reset ok button state/label
                if (!ke.doit) {
                    btnOK.setText("OK");
                }
            }
        }
    };
    this.awtKeyListener = new KeyAdapter() {

        @Override
        public void keyReleased(final java.awt.event.KeyEvent ke) {
            int menuAccelerator = (Platform.OS_MACOSX.equals(Platform.getOS())) ? java.awt.event.KeyEvent.VK_META : java.awt.event.KeyEvent.VK_CONTROL;
            if (ke.getKeyCode() == menuAccelerator) {
                getShell().getDisplay().asyncExec(() -> {
                    btnOK.setText("OK");
                });
            }
        }

        @Override
        public void keyPressed(final java.awt.event.KeyEvent ke) {
            if ((ke.getKeyCode() == java.awt.event.KeyEvent.VK_ESCAPE) && m_dialogPane.closeOnESC()) {
                // close dialog on ESC
                getShell().getDisplay().asyncExec(() -> {
                    doCancel();
                });
            }
            // this locks the WFM so avoid calling it each time.
            final Predicate<NodeContainer> canExecutePredicate = n -> n.getParent().canExecuteNode(n.getID());
            int menuAccelerator = (Platform.OS_MACOSX.equals(Platform.getOS())) ? java.awt.event.KeyEvent.VK_META : java.awt.event.KeyEvent.VK_CONTROL;
            if ((ke.getKeyCode() == menuAccelerator) && canExecutePredicate.test(m_nodeContainer)) {
                // change OK button label, when CTRL/COMMAND is pressed
                getShell().getDisplay().asyncExec(() -> {
                    btnOK.setText("OK - Execute");
                });
            }
            int modifierKey = (Platform.OS_MACOSX.equals(Platform.getOS())) ? InputEvent.META_DOWN_MASK : InputEvent.CTRL_DOWN_MASK;
            if ((ke.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) && ((ke.getModifiersEx() & modifierKey) != 0)) {
                getShell().getDisplay().asyncExec(() -> {
                    // Bug 3942: transfer focus to OK button to have all component to auto-commit their changes
                    btnOK.forceFocus();
                    // open first out-port view if SHIFT is pressed
                    if (doApply()) {
                        runOK(canExecutePredicate.test(m_nodeContainer), ((ke.getModifiersEx() & InputEvent.SHIFT_DOWN_MASK) != 0));
                    } else {
                        // reset ok button state/label
                        btnOK.setText("OK");
                    }
                });
            }
        }
    };
    if (!Platform.OS_MACOSX.equals(Platform.getOS())) {
        btnOK.addKeyListener(this.swtKeyListener);
        btnApply.addKeyListener(this.swtKeyListener);
        btnCancel.addKeyListener(this.swtKeyListener);
        m_wrapper.addKeyListener(this.swtKeyListener);
    }
    // Register listeners that notify the content object, which
    // in turn notify the dialog about the particular event.
    btnOK.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(final SelectionEvent se) {
            if ((se.stateMask & SWT.SHIFT) != 0 && (se.stateMask & SWT.MOD1) != 0) {
                // OK plus execute and open first out-port view
                doOK(se, true, true);
            } else if ((se.stateMask & SWT.MOD1) != 0) {
                // OK plus execute only
                doOK(se, true, false);
            } else {
                // OK only
                doOK(se, false, false);
            }
            if (!se.doit) {
                // reset ok button state/label
                btnOK.setText("OK");
            }
        }
    });
    btnApply.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(final SelectionEvent se) {
            se.doit = doApply();
            // reset ok button state/label
            btnOK.setText("OK");
        }
    });
    btnCancel.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(final SelectionEvent se) {
            doCancel();
        }
    });
    btnHelp.addSelectionListener(new SelectionAdapter() {

        /**
         * {@inheritDoc}
         */
        @Override
        public void widgetSelected(final SelectionEvent e) {
            doOpenNodeDescription();
        }
    });
}
Also used : KeyAdapter(java.awt.event.KeyAdapter) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) Image(org.eclipse.swt.graphics.Image) Predicate(java.util.function.Predicate) KeyEvent(org.eclipse.swt.events.KeyEvent) Button(org.eclipse.swt.widgets.Button) SelectionEvent(org.eclipse.swt.events.SelectionEvent) KeyListener(org.eclipse.swt.events.KeyListener)

Example 18 with KeyListener

use of org.eclipse.swt.events.KeyListener in project eclipse.platform.swt by eclipse.

the class Bug287038_TableKeyEvent method main.

public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());
    final Table table = new Table(shell, SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION);
    table.setLinesVisible(true);
    for (int i = 0; i < 2; i++) {
        TableColumn column = new TableColumn(table, SWT.NONE);
        column.setWidth(100);
    }
    String[] itemsToAdd = new String[] { "Cheese", "Potatoes", "Rocks", "Bacon", "Tree", "Forest", "Chocolate", "Broccoli", "Turnip", "Squash", "Carrot" };
    int i = 0;
    for (String s : itemsToAdd) {
        TableItem item = new TableItem(table, SWT.NONE);
        item.setText(new String[] { s, "" + i++ });
    }
    table.addKeyListener(new KeyListener() {

        @Override
        public void keyPressed(KeyEvent e) {
            System.out.println(e.character);
        }

        @Override
        public void keyReleased(KeyEvent e) {
            System.out.println(e.character);
        }
    });
    shell.pack();
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}
Also used : KeyEvent(org.eclipse.swt.events.KeyEvent) Shell(org.eclipse.swt.widgets.Shell) Table(org.eclipse.swt.widgets.Table) TableItem(org.eclipse.swt.widgets.TableItem) KeyListener(org.eclipse.swt.events.KeyListener) FillLayout(org.eclipse.swt.layout.FillLayout) TableColumn(org.eclipse.swt.widgets.TableColumn) Display(org.eclipse.swt.widgets.Display)

Example 19 with KeyListener

use of org.eclipse.swt.events.KeyListener in project eclipse.platform.swt by eclipse.

the class Snippet359 method main.

public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());
    final Combo combo = new Combo(shell, SWT.DROP_DOWN);
    combo.addKeyListener(new KeyListener() {

        @Override
        public void keyReleased(KeyEvent e) {
            if (e.keyCode == SWT.CR) {
                combo.add(combo.getText());
            }
        }

        @Override
        public void keyPressed(KeyEvent e) {
            System.out.println("caret position: " + combo.getCaretPosition());
            System.out.println("caret location: " + combo.getCaretLocation());
        }
    });
    shell.pack();
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}
Also used : KeyEvent(org.eclipse.swt.events.KeyEvent) Shell(org.eclipse.swt.widgets.Shell) Combo(org.eclipse.swt.widgets.Combo) KeyListener(org.eclipse.swt.events.KeyListener) FillLayout(org.eclipse.swt.layout.FillLayout) Display(org.eclipse.swt.widgets.Display)

Example 20 with KeyListener

use of org.eclipse.swt.events.KeyListener in project eclipse.platform.swt by eclipse.

the class Snippet360 method main.

public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setLayout(new GridLayout());
    // create a a tree with 3 columns and fill with data
    final Tree tree = new Tree(shell, SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION);
    tree.setLayoutData(new GridData(GridData.FILL_BOTH));
    tree.setHeaderVisible(true);
    TreeColumn column1 = new TreeColumn(tree, SWT.NONE);
    TreeColumn column2 = new TreeColumn(tree, SWT.NONE);
    TreeColumn column3 = new TreeColumn(tree, SWT.NONE);
    for (int i = 0; i < 9; i++) {
        TreeItem item = new TreeItem(tree, SWT.NONE);
        item.setText(new String[] { "root " + i + " 0", "root " + i + " 1", "root " + i + " 2" });
        for (int j = 0; j < 9; j++) {
            TreeItem item2 = new TreeItem(item, SWT.NONE);
            item2.setText(new String[] { "child " + j + " 0", "child " + j + " 1", "child " + j + " 2" });
            TreeItem current = item2;
            for (int k = 0; k < 5; k++) {
                TreeItem item3 = new TreeItem(current, SWT.NONE);
                item3.setText(new String[] { "descendent " + k + " 0", "descendent " + k + " 1", "descendent " + k + " 2" });
                current = item3;
            }
        }
    }
    column1.setWidth(200);
    column2.setWidth(100);
    column3.setWidth(100);
    // create a TreeCursor to navigate around the tree
    final TreeCursor cursor = new TreeCursor(tree, SWT.NONE);
    // create an editor to edit the cell when the user hits "ENTER"
    // while over a cell in the tree
    final ControlEditor editor = new ControlEditor(cursor);
    editor.grabHorizontal = true;
    editor.grabVertical = true;
    cursor.addSelectionListener(new SelectionAdapter() {

        // when the TreeEditor is over a cell, select the corresponding row
        // in the tree
        @Override
        public void widgetSelected(SelectionEvent e) {
            tree.setSelection(new TreeItem[] { cursor.getRow() });
        }

        // when the user hits "ENTER" in the TreeCursor, pop up a text
        // editor so that they can change the text of the cell
        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
            final Text text = new Text(cursor, SWT.NONE);
            TreeItem row = cursor.getRow();
            int column = cursor.getColumn();
            text.setText(row.getText(column));
            text.addKeyListener(keyPressedAdapter(event -> {
                // when the user hits "ENTER"
                if (event.character == SWT.CR) {
                    TreeItem localRow = cursor.getRow();
                    int localColumn = cursor.getColumn();
                    localRow.setText(localColumn, text.getText());
                    text.dispose();
                }
                // close the text editor when the user hits "ESC"
                if (event.character == SWT.ESC) {
                    text.dispose();
                }
            }));
            editor.setEditor(text);
            text.setFocus();
        }
    });
    // Hide the TreeCursor when the user hits the "MOD1" or "MOD2" key.
    // This allows the user to select multiple items in the tree.
    cursor.addKeyListener(keyPressedAdapter(e -> {
        if (e.keyCode == SWT.MOD1 || e.keyCode == SWT.MOD2 || (e.stateMask & SWT.MOD1) != 0 || (e.stateMask & SWT.MOD2) != 0) {
            cursor.setVisible(false);
        }
    }));
    // Show the TreeCursor when the user releases the "MOD2" or "MOD1" key.
    // This signals the end of the multiple selection task.
    tree.addKeyListener(new KeyListener() {

        @Override
        public void keyReleased(KeyEvent e) {
            if (e.keyCode == SWT.MOD1 && (e.stateMask & SWT.MOD2) != 0)
                return;
            if (e.keyCode == SWT.MOD2 && (e.stateMask & SWT.MOD1) != 0)
                return;
            if (e.keyCode != SWT.MOD1 && (e.stateMask & SWT.MOD1) != 0)
                return;
            if (e.keyCode != SWT.MOD2 && (e.stateMask & SWT.MOD2) != 0)
                return;
            TreeItem[] selection = tree.getSelection();
            TreeItem row = (selection.length == 0) ? tree.getItem(tree.indexOf(tree.getTopItem())) : selection[0];
            tree.showItem(row);
            cursor.setSelection(row, cursor.getColumn());
            cursor.setVisible(true);
            cursor.setFocus();
        }

        @Override
        public void keyPressed(KeyEvent e) {
            switch(e.keyCode) {
                case SWT.ARROW_LEFT:
                case SWT.ARROW_RIGHT:
                    {
                        if ((e.stateMask & SWT.MOD1) != 0) {
                            TreeItem[] selection = tree.getSelection();
                            if (selection.length > 0) {
                                selection[0].setExpanded(e.keyCode == SWT.ARROW_RIGHT);
                            }
                            break;
                        }
                    }
            }
        }
    });
    shell.pack();
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}
Also used : org.eclipse.swt.events(org.eclipse.swt.events) org.eclipse.swt.layout(org.eclipse.swt.layout) org.eclipse.swt.custom(org.eclipse.swt.custom) org.eclipse.swt.widgets(org.eclipse.swt.widgets) KeyListener(org.eclipse.swt.events.KeyListener) org.eclipse.swt(org.eclipse.swt) KeyListener(org.eclipse.swt.events.KeyListener)

Aggregations

KeyListener (org.eclipse.swt.events.KeyListener)47 KeyEvent (org.eclipse.swt.events.KeyEvent)44 MouseEvent (org.eclipse.swt.events.MouseEvent)14 SelectionEvent (org.eclipse.swt.events.SelectionEvent)14 Point (org.eclipse.swt.graphics.Point)14 GridData (org.eclipse.swt.layout.GridData)13 Button (org.eclipse.swt.widgets.Button)11 FocusEvent (org.eclipse.swt.events.FocusEvent)10 MouseListener (org.eclipse.swt.events.MouseListener)9 Composite (org.eclipse.swt.widgets.Composite)9 ModifyEvent (org.eclipse.swt.events.ModifyEvent)8 ModifyListener (org.eclipse.swt.events.ModifyListener)8 GridLayout (org.eclipse.swt.layout.GridLayout)8 Event (org.eclipse.swt.widgets.Event)8 Text (org.eclipse.swt.widgets.Text)8 SelectionAdapter (org.eclipse.swt.events.SelectionAdapter)7 SelectionListener (org.eclipse.swt.events.SelectionListener)7 StyledText (org.eclipse.swt.custom.StyledText)6 ControlEvent (org.eclipse.swt.events.ControlEvent)6 Label (org.eclipse.swt.widgets.Label)6