make life easier to add new renderer
authorca
Mon, 24 Aug 1998 07:23:52 +0200
changeset 1089 931865a72ba7
parent 1088 c2e474a7d0f2
child 1090 cf3d9f5648da
make life easier to add new renderer
DSVColumnView.st
DataSetColumn.st
--- a/DSVColumnView.st	Sun Aug 23 15:14:46 1998 +0200
+++ b/DSVColumnView.st	Mon Aug 24 07:23:52 1998 +0200
@@ -1341,13 +1341,20 @@
                     rW := (x1 min:maxX) - x.
 
                     self clippingRectangle:(Rectangle left:x top:y width:rW height:h).
-                    aCol redrawX:x0 y:yTop from:start to:stop with:fgColor and:bgColor.
+                    aCol redrawX:x0 y:yTop from:start to:stop.
                 ].
                 x0 := x1
             ].
             self clippingRectangle:savClip.
         ]
     ].
+!
+
+setFgBgPaintFor:aRowNr
+    (self isRowSelected:aRowNr) ifFalse:[self paint:fgColor     on:bgColor]
+                                 ifTrue:[self paint:hgLgFgColor on:hgLgBgColor].
+
+
 ! !
 
 !DSVColumnView methodsFor:'enumerating columns'!
@@ -2771,5 +2778,5 @@
 !DSVColumnView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg2/DSVColumnView.st,v 1.49 1998-08-23 13:14:03 ca Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg2/DSVColumnView.st,v 1.50 1998-08-24 05:23:38 ca Exp $'
 ! !
--- a/DataSetColumn.st	Sun Aug 23 15:14:46 1998 +0200
+++ b/DataSetColumn.st	Mon Aug 24 07:23:52 1998 +0200
@@ -15,9 +15,9 @@
 
 Object subclass:#DataSetColumn
 	instanceVariableNames:'columnNumber dataSet minWidth width description buttonExtent
-		drawableAction rendererType backgroundColor foregroundColor
-		fgSelector bgSelector columnAlignment label readSelector
-		columnAdaptor'
+		drawableAction rendererType drawFormSelector backgroundColor
+		foregroundColor fgSelector bgSelector columnAlignment label
+		readSelector columnAdaptor'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'Views-DataSet'
@@ -211,7 +211,7 @@
 
 !DataSetColumn methodsFor:'drawing'!
 
-drawCheckTogglesX:xTop y:yTop from:start to:stop with:fgColor and:bgColor
+drawCheckTogglesX:xTop y:yTop from:start to:stop
     "draw CheckToggles between start and stop
     "
     |extent toggleForm
@@ -238,9 +238,7 @@
         dataSet drawEdgesAtX:x y:y width:toggleWidth height:toggleHeight level:toggleLevel.
 
         (self extractColFromRow:(dataSet at:aRowNr)) ifTrue:[
-            (dataSet isRowSelected:aRowNr) ifFalse:[dataSet paint:fgColor on:bgColor]
-                                            ifTrue:[dataSet paint:(dataSet hgLgFgColor) on:(dataSet hgLgBgColor)].
-
+            dataSet setFgBgPaintFor:aRowNr.
             dataSet displayImage:toggleForm x:(x + extent x) y:(y + extent y).
         ].
         y := y + height.
@@ -248,7 +246,7 @@
 
 !
 
-drawComboButtonsX:xTop y:yTop from:start to:stop with:fgColor and:bgColor
+drawComboButtonsX:xTop y:yTop from:start to:stop
     "draw ComboButtons between start and stop
     "
     |extent buttonForm
@@ -272,19 +270,15 @@
     start to:stop do:[:aRowNr|
         (self hasChoices:aRowNr) ifTrue:[
             dataSet drawEdgesAtX:x y:y width:buttonWidth height:buttonHeight level:buttonLevel.
-
-            (dataSet isRowSelected:aRowNr) ifFalse:[dataSet paint:fgColor on:bgColor]
-                                            ifTrue:[dataSet paint:(dataSet hgLgFgColor)
-                                                               on:(dataSet hgLgBgColor)
-                                                   ].
-
+            dataSet setFgBgPaintFor:aRowNr.
             dataSet displayImage:buttonForm x:(x + extent x) y:(y + extent y)
         ].
         y := y + height.
     ]
+
 !
 
-drawSeparatorsX:xTop y:yTop from:start to:stop with:fgColor
+drawSeparatorsX:xTop y:yTop from:start to:stop
     "redraw rows between start and stop
     "
     |lgCol showColSeparator showRowSeparator yBot
