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