Mercurial > projects > dwt-addons
annotate dwtx/jface/viewers/TableViewerRow.d @ 90:7ffeace6c47f
Update 3.4M7 to 3.4
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sun, 06 Jul 2008 23:30:07 +0200 |
parents | 46a6e0e6ccd4 |
children |
rev | line source |
---|---|
10 | 1 /******************************************************************************* |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
2 * Copyright (c) 2006, 2008 IBM Corporation and others. |
10 | 3 * All rights reserved. This program and the accompanying materials |
4 * are made available under the terms of the Eclipse Public License v1.0 | |
5 * which accompanies this distribution, and is available at | |
6 * http://www.eclipse.org/legal/epl-v10.html | |
7 * | |
8 * Contributors: | |
9 * IBM Corporation - initial API and implementation | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
10 * Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation |
90 | 11 * - fix in bug: 174355,195908,198035,215069,227421 |
10 | 12 * Port to the D programming language: |
13 * Frank Benoit <benoit@tionex.de> | |
14 *******************************************************************************/ | |
15 | |
16 module dwtx.jface.viewers.TableViewerRow; | |
17 | |
18 import dwtx.jface.viewers.ViewerRow; | |
19 import dwtx.jface.viewers.TreePath; | |
20 | |
21 import dwt.graphics.Color; | |
22 import dwt.graphics.Font; | |
23 import dwt.graphics.Image; | |
24 import dwt.graphics.Rectangle; | |
25 import dwt.widgets.Control; | |
26 import dwt.widgets.TableItem; | |
27 import dwt.widgets.Widget; | |
28 | |
29 import dwt.dwthelper.utils; | |
30 | |
31 /** | |
32 * TableViewerRow is the Table specific implementation of ViewerRow | |
33 * @since 3.3 | |
34 * | |
35 */ | |
36 public class TableViewerRow : ViewerRow { | |
37 private TableItem item; | |
38 | |
39 /** | |
40 * Create a new instance of the receiver from item. | |
41 * @param item | |
42 */ | |
43 this(TableItem item) { | |
44 this.item = item; | |
45 } | |
46 | |
47 /* (non-Javadoc) | |
48 * @see dwtx.jface.viewers.ViewerRow#getBounds(int) | |
49 */ | |
43
ea8ff534f622
Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents:
10
diff
changeset
|
50 public override Rectangle getBounds(int columnIndex) { |
10 | 51 return item.getBounds(columnIndex); |
52 } | |
53 | |
54 /* (non-Javadoc) | |
55 * @see dwtx.jface.viewers.ViewerRow#getBounds() | |
56 */ | |
43
ea8ff534f622
Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents:
10
diff
changeset
|
57 public override Rectangle getBounds() { |
10 | 58 return item.getBounds(); |
59 } | |
60 | |
61 /* (non-Javadoc) | |
62 * @see dwtx.jface.viewers.ViewerRow#getItem() | |
63 */ | |
64 public Widget getItem() { | |
65 return item; | |
66 } | |
67 | |
68 void setItem(TableItem item) { | |
69 this.item = item; | |
70 } | |
71 | |
72 /* (non-Javadoc) | |
73 * @see dwtx.jface.viewers.ViewerRow#getColumnCount() | |
74 */ | |
43
ea8ff534f622
Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents:
10
diff
changeset
|
75 public override int getColumnCount() { |
10 | 76 return item.getParent().getColumnCount(); |
77 } | |
78 | |
79 /* (non-Javadoc) | |
80 * @see dwtx.jface.viewers.ViewerRow#getBackground(int) | |
81 */ | |
43
ea8ff534f622
Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents:
10
diff
changeset
|
82 public override Color getBackground(int columnIndex) { |
10 | 83 return item.getBackground(columnIndex); |
84 } | |
85 | |
86 /* (non-Javadoc) | |
87 * @see dwtx.jface.viewers.ViewerRow#getFont(int) | |
88 */ | |
43
ea8ff534f622
Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents:
10
diff
changeset
|
89 public override Font getFont(int columnIndex) { |
10 | 90 return item.getFont(columnIndex); |
91 } | |
92 | |
93 /* (non-Javadoc) | |
94 * @see dwtx.jface.viewers.ViewerRow#getForeground(int) | |
95 */ | |
43
ea8ff534f622
Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents:
10
diff
changeset
|
96 public override Color getForeground(int columnIndex) { |
10 | 97 return item.getForeground(columnIndex); |
98 } | |
99 | |
100 /* (non-Javadoc) | |
101 * @see dwtx.jface.viewers.ViewerRow#getImage(int) | |
102 */ | |
43
ea8ff534f622
Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents:
10
diff
changeset
|
103 public override Image getImage(int columnIndex) { |
10 | 104 return item.getImage(columnIndex); |
105 } | |
106 | |
107 /* (non-Javadoc) | |
108 * @see dwtx.jface.viewers.ViewerRow#getText(int) | |
109 */ | |
43
ea8ff534f622
Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents:
10
diff
changeset
|
110 public override String getText(int columnIndex) { |
10 | 111 return item.getText(columnIndex); |
112 } | |
113 | |
114 /* (non-Javadoc) | |
115 * @see dwtx.jface.viewers.ViewerRow#setBackground(int, dwt.graphics.Color) | |
116 */ | |
43
ea8ff534f622
Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents:
10
diff
changeset
|
117 public override void setBackground(int columnIndex, Color color) { |
10 | 118 item.setBackground(columnIndex, color); |
119 } | |
120 | |
121 /* (non-Javadoc) | |
122 * @see dwtx.jface.viewers.ViewerRow#setFont(int, dwt.graphics.Font) | |
123 */ | |
43
ea8ff534f622
Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents:
10
diff
changeset
|
124 public override void setFont(int columnIndex, Font font) { |
10 | 125 item.setFont(columnIndex, font); |
126 } | |
127 | |
128 /* (non-Javadoc) | |
129 * @see dwtx.jface.viewers.ViewerRow#setForeground(int, dwt.graphics.Color) | |
130 */ | |
43
ea8ff534f622
Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents:
10
diff
changeset
|
131 public override void setForeground(int columnIndex, Color color) { |
10 | 132 item.setForeground(columnIndex, color); |
133 } | |
134 | |
135 /* (non-Javadoc) | |
136 * @see dwtx.jface.viewers.ViewerRow#setImage(int, dwt.graphics.Image) | |
137 */ | |
43
ea8ff534f622
Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents:
10
diff
changeset
|
138 public override void setImage(int columnIndex, Image image) { |
10 | 139 Image oldImage = item.getImage(columnIndex); |
140 if (oldImage !is image) { | |
141 item.setImage(columnIndex,image); | |
142 } | |
143 } | |
144 | |
145 /* (non-Javadoc) | |
146 * @see dwtx.jface.viewers.ViewerRow#setText(int, java.lang.String) | |
147 */ | |
43
ea8ff534f622
Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents:
10
diff
changeset
|
148 public override void setText(int columnIndex, String text) { |
10 | 149 item.setText(columnIndex, text is null ? "" : text); //$NON-NLS-1$ |
150 } | |
151 | |
152 /* (non-Javadoc) | |
153 * @see dwtx.jface.viewers.ViewerRow#getControl() | |
154 */ | |
43
ea8ff534f622
Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents:
10
diff
changeset
|
155 public override Control getControl() { |
10 | 156 return item.getParent(); |
157 } | |
158 | |
43
ea8ff534f622
Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents:
10
diff
changeset
|
159 public override ViewerRow getNeighbor(int direction, bool sameLevel) { |
10 | 160 if( direction is ViewerRow.ABOVE ) { |
161 return getRowAbove(); | |
162 } else if( direction is ViewerRow.BELOW ) { | |
163 return getRowBelow(); | |
164 } else { | |
165 throw new IllegalArgumentException("Illegal value of direction argument."); //$NON-NLS-1$ | |
166 } | |
167 } | |
168 | |
169 | |
170 private ViewerRow getRowAbove() { | |
171 int index = item.getParent().indexOf(item) - 1; | |
172 | |
173 if( index >= 0 ) { | |
174 return new TableViewerRow(item.getParent().getItem(index)); | |
175 } | |
176 | |
177 return null; | |
178 } | |
179 | |
180 private ViewerRow getRowBelow() { | |
181 int index = item.getParent().indexOf(item) + 1; | |
182 | |
183 if( index < item.getParent().getItemCount() ) { | |
184 TableItem tmp = item.getParent().getItem(index); | |
185 //TODO NULL can happen in case of VIRTUAL => How do we deal with that | |
186 if( tmp !is null ) { | |
187 return new TableViewerRow(tmp); | |
188 } | |
189 } | |
190 | |
191 return null; | |
192 } | |
193 | |
43
ea8ff534f622
Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents:
10
diff
changeset
|
194 public override TreePath getTreePath() { |
10 | 195 return new TreePath([item.getData()]); |
196 } | |
197 | |
43
ea8ff534f622
Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents:
10
diff
changeset
|
198 public override Object clone() { |
10 | 199 return new TableViewerRow(item); |
200 } | |
201 | |
43
ea8ff534f622
Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents:
10
diff
changeset
|
202 public override Object getElement() { |
10 | 203 return item.getData(); |
204 } | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
205 |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
206 public int getVisualIndex(int creationIndex) { |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
207 int[] order = item.getParent().getColumnOrder(); |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
208 |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
209 for (int i = 0; i < order.length; i++) { |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
210 if (order[i] is creationIndex) { |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
211 return i; |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
212 } |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
213 } |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
214 |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
215 return super.getVisualIndex(creationIndex); |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
216 } |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
217 |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
218 public int getCreationIndex(int visualIndex) { |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
219 if( item !is null && ! item.isDisposed() && hasColumns() && isValidOrderIndex(visualIndex) ) { |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
220 return item.getParent().getColumnOrder()[visualIndex]; |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
221 } |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
222 return super.getCreationIndex(visualIndex); |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
223 } |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
224 |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
225 /* (non-Javadoc) |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
226 * @see dwtx.jface.viewers.ViewerRow#getTextBounds(int) |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
227 */ |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
228 public Rectangle getTextBounds(int index) { |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
229 return item.getTextBounds(index); |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
230 } |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
231 |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
232 /* (non-Javadoc) |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
233 * @see dwtx.jface.viewers.ViewerRow#getImageBounds(int) |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
234 */ |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
235 public Rectangle getImageBounds(int index) { |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
236 return item.getImageBounds(index); |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
237 } |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
238 |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
239 private bool hasColumns() { |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
240 return this.item.getParent().getColumnCount() !is 0; |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
241 } |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
242 |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
243 private bool isValidOrderIndex(int currentIndex) { |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
244 return currentIndex < this.item.getParent().getColumnOrder().length; |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
245 } |
90 | 246 |
247 int getWidth(int columnIndex) { | |
248 return item.getParent().getColumn(columnIndex).getWidth(); | |
249 } | |
10 | 250 } |