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