Mercurial > projects > dwt-samples
annotate snippets/table/Snippet96.d @ 120:1f0a7a472680
fix rm snippets from module statements.
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sun, 20 Jul 2008 19:17:23 +0200 |
parents | e962e274e6f9 |
children |
rev | line source |
---|---|
100
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
1 /******************************************************************************* |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
2 * Copyright (c) 2000, 2004 IBM Corporation and others. |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
3 * All rights reserved. This program and the accompanying materials |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
4 * are made available under the terms of the Eclipse Public License v1.0 |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
5 * which accompanies this distribution, and is available at |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
6 * http://www.eclipse.org/legal/epl-v10.html |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
7 * |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
8 * Contributors: |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
9 * IBM Corporation - initial API and implementation |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
10 * Port to the D programming language: |
102
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
11 * yidabu at gmail dot com ( D China http://www.d-programming-language-china.org/ ) |
100
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
12 *******************************************************************************/ |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
13 |
120
1f0a7a472680
fix rm snippets from module statements.
Frank Benoit <benoit@tionex.de>
parents:
102
diff
changeset
|
14 module table.Snippet96; |
100
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
15 |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
16 // http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet96.java?view=co |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
17 |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
18 /* |
102
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
19 * TableCursor example snippet: navigate a table cells with arrow keys. |
100
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
20 * Edit when user hits Return key. Exit edit mode by hitting Escape (cancels edit) |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
21 * or Return (applies edit to table). |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
22 * |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
23 * For a list of all SWT example snippets see |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
24 * http://www.eclipse.org/swt/snippets/ |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
25 */ |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
26 import dwt.DWT; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
27 import dwt.widgets.Button; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
28 import dwt.widgets.Display; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
29 import dwt.widgets.Event; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
30 import dwt.widgets.Label; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
31 import dwt.widgets.Listener; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
32 import dwt.widgets.Shell; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
33 import dwt.widgets.Table; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
34 import dwt.widgets.TableItem; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
35 import dwt.widgets.TableColumn; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
36 import dwt.widgets.Text; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
37 |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
38 import dwt.custom.TableCursor; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
39 import dwt.custom.ControlEditor; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
40 |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
41 import dwt.layout.GridData; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
42 import dwt.layout.GridLayout; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
43 |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
44 import dwt.events.SelectionEvent; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
45 import dwt.events.SelectionAdapter; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
46 import dwt.events.KeyEvent; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
47 import dwt.events.KeyAdapter; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
48 import dwt.events.FocusEvent; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
49 import dwt.events.FocusAdapter; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
50 import dwt.events.MouseEvent; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
51 import dwt.events.MouseAdapter; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
52 |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
53 import dwt.dwthelper.utils; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
54 |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
55 import tango.util.Convert; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
56 |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
57 |
102
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
58 void main() { |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
59 Display display = new Display(); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
60 Shell shell = new Shell(display); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
61 shell.setLayout(new GridLayout()); |
100
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
62 |
102
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
63 // create a a table with 3 columns and fill with data |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
64 final Table table = new Table(shell, DWT.BORDER | DWT.MULTI | DWT.FULL_SELECTION); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
65 table.setLayoutData(new GridData(GridData.FILL_BOTH)); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
66 TableColumn column1 = new TableColumn(table, DWT.NONE); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
67 TableColumn column2 = new TableColumn(table, DWT.NONE); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
68 TableColumn column3 = new TableColumn(table, DWT.NONE); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
69 for (int i = 0; i < 100; i++) { |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
70 TableItem item = new TableItem(table, DWT.NONE); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
71 item.setText(["cell " ~ to!(char[])(i) ~ " 0", "cell " ~ to!(char[])(i) ~ " 1", "cell " ~ to!(char[])(i) ~ " 2" ]); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
72 } |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
73 column1.pack(); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
74 column2.pack(); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
75 column3.pack(); |
100
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
76 |
102
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
77 // create a TableCursor to navigate around the table |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
78 final TableCursor cursor = new TableCursor(table, DWT.NONE); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
79 // create an editor to edit the cell when the user hits "ENTER" |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
80 // while over a cell in the table |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
81 final ControlEditor editor = new ControlEditor(cursor); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
82 editor.grabHorizontal = true; |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
83 editor.grabVertical = true; |
100
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
84 |
102
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
85 cursor.addSelectionListener(new class(table, editor, cursor) SelectionAdapter { |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
86 // when the TableEditor is over a cell, select the corresponding row in |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
87 // the table |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
88 |
100
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
89 Table table; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
90 ControlEditor editor; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
91 TableCursor cursor; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
92 this(Table table_, ControlEditor editor_, TableCursor cursor_) |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
93 { |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
94 table = table_; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
95 editor = editor_; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
96 cursor = cursor_; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
97 } |
102
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
98 |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
99 public void widgetSelected(SelectionEvent e) { |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
100 table.setSelection([cursor.getRow()]); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
101 } |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
102 // when the user hits "ENTER" in the TableCursor, pop up a text editor so that |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
103 // they can change the text of the cell |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
104 public void widgetDefaultSelected(SelectionEvent e) { |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
105 final Text text = new Text(cursor, DWT.NONE); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
106 TableItem row = cursor.getRow(); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
107 int column = cursor.getColumn(); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
108 text.setText(row.getText(column)); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
109 text.addKeyListener(new class(text, cursor) KeyAdapter { |
100
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
110 Text text; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
111 TableCursor cursor; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
112 this(Text text_, TableCursor cursor_) |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
113 { |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
114 text = text_; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
115 cursor = cursor_; |
102
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
116 } |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
117 public void keyPressed(KeyEvent e) { |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
118 // close the text editor and copy the data over |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
119 // when the user hits "ENTER" |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
120 if (e.character == DWT.CR) { |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
121 TableItem row = cursor.getRow(); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
122 int column = cursor.getColumn(); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
123 row.setText(column, text.getText()); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
124 text.dispose(); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
125 } |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
126 // close the text editor when the user hits "ESC" |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
127 if (e.character == DWT.ESC) { |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
128 text.dispose(); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
129 } |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
130 } |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
131 }); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
132 // close the text editor when the user tabs away |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
133 text.addFocusListener(new class(text) FocusAdapter { |
100
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
134 Text text; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
135 this(Text text_) |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
136 { |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
137 text = text_; |
102
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
138 } |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
139 public void focusLost(FocusEvent e) { |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
140 text.dispose(); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
141 } |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
142 }); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
143 editor.setEditor(text); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
144 text.setFocus(); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
145 } |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
146 }); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
147 // Hide the TableCursor when the user hits the "CTRL" or "SHIFT" key. |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
148 // This alows the user to select multiple items in the table. |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
149 cursor.addKeyListener(new class(cursor) KeyAdapter { |
100
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
150 TableCursor cursor; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
151 this(TableCursor cursor_) |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
152 { |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
153 cursor = cursor_; |
102
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
154 } |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
155 public void keyPressed(KeyEvent e) { |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
156 if (e.keyCode == DWT.CTRL |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
157 || e.keyCode == DWT.SHIFT |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
158 || (e.stateMask & DWT.CONTROL) != 0 |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
159 || (e.stateMask & DWT.SHIFT) != 0) { |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
160 cursor.setVisible(false); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
161 } |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
162 } |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
163 }); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
164 // When the user double clicks in the TableCursor, pop up a text editor so that |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
165 // they can change the text of the cell |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
166 cursor.addMouseListener(new class(cursor, editor) MouseAdapter { |
100
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
167 ControlEditor editor; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
168 TableCursor cursor; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
169 this(TableCursor cursor_, ControlEditor editor_) |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
170 { |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
171 cursor = cursor_; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
172 editor = editor_; |
102
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
173 } |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
174 |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
175 public void mouseDown(MouseEvent e) { |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
176 final Text text = new Text(cursor, DWT.NONE); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
177 TableItem row = cursor.getRow(); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
178 int column = cursor.getColumn(); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
179 text.setText(row.getText(column)); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
180 text.addKeyListener(new class(text, cursor) KeyAdapter { |
100
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
181 Text text; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
182 TableCursor cursor; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
183 this(Text text_, TableCursor cursor_) |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
184 { |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
185 text = text_; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
186 cursor = cursor_; |
102
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
187 } |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
188 public void keyPressed(KeyEvent e) { |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
189 // close the text editor and copy the data over |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
190 // when the user hits "ENTER" |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
191 if (e.character == DWT.CR) { |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
192 TableItem row = cursor.getRow(); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
193 int column = cursor.getColumn(); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
194 row.setText(column, text.getText()); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
195 text.dispose(); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
196 } |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
197 // close the text editor when the user hits "ESC" |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
198 if (e.character == DWT.ESC) { |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
199 text.dispose(); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
200 } |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
201 } |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
202 }); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
203 // close the text editor when the user clicks away |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
204 text.addFocusListener(new class(text) FocusAdapter { |
100
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
205 Text text; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
206 this(Text text_) |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
207 { |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
208 text = text_; |
102
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
209 } |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
210 public void focusLost(FocusEvent e) { |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
211 text.dispose(); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
212 } |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
213 }); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
214 editor.setEditor(text); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
215 text.setFocus(); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
216 } |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
217 }); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
218 |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
219 // Show the TableCursor when the user releases the "SHIFT" or "CTRL" key. |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
220 // This signals the end of the multiple selection task. |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
221 table.addKeyListener(new class(table, cursor) KeyAdapter { |
100
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
222 Table table; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
223 TableCursor cursor; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
224 this(Table table_, TableCursor cursor_) |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
225 { |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
226 table = table_; |
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
227 cursor = cursor_; |
102
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
228 } |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
229 public void keyReleased(KeyEvent e) { |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
230 if (e.keyCode == DWT.CONTROL && (e.stateMask & DWT.SHIFT) != 0) |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
231 return; |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
232 if (e.keyCode == DWT.SHIFT && (e.stateMask & DWT.CONTROL) != 0) |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
233 return; |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
234 if (e.keyCode != DWT.CONTROL |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
235 && (e.stateMask & DWT.CONTROL) != 0) |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
236 return; |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
237 if (e.keyCode != DWT.SHIFT && (e.stateMask & DWT.SHIFT) != 0) |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
238 return; |
100
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
239 |
102
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
240 TableItem[] selection = table.getSelection(); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
241 TableItem row = (selection.length == 0) ? table.getItem(table.getTopIndex()) : selection[0]; |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
242 table.showItem(row); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
243 cursor.setSelection(row, 0); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
244 cursor.setVisible(true); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
245 cursor.setFocus(); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
246 } |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
247 }); |
100
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
248 |
102
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
249 shell.open(); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
250 while (!shell.isDisposed()) { |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
251 if (!display.readAndDispatch()) |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
252 display.sleep(); |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
253 } |
e962e274e6f9
removed tabs and spaces at line end.
Frank Benoit <benoit@tionex.de>
parents:
100
diff
changeset
|
254 display.dispose(); |
100
d06432c0c931
Snippet96, navigate a table cells with arrow keys
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
255 } |