--- a/DataSetView.st Mon Mar 09 17:03:54 1998 +0100
+++ b/DataSetView.st Mon Mar 09 17:04:25 1998 +0100
@@ -523,56 +523,6 @@
!DataSetView methodsFor:'change & update'!
-recomputeLabelView
- "recompute label view
- "
- |p x|
-
- p := columnView styleSheet at:'scrollBar.position' default:#left.
- x := labelView width - columnView width.
-
- p == #left ifTrue:[labelView leftInset:(columnView left)]
- ifFalse:[labelView rightInset:(columnView right - columnView width)].
-!
-
-recomputeLabels
- "labels changed; recompute labels
- "
- |hgt lbl prv lst|
-
- labels size ~~ 0 ifTrue:[ labels do:[:b| b destroy] ].
- labels := OrderedCollection new.
-
- columnView numberOfColumns == 0 ifTrue:[
- ^ self
- ].
-
- hgt := 0.
- prv := nil.
- lst := columnView lastColumn.
-
- columnView columnsDo:[:aCol||l|
- (aCol showColSeparator or:[aCol == lst]) ifTrue:[
- lbl := DSVLabelView column:(prv ? aCol) in:labelView.
- prv := nil.
- hgt := (lbl preferredExtent y) max:hgt.
- labels add:lbl.
- ] ifFalse:[
- (prv isNil and:[aCol label notNil]) ifTrue:[prv := aCol]
- ]
- ].
- hgt := hgt + (hgt // 5).
-
- scrolledView topInset:hgt.
- labelView bottomInset:(hgt negated).
-
- realized ifTrue:[
- self updateLabels.
- labels do:[:l| l realize ].
- ]
-
-!
-
update:what with:aPara from:chgObj
"one of my models changed
"
@@ -593,16 +543,10 @@
^ self
].
- what == #sizeOfColumns ifTrue:[ ^ self recomputeLabels ].
- what == #columnsLayout ifTrue:[ ^ self updateLabels ].
+ what == #sizeOfColumns ifTrue:[ ^ self recomputeLabels ].
+ what == #columnsLayout ifTrue:[ ^ self updateLabels ].
+ what == #originOfContents ifTrue:[ ^ self lablesOriginXChanged:(aPara x) ].
- shown ifTrue:[
- what == #originOfContents ifTrue:[
- (labels size ~~ 0 and:[(val := aPara x) ~~ 0]) ifTrue:[
- labels do:[:b| b origin:((b origin) - (val @ 0)) ]
- ].
- ]
- ].
^ self
].
@@ -633,12 +577,88 @@
self perform:what with:aPara
]
].
+! !
+
+!DataSetView methodsFor:'change & update labels'!
+
+hasVisibleLabel:aColumn
+ "returns true if label of the column is visible
+ "
+ |l|
+
+ (aColumn showColSeparator or:[aColumn == columnView lastColumn]) ifTrue:[
+ ^ true
+ ].
+ ^ ((l := aColumn label) isImage or:[l size ~~ 0])
+
+
+!
+
+lablesOriginXChanged:aDeltaX
+ "the origin of all labels changed; (scrolling left or right)
+ "
+ |point|
+
+ (shown and:[aDeltaX ~~ 0]) ifTrue:[
+ point := aDeltaX @ 0.
+
+ aDeltaX > 0 ifTrue:[
+ labels do:[:aLabel| aLabel origin:((aLabel origin) - point) ]
+ ] ifFalse:[
+ labels reverseDo:[:aLabel| aLabel origin:((aLabel origin) - point) ]
+ ]
+ ].
+
+!
+
+recomputeLabelView
+ "recompute label view
+ "
+ |p|
+
+ p := device translatePoint:(0@0) from:(columnView id) to:(self id).
+ labelView leftInset:p x.
+ p := device translatePoint:((columnView width) @ 0) from:(columnView id) to:(self id).
+ labelView rightInset:(self width - p x).
+!
+
+recomputeLabels
+ "labels changed; recompute labels
+ "
+ |hgt lbl|
+
+ labels size ~~ 0 ifTrue:[ labels do:[:b| b destroy] ].
+ labels := OrderedCollection new.
+
+ columnView numberOfColumns == 0 ifTrue:[
+ ^ self
+ ].
+ hgt := 0.
+
+ columnView columnsDo:[:aCol||l|
+ (self hasVisibleLabel:aCol) ifTrue:[
+ lbl := DSVLabelView column:aCol in:labelView.
+ hgt := (lbl preferredExtent y) max:hgt.
+ labels add:lbl.
+ ]
+ ].
+ hgt := hgt + (hgt // 5).
+
+ scrolledView topInset:hgt.
+ labelView bottomInset:(hgt negated).
+
+ realized ifTrue:[
+ self updateLabels.
+ labels do:[:l| l realize ].
+ ]
+
+
!
updateLabels
"layout of labels changed; recompute layout
"
- |x0 x1 dX id lst noCols size|
+ |x0 x1 dX id noCols size|
size := labels size.
noCols := columnView numberOfColumns.
@@ -647,11 +667,11 @@
noCols == 0 ifTrue:[
^ self recomputeLabels
].
- id := columnView lastColumn showColSeparator ifTrue:[0] ifFalse:[1].
+ id := 0.
columnView columnsDo:[:aCol|
- aCol showColSeparator ifTrue:[id := id + 1]
- ].
+ (self hasVisibleLabel:aCol) ifTrue:[id := id + 1]
+ ].
size ~~ id ifTrue:[
^ self recomputeLabels
].
@@ -660,20 +680,19 @@
x0 := columnView margin - columnView xOriginOfContents.
dX := columnView separatorSize - 1.
- lst := columnView lastColumn.
id := 1.
x1 := 0.
columnView columnsDo:[:aCol|
x1 := x1 + aCol width.
- (aCol showColSeparator or:[aCol == lst]) ifTrue:[
+ (self hasVisibleLabel:aCol) ifTrue:[
(labels at:id) origin:(x0 @ 0.0) extent:(x1 - dX @ 1.0).
x0 := x0 + x1.
x1 := 0.
id := id + 1.
]
- ]
+ ].
! !
@@ -830,5 +849,5 @@
!DataSetView class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libwidg2/DataSetView.st,v 1.16 1998-02-13 13:57:35 ca Exp $'
+ ^ '$Header: /cvs/stx/stx/libwidg2/DataSetView.st,v 1.17 1998-03-09 16:04:25 ca Exp $'
! !