drawing labels
authorca
Mon, 09 Mar 1998 17:04:25 +0100
changeset 808 7ed2da8edd1c
parent 807 46863a1cdd80
child 809 0206d997fe99
drawing labels
DataSetView.st
--- 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 $'
 ! !