@@ -306,7 +300,7 @@
     ].
 
     dataSet separatorSize == 1 ifTrue:[
-        dataSet paint:fgColor.
+        dataSet paint:(dataSet foregroundColor).
 
         showColSeparator ifTrue:[
             dataSet displayLineFromX:x y:yTop toX:x y:yBot
@@ -359,7 +353,7 @@
 
 !
 
-redrawX:xTop y:yTop from:start to:stop with:fgColor and:bgColor
+redrawX:xTop y:yTop from:start to:stop
     "redraw rows between start and stop
     "
     |lgCol dkCol fg bg lblFg lblBg label row sel
@@ -373,12 +367,15 @@
     h := dataSet rowHeight.
 
     (bg := backgroundColor) isNil ifTrue:[
-        bg := bgColor
+        bg := dataSet backgroundColor
     ] ifFalse:[
         dataSet paint:(dataSet colorOnDevice:bg).
         dataSet fillRectangleX:xTop y:yTop width:width height:(h * (stop - start + 1) - 1)
     ].
-    fg    := foregroundColor ? fgColor.
+
+    (fg := foregroundColor) isNil ifTrue:[
+        fg := dataSet foregroundColor
+    ].
     lgCol := dataSet hgLgFgColor.
     dkCol := dataSet hgLgBgColor.
     space := dataSet horizontalSpacing.
@@ -445,16 +442,12 @@
     ].
 
  "/ DRAW FORM
-    rendererType == #CheckToggle ifTrue:[
-        self drawCheckTogglesX:xTop y:yTop from:start to:stop with:fgColor and:bgColor
-    ] ifFalse:[
-        (rendererType == #ComboList or:[rendererType == #ComboBox]) ifTrue:[
-            self drawComboButtonsX:xTop y:yTop from:start to:stop with:fgColor and:bgColor
-        ]
+    drawFormSelector notNil ifTrue:[
+        self perform:drawFormSelector with:xTop with:yTop with:start with:stop
     ].
 
  "/ DRAW SEPARATORS
-    self drawSeparatorsX:xTop y:yTop from:start to:stop with:fgColor
+    self drawSeparatorsX:xTop y:yTop from:start to:stop
 ! !
 
 !DataSetColumn methodsFor:'editing'!
@@ -518,21 +511,22 @@
     "
     |device selector format idx type oldFont newFont|
 
-    columnNumber    := aNumber.
-    dataSet         := aDSVColumnView.
-    description     := aDescription.
-    rendererType    := description rendererType.
-    width           := nil.
-    device          := dataSet device.
-    drawableAction  := [:aRow| nil ].
-    fgSelector      := description foregroundSelector.
-    bgSelector      := description backgroundSelector.
-    backgroundColor := description backgroundColor.
-    foregroundColor := description foregroundColor.
-    readSelector    := description readSelector.
-    columnAdaptor   := dataSet columnAdaptor.
-    buttonExtent    := 0 @ 0.
-    columnAlignment := #left.
+    columnNumber     := aNumber.
+    dataSet          := aDSVColumnView.
+    description      := aDescription.
+    rendererType     := description rendererType.
+    width            := nil.
+    device           := dataSet device.
+    drawableAction   := [:aRow| nil ].
+    fgSelector       := description foregroundSelector.
+    bgSelector       := description backgroundSelector.
+    backgroundColor  := description backgroundColor.
+    foregroundColor  := description foregroundColor.
+    readSelector     := description readSelector.
+    columnAdaptor    := dataSet columnAdaptor.
+    buttonExtent     := 0 @ 0.
+    columnAlignment  := #left.
+    drawFormSelector := nil.
 
     backgroundColor notNil ifTrue:[
         backgroundColor := backgroundColor on:dataSet device
@@ -563,7 +557,8 @@
     ].
 
     rendererType == #CheckToggle ifTrue:[
-        buttonExtent := dataSet checkToggleExtent.
+        buttonExtent     := dataSet checkToggleExtent.
+        drawFormSelector := #drawCheckTogglesX:y:from:to:.
       ^ self
     ].
 
@@ -574,6 +569,7 @@
 
     (rendererType == #ComboBox or:[rendererType == #ComboList]) ifTrue:[
         buttonExtent := dataSet comboButtonExtent.
+        drawFormSelector := #drawComboButtonsX:y:from:to:.
     ] ifFalse:[
         columnAlignment := description columnAlignment
     ].
@@ -716,21 +712,6 @@
     ^ (rendererType ~~ #rowSelector and:[rendererType ~~ #CheckToggle])
 !
 
-drawableForm
-    rendererType == #CheckToggle ifTrue:[
-        ^ dataSet checkToggleForm.
-    ].
-    (rendererType == #ComboBox or:[rendererType == #ComboList]) ifTrue:[
-        ^ dataSet comboButtonForm
-    ].
-    rendererType == #rowSelector ifTrue:[
-        ^  dataSet rowSelectorForm
-    ].
-    ^ nil
-
-
-!
-
 hasChoices:aRowNr
     ^ (description choicesFor:(dataSet at:aRowNr)) notNil
 !
@@ -797,5 +778,5 @@
 !DataSetColumn class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg2/DataSetColumn.st,v 1.29 1998-08-23 13:14:46 ca Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg2/DataSetColumn.st,v 1.30 1998-08-24 05:23:52 ca Exp $'
 ! !