Mercurial > projects > dwt-linux
annotate dwt/custom/TableCursor.d @ 238:380bad9f6852
reverted char[] to String
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Mon, 05 May 2008 00:42:55 +0200 |
parents | f2e04420fd6c |
children | ce446666f5a2 |
rev | line source |
---|---|
115
52b32f5cb1e0
many file checked for switch default
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
1 /******************************************************************************* |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2 * Copyright (c) 2000, 2007 IBM Corporation and others. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3 * All rights reserved. This program and the accompanying materials |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4 * are made available under the terms of the Eclipse Public License v1.0 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5 * which accompanies this distribution, and is available at |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6 * http://www.eclipse.org/legal/epl-v10.html |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8 * Contributors: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
9 * IBM Corporation - initial API and implementation |
108 | 10 * Port to the D programming language: |
11 * Frank Benoit <benoit@tionex.de> | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
12 *******************************************************************************/ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
13 module dwt.custom.TableCursor; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
14 |
238 | 15 import dwt.dwthelper.utils; |
16 | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
17 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
18 import dwt.DWT; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
19 import dwt.DWTException; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
20 import dwt.events.SelectionEvent; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
21 import dwt.events.SelectionListener; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
22 import dwt.graphics.Color; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
23 import dwt.graphics.GC; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
24 import dwt.graphics.Image; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
25 import dwt.graphics.Point; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
26 import dwt.graphics.Rectangle; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
27 import dwt.widgets.Canvas; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
28 import dwt.widgets.Display; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
29 import dwt.widgets.Event; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
30 import dwt.widgets.Listener; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
31 import dwt.widgets.ScrollBar; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
32 import dwt.widgets.Table; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
33 import dwt.widgets.TableColumn; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
34 import dwt.widgets.TableItem; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
35 import dwt.widgets.TypedListener; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
36 import dwt.widgets.Widget; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
37 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
38 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
39 * A TableCursor provides a way for the user to navigate around a Table |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
40 * using the keyboard. It also provides a mechanism for selecting an |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
41 * individual cell in a table. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
42 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
43 * <p> Here is an example of using a TableCursor to navigate to a cell and then edit it. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
44 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
45 * <code><pre> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
46 * public static void main(String[] args) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
47 * Display display = new Display(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
48 * Shell shell = new Shell(display); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
49 * shell.setLayout(new GridLayout()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
50 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
51 * // create a a table with 3 columns and fill with data |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
52 * final Table table = new Table(shell, DWT.BORDER | DWT.MULTI | DWT.FULL_SELECTION); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
53 * table.setLayoutData(new GridData(GridData.FILL_BOTH)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
54 * TableColumn column1 = new TableColumn(table, DWT.NONE); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
55 * TableColumn column2 = new TableColumn(table, DWT.NONE); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
56 * TableColumn column3 = new TableColumn(table, DWT.NONE); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
57 * for (int i = 0; i < 100; i++) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
58 * TableItem item = new TableItem(table, DWT.NONE); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
59 * item.setText(new String[] { "cell "+i+" 0", "cell "+i+" 1", "cell "+i+" 2"}); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
60 * } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
61 * column1.pack(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
62 * column2.pack(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
63 * column3.pack(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
64 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
65 * // create a TableCursor to navigate around the table |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
66 * final TableCursor cursor = new TableCursor(table, DWT.NONE); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
67 * // create an editor to edit the cell when the user hits "ENTER" |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
68 * // while over a cell in the table |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
69 * final ControlEditor editor = new ControlEditor(cursor); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
70 * editor.grabHorizontal = true; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
71 * editor.grabVertical = true; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
72 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
73 * cursor.addSelectionListener(new SelectionAdapter() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
74 * // when the TableEditor is over a cell, select the corresponding row in |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
75 * // the table |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
76 * public void widgetSelected(SelectionEvent e) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
77 * table.setSelection(new TableItem[] {cursor.getRow()}); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
78 * } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
79 * // when the user hits "ENTER" in the TableCursor, pop up a text editor so that |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
80 * // they can change the text of the cell |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
81 * public void widgetDefaultSelected(SelectionEvent e){ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
82 * final Text text = new Text(cursor, DWT.NONE); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
83 * TableItem row = cursor.getRow(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
84 * int column = cursor.getColumn(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
85 * text.setText(row.getText(column)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
86 * text.addKeyListener(new KeyAdapter() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
87 * public void keyPressed(KeyEvent e) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
88 * // close the text editor and copy the data over |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
89 * // when the user hits "ENTER" |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
90 * if (e.character is DWT.CR) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
91 * TableItem row = cursor.getRow(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
92 * int column = cursor.getColumn(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
93 * row.setText(column, text.getText()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
94 * text.dispose(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
95 * } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
96 * // close the text editor when the user hits "ESC" |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
97 * if (e.character is DWT.ESC) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
98 * text.dispose(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
99 * } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
100 * } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
101 * }); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
102 * editor.setEditor(text); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
103 * text.setFocus(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
104 * } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
105 * }); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
106 * // Hide the TableCursor when the user hits the "MOD1" or "MOD2" key. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
107 * // This allows the user to select multiple items in the table. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
108 * cursor.addKeyListener(new KeyAdapter() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
109 * public void keyPressed(KeyEvent e) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
110 * if (e.keyCode is DWT.MOD1 || |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
111 * e.keyCode is DWT.MOD2 || |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
112 * (e.stateMask & DWT.MOD1) !is 0 || |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
113 * (e.stateMask & DWT.MOD2) !is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
114 * cursor.setVisible(false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
115 * } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
116 * } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
117 * }); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
118 * // Show the TableCursor when the user releases the "MOD2" or "MOD1" key. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
119 * // This signals the end of the multiple selection task. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
120 * table.addKeyListener(new KeyAdapter() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
121 * public void keyReleased(KeyEvent e) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
122 * if (e.keyCode is DWT.MOD1 && (e.stateMask & DWT.MOD2) !is 0) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
123 * if (e.keyCode is DWT.MOD2 && (e.stateMask & DWT.MOD1) !is 0) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
124 * if (e.keyCode !is DWT.MOD1 && (e.stateMask & DWT.MOD1) !is 0) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
125 * if (e.keyCode !is DWT.MOD2 && (e.stateMask & DWT.MOD2) !is 0) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
126 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
127 * TableItem[] selection = table.getSelection(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
128 * TableItem row = (selection.length is 0) ? table.getItem(table.getTopIndex()) : selection[0]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
129 * table.showItem(row); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
130 * cursor.setSelection(row, 0); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
131 * cursor.setVisible(true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
132 * cursor.setFocus(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
133 * } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
134 * }); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
135 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
136 * shell.open(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
137 * while (!shell.isDisposed()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
138 * if (!display.readAndDispatch()) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
139 * display.sleep(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
140 * } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
141 * display.dispose(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
142 * } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
143 * </pre></code> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
144 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
145 * <dl> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
146 * <dt><b>Styles:</b></dt> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
147 * <dd>BORDER</dd> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
148 * <dt><b>Events:</b></dt> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
149 * <dd>Selection, DefaultSelection</dd> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
150 * </dl> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
151 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
152 * @since 2.0 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
153 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
154 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
155 public class TableCursor : Canvas { |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
115
diff
changeset
|
156 |
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
115
diff
changeset
|
157 alias Canvas.dispose dispose; |
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
115
diff
changeset
|
158 |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
159 Table table; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
160 TableItem row = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
161 TableColumn column = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
162 Listener tableListener, resizeListener, disposeItemListener, disposeColumnListener; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
163 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
164 // By default, invert the list selection colors |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
165 static final int BACKGROUND = DWT.COLOR_LIST_SELECTION_TEXT; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
166 static final int FOREGROUND = DWT.COLOR_LIST_SELECTION; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
167 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
168 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
169 * Constructs a new instance of this class given its parent |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
170 * table and a style value describing its behavior and appearance. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
171 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
172 * The style value is either one of the style constants defined in |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
173 * class <code>DWT</code> which is applicable to instances of this |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
174 * class, or must be built by <em>bitwise OR</em>'ing together |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
175 * (that is, using the <code>int</code> "|" operator) two or more |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
176 * of those <code>DWT</code> style constants. The class description |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
177 * lists the style constants that are applicable to the class. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
178 * Style bits are also inherited from superclasses. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
179 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
180 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
181 * @param parent a Table control which will be the parent of the new instance (cannot be null) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
182 * @param style the style of control to construct |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
183 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
184 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
185 * <li>ERROR_NULL_ARGUMENT - if the parent is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
186 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
187 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
188 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
189 * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
190 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
191 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
192 * @see DWT#BORDER |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
193 * @see Widget#checkSubclass() |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
194 * @see Widget#getStyle() |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
195 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
196 public this(Table parent, int style) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
197 super(parent, style); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
198 table = parent; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
199 setBackground(null); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
200 setForeground(null); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
201 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
202 Listener listener = new class() Listener { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
203 public void handleEvent(Event event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
204 switch (event.type) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
205 case DWT.Dispose : |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
206 dispose(event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
207 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
208 case DWT.FocusIn : |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
209 case DWT.FocusOut : |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
210 redraw(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
211 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
212 case DWT.KeyDown : |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
213 keyDown(event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
214 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
215 case DWT.Paint : |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
216 paint(event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
217 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
218 case DWT.Traverse : { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
219 event.doit = true; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
220 switch (event.detail) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
221 case DWT.TRAVERSE_ARROW_NEXT : |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
222 case DWT.TRAVERSE_ARROW_PREVIOUS : |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
223 case DWT.TRAVERSE_RETURN : |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
224 event.doit = false; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
225 break; |
115
52b32f5cb1e0
many file checked for switch default
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
226 default: |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
227 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
228 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
229 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
230 default: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
231 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
232 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
233 }; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
234 int[] events = [DWT.Dispose, DWT.FocusIn, DWT.FocusOut, DWT.KeyDown, DWT.Paint, DWT.Traverse]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
235 for (int i = 0; i < events.length; i++) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
236 addListener(events[i], listener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
237 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
238 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
239 tableListener = new class() Listener { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
240 public void handleEvent(Event event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
241 switch (event.type) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
242 case DWT.MouseDown : |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
243 tableMouseDown(event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
244 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
245 case DWT.FocusIn : |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
246 tableFocusIn(event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
247 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
248 default: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
249 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
250 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
251 }; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
252 table.addListener(DWT.FocusIn, tableListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
253 table.addListener(DWT.MouseDown, tableListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
254 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
255 disposeItemListener = new class() Listener { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
256 public void handleEvent(Event event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
257 row = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
258 column = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
259 _resize(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
260 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
261 }; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
262 disposeColumnListener = new class() Listener { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
263 public void handleEvent(Event event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
264 row = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
265 column = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
266 _resize(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
267 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
268 }; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
269 resizeListener = new class() Listener { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
270 public void handleEvent(Event event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
271 _resize(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
272 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
273 }; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
274 ScrollBar hBar = table.getHorizontalBar(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
275 if (hBar !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
276 hBar.addListener(DWT.Selection, resizeListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
277 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
278 ScrollBar vBar = table.getVerticalBar(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
279 if (vBar !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
280 vBar.addListener(DWT.Selection, resizeListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
281 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
282 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
283 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
284 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
285 * Adds the listener to the collection of listeners who will |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
286 * be notified when the user changes the receiver's selection, by sending |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
287 * it one of the messages defined in the <code>SelectionListener</code> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
288 * interface. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
289 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
290 * When <code>widgetSelected</code> is called, the item field of the event object is valid. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
291 * If the receiver has <code>DWT.CHECK</code> style set and the check selection changes, |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
292 * the event object detail field contains the value <code>DWT.CHECK</code>. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
293 * <code>widgetDefaultSelected</code> is typically called when an item is double-clicked. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
294 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
295 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
296 * @param listener the listener which should be notified when the user changes the receiver's selection |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
297 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
298 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
299 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
300 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
301 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
302 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
303 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
304 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
305 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
306 * @see SelectionListener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
307 * @see SelectionEvent |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
308 * @see #removeSelectionListener(SelectionListener) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
309 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
310 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
311 public void addSelectionListener(SelectionListener listener) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
312 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
313 if (listener is null) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
314 DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
315 TypedListener typedListener = new TypedListener(listener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
316 addListener(DWT.Selection, typedListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
317 addListener(DWT.DefaultSelection, typedListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
318 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
319 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
320 void dispose(Event event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
321 table.removeListener(DWT.FocusIn, tableListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
322 table.removeListener(DWT.MouseDown, tableListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
323 if (column !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
324 column.removeListener(DWT.Dispose, disposeColumnListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
325 column.removeListener(DWT.Move, resizeListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
326 column.removeListener(DWT.Resize, resizeListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
327 column = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
328 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
329 if (row !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
330 row.removeListener(DWT.Dispose, disposeItemListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
331 row = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
332 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
333 ScrollBar hBar = table.getHorizontalBar(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
334 if (hBar !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
335 hBar.removeListener(DWT.Selection, resizeListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
336 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
337 ScrollBar vBar = table.getVerticalBar(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
338 if (vBar !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
339 vBar.removeListener(DWT.Selection, resizeListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
340 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
341 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
342 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
343 void keyDown(Event event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
344 if (row is null) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
345 switch (event.character) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
346 case DWT.CR : |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
347 notifyListeners(DWT.DefaultSelection, new Event()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
348 return; |
115
52b32f5cb1e0
many file checked for switch default
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
349 default: |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
350 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
351 int rowIndex = table.indexOf(row); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
352 int columnIndex = column is null ? 0 : table.indexOf(column); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
353 switch (event.keyCode) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
354 case DWT.ARROW_UP : |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
355 setRowColumn(Math.max(0, rowIndex - 1), columnIndex, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
356 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
357 case DWT.ARROW_DOWN : |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
358 setRowColumn(Math.min(rowIndex + 1, table.getItemCount() - 1), columnIndex, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
359 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
360 case DWT.ARROW_LEFT : |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
361 case DWT.ARROW_RIGHT : |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
362 { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
363 int columnCount = table.getColumnCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
364 if (columnCount is 0) break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
365 int[] order = table.getColumnOrder(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
366 int index = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
367 while (index < order.length) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
368 if (order[index] is columnIndex) break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
369 index++; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
370 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
371 if (index is order.length) index = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
372 int leadKey = (getStyle() & DWT.RIGHT_TO_LEFT) !is 0 ? DWT.ARROW_RIGHT : DWT.ARROW_LEFT; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
373 if (event.keyCode is leadKey) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
374 setRowColumn(rowIndex, order[Math.max(0, index - 1)], true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
375 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
376 setRowColumn(rowIndex, order[Math.min(columnCount - 1, index + 1)], true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
377 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
378 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
379 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
380 case DWT.HOME : |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
381 setRowColumn(0, columnIndex, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
382 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
383 case DWT.END : |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
384 { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
385 int i = table.getItemCount() - 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
386 setRowColumn(i, columnIndex, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
387 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
388 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
389 case DWT.PAGE_UP : |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
390 { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
391 int index = table.getTopIndex(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
392 if (index is rowIndex) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
393 Rectangle rect = table.getClientArea(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
394 TableItem item = table.getItem(index); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
395 Rectangle itemRect = item.getBounds(0); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
396 rect.height -= itemRect.y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
397 int height = table.getItemHeight(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
398 int page = Math.max(1, rect.height / height); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
399 index = Math.max(0, index - page + 1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
400 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
401 setRowColumn(index, columnIndex, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
402 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
403 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
404 case DWT.PAGE_DOWN : |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
405 { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
406 int index = table.getTopIndex(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
407 Rectangle rect = table.getClientArea(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
408 TableItem item = table.getItem(index); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
409 Rectangle itemRect = item.getBounds(0); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
410 rect.height -= itemRect.y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
411 int height = table.getItemHeight(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
412 int page = Math.max(1, rect.height / height); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
413 int end = table.getItemCount() - 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
414 index = Math.min(end, index + page - 1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
415 if (index is rowIndex) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
416 index = Math.min(end, index + page - 1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
417 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
418 setRowColumn(index, columnIndex, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
419 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
420 } |
115
52b32f5cb1e0
many file checked for switch default
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
421 default: |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
422 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
423 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
424 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
425 void paint(Event event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
426 if (row is null) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
427 int columnIndex = column is null ? 0 : table.indexOf(column); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
428 GC gc = event.gc; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
429 Display display = getDisplay(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
430 gc.setBackground(getBackground()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
431 gc.setForeground(getForeground()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
432 gc.fillRectangle(event.x, event.y, event.width, event.height); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
433 int x = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
434 Point size = getSize(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
435 Image image = row.getImage(columnIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
436 if (image !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
437 Rectangle imageSize = image.getBounds(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
438 int imageY = (size.y - imageSize.height) / 2; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
439 gc.drawImage(image, x, imageY); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
440 x += imageSize.width; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
441 } |
238 | 442 String text = row.getText(columnIndex); |
103 | 443 if (text.length > 0) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
444 Rectangle bounds = row.getBounds(columnIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
445 Point extent = gc.stringExtent(text); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
446 // Temporary code - need a better way to determine table trim |
238 | 447 String platform = DWT.getPlatform(); |
103 | 448 if ("win32"==platform) { //$NON-NLS-1$ |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
449 if (table.getColumnCount() is 0 || columnIndex is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
450 x += 2; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
451 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
452 int alignmnent = column.getAlignment(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
453 switch (alignmnent) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
454 case DWT.LEFT: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
455 x += 6; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
456 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
457 case DWT.RIGHT: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
458 x = bounds.width - extent.x - 6; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
459 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
460 case DWT.CENTER: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
461 x += (bounds.width - x - extent.x) / 2; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
462 break; |
115
52b32f5cb1e0
many file checked for switch default
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
463 default: |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
464 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
465 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
466 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
467 if (table.getColumnCount() is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
468 x += 5; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
469 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
470 int alignmnent = column.getAlignment(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
471 switch (alignmnent) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
472 case DWT.LEFT: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
473 x += 5; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
474 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
475 case DWT.RIGHT: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
476 x = bounds.width- extent.x - 2; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
477 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
478 case DWT.CENTER: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
479 x += (bounds.width - x - extent.x) / 2 + 2; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
480 break; |
115
52b32f5cb1e0
many file checked for switch default
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
481 default: |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
482 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
483 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
484 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
485 int textY = (size.y - extent.y) / 2; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
486 gc.drawString(text, x, textY); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
487 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
488 if (isFocusControl()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
489 gc.setBackground(display.getSystemColor(DWT.COLOR_BLACK)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
490 gc.setForeground(display.getSystemColor(DWT.COLOR_WHITE)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
491 gc.drawFocus(0, 0, size.x, size.y); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
492 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
493 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
494 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
495 void tableFocusIn(Event event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
496 if (isDisposed()) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
497 return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
498 if (isVisible()) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
499 setFocus(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
500 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
501 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
502 void tableMouseDown(Event event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
503 if (isDisposed() || !isVisible()) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
504 Point pt = new Point(event.x, event.y); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
505 int lineWidth = table.getLinesVisible() ? table.getGridLineWidth() : 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
506 TableItem item = table.getItem(pt); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
507 if ((table.getStyle() & DWT.FULL_SELECTION) !is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
508 if (item is null) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
509 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
510 int start = item !is null ? table.indexOf(item) : table.getTopIndex(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
511 int end = table.getItemCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
512 Rectangle clientRect = table.getClientArea(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
513 for (int i = start; i < end; i++) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
514 TableItem nextItem = table.getItem(i); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
515 Rectangle rect = nextItem.getBounds(0); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
516 if (pt.y >= rect.y && pt.y < rect.y + rect.height + lineWidth) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
517 item = nextItem; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
518 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
519 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
520 if (rect.y > clientRect.y + clientRect.height) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
521 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
522 if (item is null) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
523 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
524 TableColumn newColumn = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
525 int columnCount = table.getColumnCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
526 if (columnCount > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
527 for (int i = 0; i < columnCount; i++) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
528 Rectangle rect = item.getBounds(i); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
529 rect.width += lineWidth; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
530 rect.height += lineWidth; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
531 if (rect.contains(pt)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
532 newColumn = table.getColumn(i); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
533 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
534 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
535 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
536 if (newColumn is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
537 newColumn = table.getColumn(0); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
538 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
539 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
540 setRowColumn(item, newColumn, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
541 setFocus(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
542 return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
543 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
544 void setRowColumn(int row, int column, bool notify) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
545 TableItem item = row is -1 ? null : table.getItem(row); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
546 TableColumn col = column is -1 || table.getColumnCount() is 0 ? null : table.getColumn(column); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
547 setRowColumn(item, col, notify); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
548 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
549 void setRowColumn(TableItem row, TableColumn column, bool notify) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
550 if (this.row is row && this.column is column) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
551 return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
552 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
553 if (this.row !is null && this.row !is row) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
554 this.row.removeListener(DWT.Dispose, disposeItemListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
555 this.row = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
556 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
557 if (this.column !is null && this.column !is column) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
558 this.column.removeListener(DWT.Dispose, disposeColumnListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
559 this.column.removeListener(DWT.Move, resizeListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
560 this.column.removeListener(DWT.Resize, resizeListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
561 this.column = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
562 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
563 if (row !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
564 if (this.row !is row) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
565 this.row = row; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
566 row.addListener(DWT.Dispose, disposeItemListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
567 table.showItem(row); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
568 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
569 if (this.column !is column && column !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
570 this.column = column; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
571 column.addListener(DWT.Dispose, disposeColumnListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
572 column.addListener(DWT.Move, resizeListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
573 column.addListener(DWT.Resize, resizeListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
574 table.showColumn(column); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
575 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
576 int columnIndex = column is null ? 0 : table.indexOf(column); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
577 setBounds(row.getBounds(columnIndex)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
578 redraw(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
579 if (notify) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
580 notifyListeners(DWT.Selection, new Event()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
581 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
582 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
583 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
584 |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
115
diff
changeset
|
585 public override void setVisible(bool visible) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
586 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
587 if (visible) _resize(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
588 super.setVisible(visible); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
589 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
590 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
591 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
592 * Removes the listener from the collection of listeners who will |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
593 * be notified when the user changes the receiver's selection. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
594 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
595 * @param listener the listener which should no longer be notified |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
596 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
597 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
598 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
599 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
600 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
601 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
602 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
603 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
604 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
605 * @see SelectionListener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
606 * @see #addSelectionListener(SelectionListener) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
607 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
608 * @since 3.0 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
609 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
610 public void removeSelectionListener(SelectionListener listener) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
611 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
612 if (listener is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
613 DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
614 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
615 removeListener(DWT.Selection, listener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
616 removeListener(DWT.DefaultSelection, listener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
617 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
618 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
619 void _resize() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
620 if (row is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
621 setBounds(-200, -200, 0, 0); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
622 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
623 int columnIndex = column is null ? 0 : table.indexOf(column); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
624 setBounds(row.getBounds(columnIndex)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
625 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
626 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
627 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
628 * Returns the column over which the TableCursor is positioned. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
629 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
630 * @return the column for the current position |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
631 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
632 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
633 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
634 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
635 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
636 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
637 public int getColumn() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
638 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
639 return column is null ? 0 : table.indexOf(column); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
640 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
641 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
642 * Returns the row over which the TableCursor is positioned. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
643 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
644 * @return the item for the current position |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
645 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
646 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
647 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
648 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
649 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
650 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
651 public TableItem getRow() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
652 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
653 return row; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
654 } |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
115
diff
changeset
|
655 public override void setBackground (Color color) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
656 if (color is null) color = getDisplay().getSystemColor(BACKGROUND); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
657 super.setBackground(color); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
658 redraw(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
659 } |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
115
diff
changeset
|
660 public override void setForeground (Color color) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
661 if (color is null) color = getDisplay().getSystemColor(FOREGROUND); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
662 super.setForeground(color); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
663 redraw(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
664 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
665 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
666 * Positions the TableCursor over the cell at the given row and column in the parent table. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
667 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
668 * @param row the index of the row for the cell to select |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
669 * @param column the index of column for the cell to select |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
670 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
671 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
672 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
673 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
674 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
675 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
676 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
677 public void setSelection(int row, int column) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
678 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
679 int columnCount = table.getColumnCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
680 int maxColumnIndex = columnCount is 0 ? 0 : columnCount - 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
681 if (row < 0 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
682 || row >= table.getItemCount() |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
683 || column < 0 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
684 || column > maxColumnIndex) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
685 DWT.error(DWT.ERROR_INVALID_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
686 setRowColumn(row, column, false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
687 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
688 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
689 * Positions the TableCursor over the cell at the given row and column in the parent table. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
690 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
691 * @param row the TableItem of the row for the cell to select |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
692 * @param column the index of column for the cell to select |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
693 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
694 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
695 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
696 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
697 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
698 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
699 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
700 public void setSelection(TableItem row, int column) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
701 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
702 int columnCount = table.getColumnCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
703 int maxColumnIndex = columnCount is 0 ? 0 : columnCount - 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
704 if (row is null |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
705 || row.isDisposed() |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
706 || column < 0 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
707 || column > maxColumnIndex) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
708 DWT.error(DWT.ERROR_INVALID_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
709 setRowColumn(table.indexOf(row), column, false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
710 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
711 } |