author | Claus Gittinger <cg@exept.de> |
Fri, 24 Sep 1999 14:51:23 +0200 | |
changeset 1558 | 00b34d71898a |
parent 1526 | a5dbe699323f |
child 1559 | 1e7f30057e22 |
permissions | -rw-r--r-- |
542 | 1 |
" |
2 |
COPYRIGHT (c) 1997 by Claus Gittinger / eXept Software AG |
|
3 |
All Rights Reserved |
|
4 |
||
5 |
This software is furnished under a license and may be used |
|
6 |
only in accordance with the terms of that license and with the |
|
7 |
inclusion of the above copyright notice. This software may not |
|
8 |
be provided or otherwise made available to, or used by, any |
|
9 |
other person. No title to or ownership of the software is |
|
10 |
hereby transferred. |
|
11 |
" |
|
12 |
||
13 |
||
14 |
||
15 |
||
16 |
Object subclass:#DataSetColumn |
|
1484 | 17 |
instanceVariableNames:'columnNumber dataSet width description buttonExtent shownValue |
18 |
rendererType backgroundColor rowSeparatorSelector |
|
19 |
showColSeparator showRowSeparator foregroundColor fgSelector |
|
1496 | 20 |
bgSelector columnAlignment label readSelector containsText |
1490 | 21 |
numArgsToReadSelector columnAdaptor descWidth descMinWidth' |
607 | 22 |
classVariableNames:'' |
542 | 23 |
poolDictionaries:'' |
24 |
category:'Views-DataSet' |
|
25 |
! |
|
26 |
||
27 |
!DataSetColumn class methodsFor:'documentation'! |
|
28 |
||
29 |
copyright |
|
30 |
" |
|
31 |
COPYRIGHT (c) 1997 by Claus Gittinger / eXept Software AG |
|
32 |
All Rights Reserved |
|
33 |
||
34 |
This software is furnished under a license and may be used |
|
35 |
only in accordance with the terms of that license and with the |
|
36 |
inclusion of the above copyright notice. This software may not |
|
37 |
be provided or otherwise made available to, or used by, any |
|
38 |
other person. No title to or ownership of the software is |
|
39 |
hereby transferred. |
|
40 |
" |
|
41 |
||
42 |
||
43 |
||
44 |
! |
|
45 |
||
46 |
documentation |
|
47 |
" |
|
48 |
represent one single column description of a DataSetView |
|
49 |
||
50 |
[Instance variables:] |
|
51 |
||
647 | 52 |
columnNumber <Integer> sequence number (into list of columns) |
1007
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
53 |
|
542 | 54 |
dataSet <DSVColumnView> the view it belongs to |
1007
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
55 |
|
1088 | 56 |
width <Integer> width of column |
1007
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
57 |
|
1088 | 58 |
description <DataSetColumnSpec> the column description |
1007
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
59 |
|
1088 | 60 |
buttonExtent <Point> extent of drawable form |
1007
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
61 |
|
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
62 |
rendererType <Type> renderer type (cached value from |
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
63 |
the column specification). |
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
64 |
|
647 | 65 |
backgroundColor <Color or nil> background color of all cells or nil |
66 |
(nil: use default background color). |
|
1007
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
67 |
|
647 | 68 |
foregroundColor <Color or nil> foreground color of all cells or nil |
69 |
(nil: use default foreground color). |
|
1007
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
70 |
|
647 | 71 |
fgSelector <Selector or nil> access specific foreground color for |
72 |
a cell |
|
1007
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
73 |
|
647 | 74 |
bgSelector <Selector or nil> access specific background color for |
75 |
a cell |
|
76 |
||
1088 | 77 |
columnAlignment <Symbol> align text/icon #left #right or #center |
78 |
in row (on default: #left). |
|
79 |
||
80 |
label <label/icon or nil> label resolved by the builder shown |
|
81 |
in the column description field. |
|
82 |
||
1007
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
83 |
readSelector <Symbol> cached readSelector (from the spec) |
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
84 |
|
1113 | 85 |
numArgsToReadSelector <Integer> number of arguments to the readSelector |
86 |
||
1007
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
87 |
columnAdaptor <nil or any> if non-nil, that one is asked (via |
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
88 |
read-writeSelectors to extract a column |
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
89 |
from a row object. |
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
90 |
If nil, the row object is used itself. |
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
91 |
|
1113 | 92 |
showColSeparator <Boolean> true: vertical separators are enabled; |
93 |
separator between columns |
|
94 |
||
95 |
showRowSeparator <Boolean> true: horizontal separators are enabled; |
|
96 |
separator between rows |
|
97 |
||
98 |
rowSeparatorSelector <Selector or nil> access specific showRowSeparator state |
|
99 |
for a cell |
|
542 | 100 |
|
101 |
[author:] |
|
102 |
Claus Atzkern |
|
103 |
||
104 |
[see also:] |
|
105 |
DataSetColumnSpec |
|
106 |
DSVColumnView |
|
107 |
DataSetView |
|
108 |
" |
|
109 |
||
110 |
||
111 |
! ! |
|
112 |
||
113 |
!DataSetColumn methodsFor:'accessing'! |
|
114 |
||
115 |
at:aRowNr |
|
116 |
"get the value of the raw at an index, aRowNr |
|
117 |
" |
|
1007
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
118 |
^ self extractColFromRow:(dataSet at:aRowNr). |
542 | 119 |
! |
120 |
||
121 |
at:aRowNr put:something |
|
122 |
"set the value of the raw at an index, aRowNr |
|
123 |
" |
|
1059 | 124 |
|row newRow| |
1007
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
125 |
|
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
126 |
row := dataSet at:aRowNr. |
1059 | 127 |
newRow := self storeCol:something inRow:row. |
128 |
newRow ~~ row ifTrue:[ |
|
1487 | 129 |
dataSet listAt:aRowNr put:newRow. |
1059 | 130 |
] |
1065
332afeb89d6b
modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents:
1059
diff
changeset
|
131 |
|
332afeb89d6b
modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents:
1059
diff
changeset
|
132 |
"Modified: / 7.8.1998 / 22:17:27 / cg" |
542 | 133 |
! |
134 |
||
584 | 135 |
backgroundColor |
1113 | 136 |
"returns the background color or nil |
137 |
" |
|
138 |
^ backgroundColor == dataSet backgroundColor ifTrue:[nil] |
|
139 |
ifFalse:[backgroundColor] |
|
1133 | 140 |
|
141 |
! |
|
142 |
||
143 |
backgroundColorFor:aRowNr |
|
144 |
|bg| |
|
145 |
||
146 |
bgSelector notNil ifTrue:[ |
|
147 |
(bg := (dataSet at:aRowNr) perform:bgSelector) notNil ifTrue:[ |
|
148 |
^ bg |
|
149 |
] |
|
150 |
]. |
|
151 |
^ backgroundColor |
|
152 |
||
584 | 153 |
! |
154 |
||
1558
00b34d71898a
columnAdaptor also used when retrieving a ComboBoxes list.
Claus Gittinger <cg@exept.de>
parents:
1526
diff
changeset
|
155 |
columnAdaptor |
00b34d71898a
columnAdaptor also used when retrieving a ComboBoxes list.
Claus Gittinger <cg@exept.de>
parents:
1526
diff
changeset
|
156 |
^ columnAdaptor |
00b34d71898a
columnAdaptor also used when retrieving a ComboBoxes list.
Claus Gittinger <cg@exept.de>
parents:
1526
diff
changeset
|
157 |
! |
00b34d71898a
columnAdaptor also used when retrieving a ComboBoxes list.
Claus Gittinger <cg@exept.de>
parents:
1526
diff
changeset
|
158 |
|
807 | 159 |
description |
160 |
"returns the column description |
|
161 |
" |
|
162 |
^ description |
|
163 |
||
164 |
||
165 |
! |
|
166 |
||
584 | 167 |
foregroundColor |
1113 | 168 |
"returns the foreground color or nil |
169 |
" |
|
170 |
^ foregroundColor == dataSet foregroundColor ifTrue:[nil] |
|
171 |
ifFalse:[foregroundColor] |
|
1133 | 172 |
|
584 | 173 |
! |
174 |
||
542 | 175 |
label |
176 |
"get the label assigned to the column |
|
177 |
" |
|
891 | 178 |
^ label |
542 | 179 |
|
180 |
||
181 |
! |
|
182 |
||
1487 | 183 |
rendererType |
184 |
"returns my renderer type |
|
185 |
" |
|
186 |
^ rendererType |
|
187 |
! ! |
|
188 |
||
189 |
!DataSetColumn methodsFor:'accessing dimension'! |
|
190 |
||
1484 | 191 |
minWidth |
1490 | 192 |
"get the minimum width required by the column |
1484 | 193 |
" |
1490 | 194 |
descMinWidth notNil ifTrue:[ |
195 |
^ descMinWidth |
|
196 |
]. |
|
197 |
width := nil. |
|
198 |
^ self width |
|
1484 | 199 |
|
1490 | 200 |
! |
201 |
||
1492 | 202 |
minimumRequiredWidth |
203 |
"returns the minimum required width |
|
204 |
" |
|
205 |
|minWidth| |
|
206 |
||
207 |
minWidth := dataSet separatorSize |
|
208 |
+ (2 * dataSet horizontalSpacing) |
|
209 |
+ label preferredWidth. |
|
210 |
||
211 |
^ minWidth |
|
212 |
||
213 |
||
214 |
! |
|
215 |
||
1490 | 216 |
setDescWidth:aWidth |
217 |
"set a fixed width |
|
218 |
" |
|
1492 | 219 |
|minWidth| |
220 |
||
221 |
minWidth := self minimumRequiredWidth. |
|
222 |
descWidth := aWidth max:minWidth. |
|
1490 | 223 |
descMinWidth := width := descWidth. |
1484 | 224 |
|
225 |
||
226 |
! |
|
227 |
||
542 | 228 |
width |
229 |
"returns the width in pixels |
|
230 |
" |
|
1526 | 231 |
|max "{ Class:SmallInteger }" |
232 |
lsz "{ Class:SmallInteger }"| |
|
542 | 233 |
|
1484 | 234 |
width notNil ifTrue:[^ width]. "/ already computed |
542 | 235 |
|
1490 | 236 |
descMinWidth notNil ifTrue:[ |
237 |
width := descMinWidth. |
|
238 |
^ width |
|
1484 | 239 |
]. |
1482 | 240 |
|
1493 | 241 |
(descWidth ~~ 0 and:[descWidth isReal not]) ifTrue:[ |
242 |
width := descMinWidth := descWidth. |
|
243 |
^ width |
|
244 |
]. |
|
245 |
||
1490 | 246 |
width := description minWidth max:(label preferredWidth). |
247 |
||
248 |
descWidth isReal ifTrue:[ |
|
249 |
width := width max:(descWidth * dataSet width) rounded. |
|
250 |
^ width |
|
1482 | 251 |
]. |
252 |
||
1496 | 253 |
containsText ifTrue:[ |
1484 | 254 |
"/ take maximum 5 entries to calculate the width; |
255 |
"/ can be resized later if neccessary |
|
1526 | 256 |
lsz := dataSet size. |
1484 | 257 |
max := 5 min:dataSet size. |
542 | 258 |
|
1526 | 259 |
max ~~ 0 ifTrue:[ |
260 |
1 to:max do:[:i| |
|
261 |
width := width max:(self widthOfLabel:(shownValue value:(dataSet at:i))) |
|
262 |
]. |
|
263 |
width := width max:(self widthOfLabel:(shownValue value:(dataSet at:lsz))) |
|
1484 | 264 |
]. |
265 |
description editorType ~~ #None ifTrue:[ |
|
266 |
width := width + (dataSet font widthOn:dataSet device) |
|
542 | 267 |
]. |
1493 | 268 |
] ifFalse:[ |
269 |
max := 1 |
|
1484 | 270 |
]. |
1490 | 271 |
width := width + buttonExtent x + dataSet separatorSize + (2 * dataSet horizontalSpacing). |
1493 | 272 |
|
273 |
max ~~ 0 ifTrue:[ |
|
1526 | 274 |
descMinWidth := width. |
275 |
description usePreferredWidth ifTrue:[ |
|
276 |
descWidth := width |
|
277 |
] |
|
1493 | 278 |
]. |
1490 | 279 |
^ width |
1484 | 280 |
|
281 |
||
542 | 282 |
! ! |
283 |
||
284 |
!DataSetColumn methodsFor:'drawing'! |
|
285 |
||
1147 | 286 |
drawLabel:aLabel atX:xLeft y:yTop |
287 |
"redraw label |
|
288 |
" |
|
289 |
|x space| |
|
290 |
||
291 |
space := dataSet horizontalSpacing. |
|
292 |
||
293 |
columnAlignment == #left ifTrue:[ |
|
294 |
x := xLeft + space. |
|
295 |
] ifFalse:[ |
|
296 |
x := width - (aLabel widthOn:dataSet). |
|
297 |
||
298 |
columnAlignment == #right ifTrue:[x := x - space] |
|
299 |
ifFalse:[x := x // 2]. |
|
1447 | 300 |
x := xLeft + (x max:0). |
1147 | 301 |
]. |
1447 | 302 |
|
1147 | 303 |
aLabel isImageOrForm ifTrue:[ |
304 |
aLabel displayOn:dataSet x:x y:yTop. |
|
305 |
^ self |
|
306 |
]. |
|
307 |
||
308 |
aLabel displayOn:dataSet x:x y:(yTop + dataSet rowFontAscent) |
|
309 |
! |
|
310 |
||
1132 | 311 |
drawLabelsAtX:xLeft y:yTop h:h from:start to:stop |
312 |
"redraw labels from start to stop |
|
1088 | 313 |
" |
1113 | 314 |
|fg bg label row isSel |
1132 | 315 |
y "{ Class:SmallInteger }" |
316 |
yT "{ Class:SmallInteger }" |
|
317 |
x "{ Class:SmallInteger }" |
|
318 |
hspace "{ Class:SmallInteger }" |
|
319 |
ascent "{ Class:SmallInteger }" |
|
1147 | 320 |
lblHg "{ Class:SmallInteger }" |
1088 | 321 |
| |
1132 | 322 |
yT := yTop. |
323 |
ascent := dataSet rowFontAscent. |
|
324 |
hspace := dataSet horizontalSpacing. |
|
1100 | 325 |
|
1132 | 326 |
start to:stop do:[:anIndex| |
327 |
row := dataSet at:anIndex. |
|
328 |
y := yT. |
|
329 |
x := xLeft. |
|
330 |
||
331 |
"/ GET BACKGROUND AND FOREGROUND-COLOR |
|
332 |
"/ =================================== |
|
333 |
||
334 |
isSel := dataSet isSelected:anIndex inColumn:columnNumber. |
|
335 |
||
336 |
isSel ifTrue:[ |
|
337 |
( description editorType ~~ #None |
|
338 |
and:[dataSet selectedColIndex == columnNumber] |
|
339 |
) ifTrue:[ |
|
340 |
isSel := false |
|
1115 | 341 |
] |
1113 | 342 |
]. |
343 |
||
1132 | 344 |
(isSel and:[description showSelectionHighLighted]) ifTrue:[ |
345 |
"/ SHOW SELECTED( MUST REDRAW BACKGROUND ) |
|
346 |
"/ ======================================= |
|
347 |
fg := dataSet hgLgFgColor. |
|
348 |
bg := dataSet hgLgBgColor. |
|
349 |
dataSet paint:bg. |
|
350 |
dataSet fillRectangleX:x y:y width:width height:h. |
|
1113 | 351 |
] ifFalse:[ |
1132 | 352 |
bgSelector notNil ifTrue:[ |
353 |
"/ MUST REDRAW BACKGROUND |
|
354 |
"/ ====================== |
|
355 |
(bg := row perform:bgSelector) notNil ifTrue:[ |
|
356 |
bg := dataSet colorOnDevice:bg |
|
357 |
] ifFalse:[ |
|
358 |
bg := backgroundColor |
|
359 |
]. |
|
360 |
dataSet paint:bg. |
|
361 |
dataSet fillRectangleX:x y:y width:width height:h. |
|
362 |
] ifFalse:[ |
|
363 |
bg := backgroundColor |
|
364 |
]. |
|
1100 | 365 |
|
1132 | 366 |
(fgSelector notNil and:[(fg := row perform:fgSelector) notNil]) ifTrue:[ |
367 |
fg := dataSet colorOnDevice:fg |
|
368 |
] ifFalse:[ |
|
369 |
fg := foregroundColor |
|
370 |
] |
|
371 |
]. |
|
833 | 372 |
|
1132 | 373 |
"/ GET AND DRAW LABEL |
374 |
"/ ================== |
|
375 |
rendererType == #rowSelector ifTrue:[ |
|
376 |
isSel ifTrue:[ |
|
377 |
label := dataSet rowSelectorForm. |
|
378 |
x := x + hspace. |
|
379 |
] ifFalse:[ |
|
380 |
label := nil |
|
381 |
] |
|
1113 | 382 |
] ifFalse:[ |
1147 | 383 |
(isSel and:[dataSet hasOpenEditor]) ifTrue:[ |
384 |
label := nil |
|
385 |
] ifFalse:[ |
|
386 |
label := shownValue value:row |
|
1132 | 387 |
] |
388 |
]. |
|
389 |
label notNil ifTrue:[ |
|
1147 | 390 |
lblHg := self heightOfLabel:label. |
391 |
||
392 |
lblHg ~~ 0 ifTrue:[ |
|
393 |
y := y + (h - lblHg // 2). |
|
394 |
dataSet paint:fg on:bg. |
|
1113 | 395 |
|
1147 | 396 |
(label isSequenceable and:[label isString not]) ifFalse:[ |
397 |
self drawLabel:label atX:x y:y |
|
398 |
] ifTrue:[ |
|
399 |
label do:[:el| |
|
400 |
el notNil ifTrue:[ |
|
401 |
self drawLabel:el atX:x y:y. |
|
402 |
y := y + (el heightOn:dataSet). |
|
403 |
] |
|
404 |
] |
|
405 |
]. |
|
406 |
] |
|
1132 | 407 |
]. |
408 |
yT := yT + h |
|
409 |
] |
|
1113 | 410 |
|
833 | 411 |
|
412 |
! |
|
413 |
||
1132 | 414 |
drawSeparatorsAtX:xLeft y:yTop h:h from:start to:stop |
415 |
"redraw separators for cells between start and stop |
|
1088 | 416 |
" |
1132 | 417 |
|is3D |
418 |
xL "{ Class:SmallInteger }" |
|
1113 | 419 |
xR "{ Class:SmallInteger }" |
420 |
yB "{ Class:SmallInteger }" |
|
421 |
yT "{ Class:SmallInteger }" |
|
1132 | 422 |
times "{ Class:SmallInteger }" |
1088 | 423 |
| |
1132 | 424 |
(showColSeparator or:[showRowSeparator]) ifFalse:[ |
425 |
^ self |
|
426 |
]. |
|
427 |
is3D := dataSet has3Dseparators. |
|
428 |
||
1113 | 429 |
is3D ifTrue:[dataSet paint:(dataSet separatorDarkColor)] |
430 |
ifFalse:[dataSet paint:(dataSet foregroundColor)]. |
|
1088 | 431 |
|
1132 | 432 |
times := stop - start + 1. |
433 |
xL := xLeft. |
|
434 |
xR := xL - 1 + width. |
|
1088 | 435 |
|
1113 | 436 |
showRowSeparator ifTrue:[ |
1132 | 437 |
"/ DRAW SEPARATORS AT BOTTOM( DARK COLOR ) |
438 |
"/ ======================================= |
|
439 |
yB := yTop - 1 + h. |
|
440 |
||
441 |
rowSeparatorSelector isNil ifTrue:[ |
|
442 |
times timesRepeat:[ |
|
443 |
dataSet displayLineFromX:xL y:yB toX:xR y:yB. |
|
444 |
yB := yB + h. |
|
445 |
] |
|
446 |
] ifFalse:[ |
|
447 |
start to:stop do:[:idx| |
|
448 |
((dataSet at:idx) perform:rowSeparatorSelector) ~~ false ifTrue:[ |
|
449 |
dataSet displayLineFromX:xL y:yB toX:xR y:yB |
|
450 |
]. |
|
451 |
yB := yB + h. |
|
452 |
] |
|
1113 | 453 |
] |
454 |
]. |
|
1132 | 455 |
|
1113 | 456 |
showColSeparator ifTrue:[ |
1132 | 457 |
"/ DRAW SEPARATORS AT RIGHT( DARK COLOR ) |
458 |
"/ ====================================== |
|
459 |
yT := yTop. |
|
460 |
||
461 |
times timesRepeat:[ |
|
462 |
dataSet displayLineFromX:xR y:yT toX:xR y:(yT - 1 + h). |
|
463 |
yT := yT + h. |
|
464 |
] |
|
1113 | 465 |
]. |
1089 | 466 |
|
1113 | 467 |
is3D ifFalse:[ |
468 |
^ self |
|
469 |
]. |
|
1088 | 470 |
|
1113 | 471 |
dataSet paint:(dataSet separatorLightColor). |
1040
c8e6a2ed7928
use the same background color for a selected rowSelector
ca
parents:
1007
diff
changeset
|
472 |
|
1113 | 473 |
( columnNumber == 1 |
474 |
or:[(dataSet columnAt:(columnNumber - 1)) showColSeparator] |
|
475 |
) ifTrue:[ |
|
1132 | 476 |
|
477 |
"/ DRAW SEPARATORS AT LEFT( LIGHT COLOR ) |
|
478 |
"/ ====================================== |
|
479 |
yT := yTop. |
|
480 |
||
481 |
times timesRepeat:[ |
|
482 |
dataSet displayLineFromX:xL y:yT toX:xL y:(yT - 1 + h). |
|
483 |
yT := yT + h. |
|
484 |
]. |
|
1113 | 485 |
] ifFalse:[ |
1132 | 486 |
xL := xL - 1 |
1113 | 487 |
]. |
1092 | 488 |
|
1113 | 489 |
showRowSeparator ifTrue:[ |
1132 | 490 |
"/ DRAW SEPARATORS AT TOP( LIGHT COLOR ) |
491 |
"/ ===================================== |
|
492 |
yT := yTop. |
|
493 |
||
494 |
rowSeparatorSelector isNil ifTrue:[ |
|
495 |
times timesRepeat:[ |
|
496 |
dataSet displayLineFromX:xL y:yT toX:xR y:yT. |
|
497 |
yT := yT + h. |
|
498 |
] |
|
499 |
] ifFalse:[ |
|
500 |
"/ CHECK WHETHER PREVIOUS ROW HAS A SEPARATOR AT BOTTOM |
|
501 |
"/ ==================================================== |
|
502 |
start to:stop do:[:idx| |
|
503 |
( idx == 1 |
|
504 |
or:[((dataSet at:(idx - 1)) perform:rowSeparatorSelector) ~~ false] |
|
505 |
) ifTrue:[ |
|
506 |
dataSet displayLineFromX:xL y:yT toX:xR y:yT. |
|
507 |
]. |
|
508 |
yT := yT + h. |
|
509 |
] |
|
1088 | 510 |
] |
542 | 511 |
]. |
512 |
||
513 |
||
607 | 514 |
! |
515 |
||
542 | 516 |
invalidate |
1484 | 517 |
"invalidate width of column; forces a recomputation |
542 | 518 |
" |
1484 | 519 |
width := nil. |
542 | 520 |
|
1088 | 521 |
! |
522 |
||
1132 | 523 |
redrawX:xLeft y:yTop h:h from:start to:stop |
1088 | 524 |
"redraw rows between start and stop |
525 |
" |
|
1132 | 526 |
|rH "{ Class:SmallInteger }" |
527 |
y "{ Class:SmallInteger }" |
|
1088 | 528 |
| |
1132 | 529 |
rH := dataSet rowHeight. |
1088 | 530 |
|
1115 | 531 |
bgSelector isNil ifTrue:[ |
1132 | 532 |
dataSet paint:backgroundColor. |
533 |
dataSet fillRectangleX:xLeft y:yTop width:width height:h |
|
1115 | 534 |
]. |
535 |
||
1132 | 536 |
"/ DRAW CELLS: BACKGROUND/FOREGROUND/LABEL |
537 |
"/ ======================================= |
|
538 |
self drawLabelsAtX:xLeft y:yTop h:rH from:start to:stop. |
|
1113 | 539 |
|
540 |
"/ DRAW INDICATORS |
|
541 |
"/ =============== |
|
542 |
(rendererType == #ComboBox or:[rendererType == #ComboList]) ifTrue:[ |
|
1132 | 543 |
y := yTop. |
544 |
start to:stop do:[:i| |
|
545 |
(self hasChoices:i) ifTrue:[ |
|
546 |
dataSet drawComboButtonAtX:xLeft y:y w:width |
|
1113 | 547 |
]. |
1132 | 548 |
y := y + rH. |
1113 | 549 |
] |
550 |
] ifFalse:[ |
|
551 |
rendererType == #CheckToggle ifTrue:[ |
|
1132 | 552 |
y := yTop. |
553 |
start to:stop do:[:i| |
|
554 |
dataSet drawCheckToggleAtX:xLeft y:y w:width |
|
555 |
state:(self extractColFromRow:(dataSet at:i)). |
|
556 |
y := y + rH. |
|
1113 | 557 |
] |
558 |
] |
|
1088 | 559 |
]. |
560 |
||
561 |
"/ DRAW SEPARATORS |
|
1113 | 562 |
"/ =============== |
1132 | 563 |
self drawSeparatorsAtX:xLeft y:yTop h:rH from:start to:stop |
542 | 564 |
! ! |
565 |
||
614 | 566 |
!DataSetColumn methodsFor:'editing'! |
567 |
||
833 | 568 |
editorAt:aRowNr |
1268 | 569 |
|val row| |
614 | 570 |
|
1007
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
571 |
row := (dataSet at:aRowNr). |
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
572 |
val := self extractColFromRow:row. |
614 | 573 |
|
833 | 574 |
val isText ifTrue:[val := val string]. |
1558
00b34d71898a
columnAdaptor also used when retrieving a ComboBoxes list.
Claus Gittinger <cg@exept.de>
parents:
1526
diff
changeset
|
575 |
^ description editorOn:row column:self value:val. |
614 | 576 |
! ! |
577 |
||
542 | 578 |
!DataSetColumn methodsFor:'event handling'! |
579 |
||
580 |
doesNotUnderstand:aMessage |
|
581 |
||
582 |
(description respondsTo:(aMessage selector)) ifTrue:[ |
|
583 |
^ aMessage sendTo:description |
|
584 |
]. |
|
585 |
^ super doesNotUnderstand:aMessage |
|
586 |
||
587 |
! ! |
|
588 |
||
589 |
!DataSetColumn methodsFor:'grow & degrow'! |
|
590 |
||
591 |
growWidth:n |
|
592 |
"grow the width for n pixels |
|
593 |
" |
|
1492 | 594 |
width := self width + n. |
542 | 595 |
|
596 |
||
597 |
! ! |
|
598 |
||
599 |
!DataSetColumn methodsFor:'initialization'! |
|
600 |
||
1147 | 601 |
on:aDSVColumnView description:aDescription columnNumber:aNumber label:aLabel |
542 | 602 |
"instance creation; set attributes dependent on the description |
603 |
" |
|
1268 | 604 |
|device selector format idx type args| |
542 | 605 |
|
1089 | 606 |
columnNumber := aNumber. |
607 |
dataSet := aDSVColumnView. |
|
1147 | 608 |
label := aLabel. |
1487 | 609 |
|
1089 | 610 |
description := aDescription. |
611 |
rendererType := description rendererType. |
|
1496 | 612 |
containsText := ( rendererType ~~ #CheckToggle |
613 |
and:[rendererType ~~ #rowSelector] |
|
614 |
). |
|
1490 | 615 |
descWidth := description width. |
1526 | 616 |
|
617 |
description usePreferredWidth ifTrue:[ |
|
618 |
descWidth := 0 |
|
619 |
]. |
|
620 |
||
1089 | 621 |
width := nil. |
622 |
device := dataSet device. |
|
1147 | 623 |
shownValue := [:aRow| nil ]. |
1113 | 624 |
rowSeparatorSelector := description rowSeparatorSelector. |
1089 | 625 |
fgSelector := description foregroundSelector. |
626 |
bgSelector := description backgroundSelector. |
|
1113 | 627 |
showColSeparator := description showColSeparator. |
628 |
showRowSeparator := description showRowSeparator. |
|
1089 | 629 |
columnAdaptor := dataSet columnAdaptor. |
630 |
buttonExtent := 0 @ 0. |
|
631 |
columnAlignment := #left. |
|
584 | 632 |
|
1113 | 633 |
(readSelector := description readSelector) notNil ifTrue:[ |
634 |
numArgsToReadSelector := readSelector numArgs. |
|
635 |
] ifFalse:[ |
|
636 |
numArgsToReadSelector := 0 |
|
637 |
]. |
|
638 |
||
1132 | 639 |
(backgroundColor := description backgroundColor) isNil ifTrue:[ |
640 |
backgroundColor := dataSet backgroundColor |
|
641 |
] ifFalse:[ |
|
1480 | 642 |
backgroundColor := backgroundColor onDevice:dataSet device |
584 | 643 |
]. |
1113 | 644 |
|
645 |
(foregroundColor := description foregroundColor) isNil ifTrue:[ |
|
646 |
foregroundColor := dataSet foregroundColor |
|
647 |
] ifFalse:[ |
|
1480 | 648 |
foregroundColor := foregroundColor onDevice:dataSet device |
584 | 649 |
]. |
542 | 650 |
|
651 |
rendererType == #CheckToggle ifTrue:[ |
|
1113 | 652 |
buttonExtent := dataSet checkToggleExtent. |
647 | 653 |
^ self |
542 | 654 |
]. |
655 |
||
656 |
rendererType == #rowSelector ifTrue:[ |
|
807 | 657 |
buttonExtent := dataSet rowSelectorExtent. |
647 | 658 |
^ self |
542 | 659 |
]. |
660 |
||
661 |
(rendererType == #ComboBox or:[rendererType == #ComboList]) ifTrue:[ |
|
807 | 662 |
buttonExtent := dataSet comboButtonExtent. |
883 | 663 |
] ifFalse:[ |
664 |
columnAlignment := description columnAlignment |
|
542 | 665 |
]. |
666 |
||
667 |
selector := description printSelector. |
|
668 |
||
669 |
selector notNil ifTrue:[ |
|
1113 | 670 |
args := selector numArgs. |
671 |
args == 0 ifTrue:[ |
|
1147 | 672 |
shownValue := [:aRow| aRow perform:selector ] |
1113 | 673 |
] ifFalse:[ |
674 |
args == 1 ifTrue:[ |
|
1147 | 675 |
shownValue := [:aRow| aRow perform:selector with:dataSet ] |
1113 | 676 |
] ifFalse:[ |
1147 | 677 |
shownValue := [:aRow| aRow perform:selector with:dataSet with:columnNumber ] |
1113 | 678 |
] |
679 |
]. |
|
542 | 680 |
^ self |
681 |
]. |
|
682 |
||
614 | 683 |
( (format := description formatString) notNil |
684 |
and:[(type := description type) == #number or:[type == #numberOrNil]] |
|
685 |
) ifTrue:[ |
|
542 | 686 |
"/ has a format string for number (supports only floats) |
687 |
||
614 | 688 |
(idx := format indexOf:$.) ~~ 0 ifTrue:[ |
689 |
idx := format size - idx |
|
542 | 690 |
]. |
614 | 691 |
format := '%0.', idx printString, 'f'. |
542 | 692 |
|
1147 | 693 |
shownValue := [:aRow||n| |
1007
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
694 |
n := self extractColFromRow:aRow. |
621 | 695 |
n isReal ifTrue:[n := n asFloat printfPrintString:format]. |
696 |
n |
|
614 | 697 |
] |
621 | 698 |
] ifFalse:[ "/ default: no format string |
1147 | 699 |
shownValue := [:aRow| self extractColFromRow:aRow ] |
614 | 700 |
] |
542 | 701 |
|
702 |
||
703 |
! ! |
|
704 |
||
621 | 705 |
!DataSetColumn methodsFor:'private'! |
706 |
||
1113 | 707 |
extractColFromRow:aRow |
1226 | 708 |
readSelector isNil ifTrue:[^ nil]. |
1007
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
709 |
|
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
710 |
columnAdaptor notNil ifTrue:[ |
1113 | 711 |
numArgsToReadSelector == 1 ifTrue:[ |
1007
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
712 |
^ columnAdaptor perform:readSelector with:aRow |
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
713 |
]. |
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
714 |
^ columnAdaptor perform:readSelector with:aRow with:columnNumber |
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
715 |
]. |
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
716 |
|
1113 | 717 |
numArgsToReadSelector == 0 ifTrue:[ |
1007
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
718 |
^ aRow perform:readSelector |
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
719 |
]. |
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
720 |
^ aRow perform:readSelector with:columnNumber |
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
721 |
! |
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
722 |
|
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
723 |
storeCol:newValue inRow:aRow |
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
724 |
|writeSelector numArgs| |
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
725 |
|
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
726 |
writeSelector := description writeSelector. |
1226 | 727 |
writeSelector isNil ifTrue:[^ aRow]. |
728 |
||
1007
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
729 |
numArgs := writeSelector numArgs. |
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
730 |
|
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
731 |
columnAdaptor notNil ifTrue:[ |
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
732 |
numArgs == 2 ifTrue:[ |
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
733 |
^ columnAdaptor perform:writeSelector with:aRow with:newValue |
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
734 |
]. |
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
735 |
^ columnAdaptor perform:writeSelector with:aRow with:columnNumber with:newValue |
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
736 |
]. |
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
737 |
|
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
738 |
numArgs == 1 ifTrue:[ |
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
739 |
aRow perform:writeSelector with:newValue |
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
740 |
] ifFalse:[ |
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
741 |
aRow perform:writeSelector with:columnNumber with:newValue |
1059 | 742 |
]. |
743 |
^ aRow |
|
1007
4ea1ecf23596
added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents:
991
diff
changeset
|
744 |
|
621 | 745 |
! ! |
746 |
||
542 | 747 |
!DataSetColumn methodsFor:'queries'! |
748 |
||
1492 | 749 |
canResize |
750 |
||
1496 | 751 |
containsText ifTrue:[ |
1492 | 752 |
^ descWidth == 0 or:[descWidth isReal] |
753 |
]. |
|
754 |
^ false |
|
755 |
||
756 |
||
757 |
! |
|
758 |
||
607 | 759 |
canSelect:aRowNr |
760 |
"returns true if cell in column is selectable |
|
761 |
" |
|
762 |
|s| |
|
763 |
||
764 |
description canSelect ifTrue:[ |
|
1065
332afeb89d6b
modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents:
1059
diff
changeset
|
765 |
(s := description selectSelector) notNil ifTrue:[ |
332afeb89d6b
modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents:
1059
diff
changeset
|
766 |
columnAdaptor notNil ifTrue:[ |
332afeb89d6b
modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents:
1059
diff
changeset
|
767 |
s numArgs == 2 ifTrue:[ |
332afeb89d6b
modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents:
1059
diff
changeset
|
768 |
^ columnAdaptor perform:s with:(dataSet at:aRowNr) with:columnNumber |
332afeb89d6b
modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents:
1059
diff
changeset
|
769 |
]. |
332afeb89d6b
modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents:
1059
diff
changeset
|
770 |
^ columnAdaptor perform:s with:(dataSet at:aRowNr) |
332afeb89d6b
modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents:
1059
diff
changeset
|
771 |
]. |
332afeb89d6b
modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents:
1059
diff
changeset
|
772 |
s numArgs == 1 ifTrue:[ |
332afeb89d6b
modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents:
1059
diff
changeset
|
773 |
^ (dataSet at:aRowNr) perform:s with:columnNumber |
332afeb89d6b
modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents:
1059
diff
changeset
|
774 |
]. |
332afeb89d6b
modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents:
1059
diff
changeset
|
775 |
^ (dataSet at:aRowNr) perform:s |
332afeb89d6b
modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents:
1059
diff
changeset
|
776 |
]. |
332afeb89d6b
modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents:
1059
diff
changeset
|
777 |
^ true |
607 | 778 |
]. |
779 |
^ false |
|
780 |
||
1065
332afeb89d6b
modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents:
1059
diff
changeset
|
781 |
"Modified: / 7.8.1998 / 22:49:20 / cg" |
607 | 782 |
! |
783 |
||
647 | 784 |
containsText |
785 |
"returns true if text might exist |
|
786 |
" |
|
1496 | 787 |
^ containsText |
647 | 788 |
! |
789 |
||
833 | 790 |
hasChoices:aRowNr |
791 |
^ (description choicesFor:(dataSet at:aRowNr)) notNil |
|
792 |
! |
|
793 |
||
1484 | 794 |
hasRelativeWidth |
795 |
"returns true if width is relative |
|
796 |
" |
|
1496 | 797 |
^ descWidth isReal |
1484 | 798 |
|
799 |
||
800 |
||
801 |
! |
|
802 |
||
542 | 803 |
heightOfHighestRow |
804 |
"returns the height of the highest row in pixels |
|
805 |
" |
|
1496 | 806 |
|h end| |
542 | 807 |
|
1496 | 808 |
(h := description height) == 0 ifTrue:[ |
809 |
containsText ifTrue:[ |
|
542 | 810 |
"/ search first none empty drawable object |
1496 | 811 |
end := 5 min:dataSet size. |
542 | 812 |
|
1496 | 813 |
1 to:end do:[:i| |
814 |
h := h max:(self heightOfLabel:(shownValue value:(dataSet at:i))) |
|
542 | 815 |
] |
816 |
] |
|
817 |
]. |
|
1496 | 818 |
^ h max:(buttonExtent y) |
1113 | 819 |
! |
820 |
||
1147 | 821 |
heightOfLabel:aLabel |
822 |
"returns the height of the label |
|
823 |
" |
|
1496 | 824 |
|h| |
1147 | 825 |
|
1496 | 826 |
(aLabel isString or:[aLabel isImageOrForm]) ifTrue:[ |
827 |
^ aLabel heightOn:dataSet |
|
828 |
]. |
|
1147 | 829 |
aLabel isNil ifTrue:[ ^ 0 ]. |
830 |
||
1496 | 831 |
aLabel isSequenceable ifFalse:[ |
832 |
^ aLabel perform:#heightOn: with:dataSet ifNotUnderstood:[ |
|
833 |
aLabel displayString heightOn:dataSet |
|
834 |
] |
|
1147 | 835 |
]. |
836 |
||
1496 | 837 |
h := 0. |
838 |
aLabel do:[:el|h := h + (el heightOn:dataSet)]. |
|
839 |
^ h |
|
1147 | 840 |
|
841 |
! |
|
842 |
||
1113 | 843 |
showColSeparator |
844 |
"returns true if column separator is on |
|
845 |
" |
|
846 |
^ showColSeparator |
|
1133 | 847 |
! |
848 |
||
849 |
showSelectionHighLighted |
|
850 |
"returns true if selection is highLighted |
|
851 |
" |
|
852 |
^ description showSelectionHighLighted ~~ false |
|
1147 | 853 |
! |
854 |
||
855 |
widthOfLabel:aLabel |
|
856 |
"returns the width of the label |
|
857 |
" |
|
1496 | 858 |
|w| |
1147 | 859 |
|
1496 | 860 |
(aLabel isString or:[aLabel isImageOrForm]) ifTrue:[ |
861 |
^ aLabel widthOn:dataSet |
|
862 |
]. |
|
1147 | 863 |
aLabel isNil ifTrue:[ ^ 0 ]. |
864 |
||
1496 | 865 |
aLabel isSequenceable ifFalse:[ |
866 |
^ aLabel perform:#widthOn: with:dataSet ifNotUnderstood:[ |
|
867 |
aLabel displayString widthOn:dataSet |
|
868 |
] |
|
1147 | 869 |
]. |
870 |
||
1496 | 871 |
w := 0. |
872 |
aLabel do:[:el|w := w max:(el widthOn:dataSet)]. |
|
873 |
^ w |
|
542 | 874 |
! ! |
875 |
||
876 |
!DataSetColumn methodsFor:'searching'! |
|
877 |
||
878 |
findRowNrStartingWithChar:aChar start:start stop:stop |
|
879 |
"find the first row starting at start to stop, which drawable label |
|
880 |
starts with the character, aChar. The index of the detected row is |
|
881 |
returned or if no row is found 0. |
|
882 |
" |
|
883 |
|char| |
|
884 |
||
1496 | 885 |
containsText ifTrue:[ |
542 | 886 |
char := aChar asLowercase. |
887 |
||
888 |
start to:stop do:[:aRowNr| |lbl| |
|
1147 | 889 |
lbl := shownValue value:(dataSet at:aRowNr). |
890 |
||
891 |
(lbl isSequenceable and:[lbl isString not]) ifTrue:[ |
|
892 |
lbl := lbl at:1 ifAbsent:nil |
|
893 |
]. |
|
542 | 894 |
|
1113 | 895 |
(lbl respondsTo:#string) ifTrue:[ |
896 |
lbl := lbl string. |
|
542 | 897 |
(lbl size ~~ 0 and:[(lbl at:1) asLowercase == char]) ifTrue:[ |
898 |
^ aRowNr |
|
899 |
] |
|
900 |
] ifFalse:[ |
|
901 |
lbl isNil ifFalse:[ |
|
902 |
^ 0 |
|
903 |
] |
|
904 |
] |
|
905 |
] |
|
906 |
]. |
|
907 |
^ 0 |
|
908 |
||
909 |
! ! |
|
910 |
||
911 |
!DataSetColumn class methodsFor:'documentation'! |
|
912 |
||
913 |
version |
|
1558
00b34d71898a
columnAdaptor also used when retrieving a ComboBoxes list.
Claus Gittinger <cg@exept.de>
parents:
1526
diff
changeset
|
914 |
^ '$Header: /cvs/stx/stx/libwidg2/DataSetColumn.st,v 1.52 1999-09-24 12:51:23 cg Exp $' |
542 | 915 |
! ! |