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