1 /******************************************************************************* 2 * Copyright (c) 2018 Red Hat and others. 3 * 4 * This program and the accompanying materials 5 * are made available under the terms of the Eclipse Public License 2.0 6 * which accompanies this distribution, and is available at 7 * https://www.eclipse.org/legal/epl-2.0/ 8 * 9 * SPDX-License-Identifier: EPL-2.0 10 * 11 * Contributors: 12 * Red Hat - initial API and implementation 13 *******************************************************************************/ 14 package org.eclipse.swt.tests.gtk.snippets; 15 16 17 import org.eclipse.swt.SWT; 18 import org.eclipse.swt.layout.FillLayout; 19 import org.eclipse.swt.widgets.Display; 20 import org.eclipse.swt.widgets.Event; 21 import org.eclipse.swt.widgets.Listener; 22 import org.eclipse.swt.widgets.Shell; 23 import org.eclipse.swt.widgets.Tree; 24 import org.eclipse.swt.widgets.TreeItem; 25 26 public class Bug494619TreeDefaultSelectionEvent { main(String[] args)27 public static void main(String[] args) { 28 Display display = new Display(); 29 Shell shell = new Shell(display); 30 shell.setLayout(new FillLayout()); 31 final Tree tree = new Tree(shell, SWT.BORDER); 32 for (int i = 0; i < 4; i++) { 33 TreeItem iItem = new TreeItem(tree, 0); 34 iItem.setText("TreeItem (0) -" + i); 35 for (int j = 0; j < 4; j++) { 36 TreeItem jItem = new TreeItem(iItem, 0); 37 jItem.setText("TreeItem (1) -" + j); 38 for (int k = 0; k < 4; k++) { 39 TreeItem kItem = new TreeItem(jItem, 0); 40 kItem.setText("TreeItem (2) -" + k); 41 for (int l = 0; l < 4; l++) { 42 TreeItem lItem = new TreeItem(kItem, 0); 43 lItem.setText("TreeItem (3) -" + l); 44 } 45 } 46 } 47 } 48 49 tree.addListener(SWT.KeyDown, new Listener() { 50 @Override 51 public void handleEvent(Event event) { 52 //32 in hex = 0x20 - space 53 //13 in hex = 0xD - enter. 54 if (event.keyCode == 0x20 && (event.stateMask & SWT.MODIFIER_MASK) == 0) { 55 System.out.println("KeyDown event. Handle space"); 56 event.doit = true; 57 } else if (event.keyCode == 0xD && (event.stateMask & SWT.MODIFIER_MASK) == 0) { 58 System.out.println("KeyDown event. Handle enter"); 59 } 60 } 61 }); 62 tree.addListener(SWT.DefaultSelection, new Listener() { 63 @Override 64 public void handleEvent(Event event) { 65 66 System.out.println(event.keyCode); 67 System.out.println("Default Selection event. Handle enter or double-click"); 68 } 69 }); 70 71 shell.setSize(200, 200); 72 shell.open(); 73 while (!shell.isDisposed()) { 74 if (!display.readAndDispatch()) { 75 display.sleep(); 76 } 77 } 78 display.dispose(); 79 } 80 } 81