DSVColumnView.st
changeset 1087 8e97cbfebe12
parent 1067 c66188014600
child 1089 931865a72ba7
equal deleted inserted replaced
1086:2b5746c733f6 1087:8e97cbfebe12
    14 
    14 
    15 
    15 
    16 View subclass:#DSVColumnView
    16 View subclass:#DSVColumnView
    17 	instanceVariableNames:'editValue editView multipleSelectOk selectedColIndex
    17 	instanceVariableNames:'editValue editView multipleSelectOk selectedColIndex
    18 		selectedRowIndex rowHeight columnDescriptors viewOrigin colorMap
    18 		selectedRowIndex rowHeight columnDescriptors viewOrigin colorMap
    19 		lockRowIndex rowIfAbsentBlock columnHolder registererImages list
    19 		rowFontAscent lockRowIndex rowIfAbsentBlock columnHolder
    20 		fgColor canFit separatorSize catchChangeEvents beDependentOfRows
    20 		registererImages list fgColor canFit separatorSize
    21 		bgColor hgLgFgColor hgLgBgColor actionBlock builder
    21 		catchChangeEvents beDependentOfRows bgColor hgLgFgColor
    22 		doubleClickActionBlock verticalSpacing horizontalSpacing
    22 		hgLgBgColor actionBlock builder doubleClickActionBlock
    23 		rowSelectorForm buttonLightColor buttonShadowColor
    23 		verticalSpacing horizontalSpacing rowSelectorForm
    24 		buttonHalfLightColor buttonHalfShadowColor checkToggleExtent
    24 		buttonLightColor buttonShadowColor buttonHalfLightColor
    25 		checkToggleForm checkToggleLevel comboButtonExtent
    25 		buttonHalfShadowColor checkToggleExtent checkToggleForm
    26 		comboButtonForm comboButtonLevel clickPosition dragAccessPoint
    26 		checkToggleLevel comboButtonExtent comboButtonForm
    27 		dragIsActive dropTarget dropSource columnAdaptor dataSetView'
    27 		comboButtonLevel clickPosition dragAccessPoint dragIsActive
       
    28 		dropTarget dropSource columnAdaptor dataSetView'
    28 	classVariableNames:'DefaultForegroundColor DefaultBackgroundColor
    29 	classVariableNames:'DefaultForegroundColor DefaultBackgroundColor
    29 		DefaultHilightForegroundColor DefaultHilightBackgroundColor
    30 		DefaultHilightForegroundColor DefaultHilightBackgroundColor
    30 		RowSelector ButtonLightColor ButtonShadowColor
    31 		RowSelector ButtonLightColor ButtonShadowColor
    31 		ButtonHalfLightColor ButtonHalfShadowColor ButtonEdgeStyle'
    32 		ButtonHalfLightColor ButtonHalfShadowColor ButtonEdgeStyle'
    32 	poolDictionaries:''
    33 	poolDictionaries:''
    56 "
    57 "
    57     implements a scrollable selection view based on rows and columns
    58     implements a scrollable selection view based on rows and columns
    58 
    59 
    59     [Instance variables:]
    60     [Instance variables:]
    60 
    61 
       
    62         dataSetView             <DataSetView>           parent view
       
    63 
    61         editValue               <Model>                 current editing model
    64         editValue               <Model>                 current editing model
    62         editView                <View>                  current editing component
    65         editView                <View>                  current editing component
       
    66 
       
    67         multipleSelectOk        <Boolean>               multiple selection enabled/disabled
       
    68 
    63         selectedColIndex        <Integer>               selected column index or 0
    69         selectedColIndex        <Integer>               selected column index or 0
    64         selectedRowIndex        <Integer>               selected row index or 0
    70         selectedRowIndex        <Integer>               selected row    index or 0
       
    71 
    65         rowHeight               <Integer>               maximum height of any row
    72         rowHeight               <Integer>               maximum height of any row
       
    73 
    66         columnDescriptors       <SequancableCollection> list of column descriptors
    74         columnDescriptors       <SequancableCollection> list of column descriptors
       
    75 
       
    76         viewOrigin              <Point>                 current view origin
       
    77 
       
    78         colorMap                <Dictionary>            store and register used colors on device
       
    79 
       
    80         rowFontAscent           <SmallInteger>          inset of a printable text in a row
       
    81                                                         including separator and font ascent.
       
    82 
       
    83         lockRowIndex            <SmallInteger>          internal used to indicate a row which has
       
    84                                                         changed its contents but no redraw should be
       
    85                                                         done( at:put: ).
       
    86 
       
    87         columnHolder            <ValueHolder>           holder which keeps the list of column descriptors.
       
    88 
       
    89         registererImages        <IdentityDictionary>    list of images registered on the device
       
    90 
    67         list                    <SequancableCollection> list of rows
    91         list                    <SequancableCollection> list of rows
    68         fgColor                 <Color>                 foreground color
    92 
    69         registererImages        <IdentityDictionary>    list of images registered on the device
    93         canFit                  <Boolean>               boolean set to true if colums can be fit to view
    70         beDependentOfRows       <Coolean>               keep rows dependent; on default is disabled.
    94 
       
    95 
       
    96         catchChangeEvents       <Boolean>               internal used to discard change notifications
       
    97 
       
    98         beDependentOfRows       <Boolean>               keep rows dependent; on default is disabled.
    71                                                         in case of enabled a row can raise a change
    99                                                         in case of enabled a row can raise a change
    72                                                         notification whithout a parameter which
   100                                                         notification whithout a parameter which
    73                                                         will force a redraw of the row or the
   101                                                         will force a redraw of the row or the
    74                                                         readSelector of the column which will
   102                                                         readSelector of the column which will
    75                                                         redraw the cell in the row only.
   103                                                         redraw the cell in the row only.
    76 
   104 
       
   105         fgColor                 <Color>                 foreground color
       
   106         bgColor                 <Color>                 background color
       
   107         hgLgFgColor             <Color>                 highlight foreground color (selected)
       
   108         hgLgBgColor             <Color>                 highlight background color (selected)
       
   109 
       
   110         buttonLightColor        <Color>                 LightColor      ( drawing the edge of a button )
       
   111         buttonShadowColor       <Color>                 ShadowColor     ( drawing the edge of a button )
       
   112         buttonHalfLightColor    <Color>                 HalfLightColor  ( drawing the edge of a button )
       
   113         buttonHalfShadowColor   <Color>                 HalfShadowColor ( drawing the edge of a button )
       
   114 
       
   115         actionBlock             <a OneArgBlock>         action block performed on select
       
   116         doubleClickActionBlock  <a OneArgBlock>         action block performed on double click
       
   117         rowIfAbsentBlock        <a OneArgBlock>         this block is performed on an emty list entry
       
   118                                                         to retrive the item from the application. The
       
   119                                                         argument to the block is the index into the list.
       
   120                                                         The block should return the row instance which
       
   121                                                         is put to the list under the index.
       
   122 
       
   123         builder                 <UIBuilder>             builder set by application
       
   124 
       
   125         verticalSpacing         <SmallInteger>          vertical   row spacing( top  & bottom )
       
   126         horizontalSpacing       <SmallInteger>          horizontal row spacing( left & right )
       
   127         separatorSize           <SmallInteger>          line width of a vertical or horizontal separator
       
   128 
       
   129         rowSelectorForm         <Form>                  form used by a row selector
       
   130 
       
   131         checkToggleForm         <Form>                  form used by a checkToggle
       
   132         checkToggleExtent       <Point>                 extent of a checkToggle
       
   133         checkToggleLevel        <SmallInteger>          level used to draw a check toggle
       
   134 
       
   135         comboButtonForm         <Form>                  form used by a comboList or -Box
       
   136         comboButtonExtent       <Point>                 extent of a comboList or -Box
       
   137         comboButtonLevel        <SmallInteger>          level used to draw a comboList or -Box
       
   138 
       
   139         clickPosition           <Point>                 click position of the mouse
       
   140 
       
   141         dragAccessPoint         <Point>                 point where the drag operation starts
       
   142         dragIsActive            <Boolean>               true if a drag operation is active
       
   143         dropTarget              <DropTarget>            drag & drop target
       
   144         dropSource              <DropSource>            drag & drop source
       
   145 
    77     [author:]
   146     [author:]
    78         Claus Atzkern
   147         Claus Atzkern
    79 
   148 
    80     [see also:]
   149     [see also:]
    81         DataSetColumnSpec
   150         DataSetColumnSpec
   106         ifAbsentPut:[(Depth2Image new) width: 8; height: 11; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@P@AP@GPUWQ]7W]5W]"AX@F@@ @@@@@a') ; colorMapFromArray:#[0 0 0 255 255 255 127 127 127 170 170 170]; mask:((Depth1Image new) width: 8; height: 11; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'DA \?/????8\FA@b') ; yourself); yourself]! !
   175         ifAbsentPut:[(Depth2Image new) width: 8; height: 11; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@P@AP@GPUWQ]7W]5W]"AX@F@@ @@@@@a') ; colorMapFromArray:#[0 0 0 255 255 255 127 127 127 170 170 170]; mask:((Depth1Image new) width: 8; height: 11; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'DA \?/????8\FA@b') ; yourself); yourself]! !
   107 
   176 
   108 !DSVColumnView class methodsFor:'defaults'!
   177 !DSVColumnView class methodsFor:'defaults'!
   109 
   178 
   110 horizontalSpacing
   179 horizontalSpacing
       
   180     "returns the default horizontal space between rows
       
   181     "
   111     ^ 4
   182     ^ 4
   112 
   183 
   113 !
   184 !
   114 
   185 
   115 updateStyleCache
   186 updateStyleCache
   140 
   211 
   141     "Modified: / 26.10.1997 / 17:09:07 / cg"
   212     "Modified: / 26.10.1997 / 17:09:07 / cg"
   142 !
   213 !
   143 
   214 
   144 verticalSpacing
   215 verticalSpacing
       
   216     "returns the default vertical space between rows
       
   217     "
   145     ^ 2
   218     ^ 2
   146 
   219 
   147 ! !
   220 ! !
   148 
   221 
   149 !DSVColumnView class methodsFor:'resources'!
   222 !DSVColumnView class methodsFor:'resources'!
   185         ifAbsentPut:[(Depth1Image new) width: 32; height: 32; photometric:(#palette); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@O?<0@C??L@@??30@O?<<@C??@@@??0@@O???@C???0@???<@O???@C???0@???<@O???@C???0@???<@O???@C???0@???<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 255 255]; mask:((ImageMask new) width: 32; height: 32; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@O??<@C???@@???<@O???@C???<@????@O???<C????@????0O???<C????@????0O???<C????@????0O???<C????@????0O???<C????@????0O???<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b') ; yourself); yourself]! !
   258         ifAbsentPut:[(Depth1Image new) width: 32; height: 32; photometric:(#palette); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@O?<0@C??L@@??30@O?<<@C??@@@??0@@O???@C???0@???<@O???@C???0@???<@O???@C???0@???<@O???@C???0@???<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 255 255]; mask:((ImageMask new) width: 32; height: 32; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@O??<@C???@@???<@O???@C???<@????@O???<C????@????0O???<C????@????0O???<C????@????0O???<C????@????0O???<C????@????0O???<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b') ; yourself); yourself]! !
   186 
   259 
   187 !DSVColumnView methodsFor:'accessing'!
   260 !DSVColumnView methodsFor:'accessing'!
   188 
   261 
   189 builder
   262 builder
       
   263     "get the builder (UIBuilder or nil)
       
   264     "
   190     ^ builder
   265     ^ builder
   191 !
   266 !
   192 
   267 
   193 builder:aBuilder
   268 builder:aBuilder
       
   269     "set the builder (UIBuilder or nil)
       
   270     "
   194     builder := aBuilder
   271     builder := aBuilder
   195 !
   272 !
   196 
   273 
   197 columnView
   274 columnView
       
   275     "returns self
       
   276     "
   198     ^ self
   277     ^ self
   199 !
   278 !
   200 
   279 
   201 dataSetView
   280 dataSetView
   202     "return the value of the instance variable 'dataSetView' (automatically generated)"
   281     "return the value of the instance variable 'dataSetView' (automatically generated)"
   210     "set the value of the instance variable 'dataSetView' (automatically generated)"
   289     "set the value of the instance variable 'dataSetView' (automatically generated)"
   211 
   290 
   212     dataSetView := something.
   291     dataSetView := something.
   213 
   292 
   214     "Created: / 7.8.1998 / 22:13:43 / cg"
   293     "Created: / 7.8.1998 / 22:13:43 / cg"
       
   294 !
       
   295 
       
   296 rowFontAscent
       
   297     "returns the inset of a printable text in a row
       
   298     "
       
   299     ^ rowFontAscent
   215 ! !
   300 ! !
   216 
   301 
   217 !DSVColumnView methodsFor:'accessing actions'!
   302 !DSVColumnView methodsFor:'accessing actions'!
   218 
   303 
   219 action:aOneArgAction
   304 action:aOneArgAction
   430 ! !
   515 ! !
   431 
   516 
   432 !DSVColumnView methodsFor:'accessing interactors'!
   517 !DSVColumnView methodsFor:'accessing interactors'!
   433 
   518 
   434 checkToggleExtent
   519 checkToggleExtent
       
   520     "returns the extent of a checkToggle
       
   521     "
   435     ^ checkToggleExtent
   522     ^ checkToggleExtent
   436 !
   523 !
   437 
   524 
   438 checkToggleForm
   525 checkToggleForm
       
   526     "returns the form of a checkToggle
       
   527     "
   439     ^ checkToggleForm
   528     ^ checkToggleForm
   440 !
   529 !
   441 
   530 
   442 checkToggleLevel
   531 checkToggleLevel
       
   532     "returns the level of a checkToggle button
       
   533     "
   443     ^ checkToggleLevel
   534     ^ checkToggleLevel
   444 !
   535 !
   445 
   536 
   446 comboButtonExtent
   537 comboButtonExtent
       
   538     "returns the extent of a comboList or -Box
       
   539     "
   447     ^ comboButtonExtent
   540     ^ comboButtonExtent
   448 !
   541 !
   449 
   542 
   450 comboButtonForm
   543 comboButtonForm
       
   544     "returns the form of a comboList or -Box
       
   545     "
   451     ^ comboButtonForm
   546     ^ comboButtonForm
   452 !
   547 !
   453 
   548 
   454 comboButtonLevel
   549 comboButtonLevel
       
   550     "returns the level of a comboList or -Box button
       
   551     "
   455     ^ comboButtonLevel
   552     ^ comboButtonLevel
   456 !
   553 !
   457 
   554 
   458 rowSelectorExtent
   555 rowSelectorExtent
   459     "returns the bitmap of a selected row
   556     "returns the bitmap of a selected row
   462 !
   559 !
   463 
   560 
   464 rowSelectorForm
   561 rowSelectorForm
   465     "returns the bitmap of a selected row
   562     "returns the bitmap of a selected row
   466     "
   563     "
   467     rowSelectorForm isNil ifTrue:[      
       
   468         rowSelectorForm := (self class rowSelector) on:device
       
   469     ].
       
   470     ^ rowSelectorForm
   564     ^ rowSelectorForm
   471 ! !
   565 ! !
   472 
   566 
   473 !DSVColumnView methodsFor:'accessing mvc'!
   567 !DSVColumnView methodsFor:'accessing mvc'!
   474 
   568 
   481     "set the value of the instance variable 'columnAdaptor' (automatically generated)"
   575     "set the value of the instance variable 'columnAdaptor' (automatically generated)"
   482 
   576 
   483     columnAdaptor := something.!
   577     columnAdaptor := something.!
   484 
   578 
   485 columnHolder
   579 columnHolder
       
   580     "get the valueHolder, which keeps the list of column descriptions
       
   581     "
   486     ^ columnHolder
   582     ^ columnHolder
   487 
   583 
   488 !
   584 !
   489 
   585 
   490 columnHolder:aValueHolder
   586 columnHolder:aValueHolder
       
   587     "set the valueHolder, which keeps the list of column descriptions
       
   588     "
   491     |columns|
   589     |columns|
   492 
   590 
   493     columnHolder notNil ifTrue:[
   591     columnHolder notNil ifTrue:[
   494         columnHolder removeDependent:self
   592         columnHolder removeDependent:self
   495     ].
   593     ].
  1211      x0    "{ Class:SmallInteger }"
  1309      x0    "{ Class:SmallInteger }"
  1212      x1    "{ Class:SmallInteger }"
  1310      x1    "{ Class:SmallInteger }"
  1213      maxX  "{ Class:SmallInteger }"
  1311      maxX  "{ Class:SmallInteger }"
  1214      minX  "{ Class:SmallInteger }"
  1312      minX  "{ Class:SmallInteger }"
  1215      yTop  "{ Class:SmallInteger }"
  1313      yTop  "{ Class:SmallInteger }"
  1216      yBot  "{ Class:SmallInteger }"
       
  1217      times "{ Class:SmallInteger }"
       
  1218      yMax  "{ Class:SmallInteger }"
  1314      yMax  "{ Class:SmallInteger }"
  1219     |
  1315     |
  1220 
  1316 
  1221     shown ifFalse:[^ self].
  1317     shown ifFalse:[^ self].
  1222 
  1318 
  1227         yTop  := margin - viewOrigin y.                   
  1323         yTop  := margin - viewOrigin y.                   
  1228         c0    := y - yTop max:0.
  1324         c0    := y - yTop max:0.
  1229         start := (c0 // rowHeight) + 1.
  1325         start := (c0 // rowHeight) + 1.
  1230         stop  := (c0 + h - 1 // rowHeight + 1) min:(list size).
  1326         stop  := (c0 + h - 1 // rowHeight + 1) min:(list size).
  1231 
  1327 
  1232         (times := stop - start + 1) > 0 ifTrue:[
  1328         stop >= start ifTrue:[
  1233             savClip := clipRect.
  1329             savClip := clipRect.
  1234 
  1330 
  1235             maxX := (x + w) min:(width - margin).
  1331             maxX := (x + w) min:(width - margin).
  1236             x0   := margin - viewOrigin x.
  1332             x0   := margin - viewOrigin x.
  1237             yTop := yTop + ((start - 1) * rowHeight).
  1333             yTop := yTop + ((start - 1) * rowHeight).
  1238             yBot := yTop + (times * rowHeight).
       
  1239             yMax := height - margin - margin.
  1334             yMax := height - margin - margin.
  1240             minX := x max:margin.
  1335             minX := x max:margin.
  1241 
  1336 
  1242             columnDescriptors do:[:aCol||rW|
  1337             columnDescriptors do:[:aCol||rW|
  1243                 x1 := x0 + aCol width.
  1338                 x1 := x0 + aCol width.
  1244 
  1339 
  1245                 (x1 > x and:[x0 < maxX]) ifTrue:[
  1340                 (x1 > x and:[x0 < maxX]) ifTrue:[
  1246                     rW := (x1 min:maxX) - x.
  1341                     rW := (x1 min:maxX) - x.
  1247 
  1342 
  1248                     self clippingRectangle:(Rectangle left:x top:y width:rW height:h).
  1343                     self clippingRectangle:(Rectangle left:x top:y width:rW height:h).
  1249                     aCol drawFrom:start times:times x0:x0 yTop:yTop yBot:yBot with:fgColor and:bgColor.
  1344                     aCol redrawX:x0 y:yTop from:start to:stop with:fgColor and:bgColor.
  1250                 ].
  1345                 ].
  1251                 x0 := x1
  1346                 x0 := x1
  1252             ].
  1347             ].
  1253             self clippingRectangle:savClip.
  1348             self clippingRectangle:savClip.
  1254         ]
  1349         ]
  1743 
  1838 
  1744         buttonHalfShadowColor isNil ifTrue:[
  1839         buttonHalfShadowColor isNil ifTrue:[
  1745             buttonHalfShadowColor := buttonShadowColor lightened
  1840             buttonHalfShadowColor := buttonShadowColor lightened
  1746         ]
  1841         ]
  1747     ].
  1842     ].
       
  1843     rowSelectorForm := (self class rowSelector) on:device.
  1748 
  1844 
  1749     v := ComboBoxView new.
  1845     v := ComboBoxView new.
  1750     b := v menuButton.
  1846     b := v menuButton.
  1751 
  1847 
  1752     (comboButtonForm := b label) isImage ifTrue:[
  1848     (comboButtonForm := b label) isImage ifTrue:[
  1794     verticalSpacing   := self class verticalSpacing.
  1890     verticalSpacing   := self class verticalSpacing.
  1795     horizontalSpacing := self class horizontalSpacing.
  1891     horizontalSpacing := self class horizontalSpacing.
  1796     colorMap          := Dictionary new.
  1892     colorMap          := Dictionary new.
  1797     catchChangeEvents := false.
  1893     catchChangeEvents := false.
  1798     dragIsActive      := false.
  1894     dragIsActive      := false.
  1799 
  1895     rowFontAscent     := 0.             "/ dummy initialization
  1800     self lineWidth:0.
  1896     self lineWidth:0.
  1801 !
  1897 !
  1802 
  1898 
  1803 mapped
  1899 mapped
  1804     "set selection if exists after mapping
  1900     "set selection if exists after mapping
  1839 ! !
  1935 ! !
  1840 
  1936 
  1841 !DSVColumnView methodsFor:'private'!
  1937 !DSVColumnView methodsFor:'private'!
  1842 
  1938 
  1843 detectViewAt:aPoint in:aView
  1939 detectViewAt:aPoint in:aView
       
  1940     "returns the view at a point
       
  1941     "
  1844     |p|
  1942     |p|
  1845 
  1943 
  1846     (aView notNil and:[aView subViews notNil]) ifTrue:[
  1944     (aView notNil and:[aView subViews notNil]) ifTrue:[
  1847         aView subViews do:[:sv|
  1945         aView subViews do:[:sv|
  1848             p := device translatePoint:aPoint from:(self id) to:(sv id).
  1946             p := device translatePoint:aPoint from:(self id) to:(sv id).
  2069         x := x + (aCol minWidth).
  2167         x := x + (aCol minWidth).
  2070     ].
  2168     ].
  2071     rowHeight := (rowHeight + separatorSize + verticalSpacing + verticalSpacing + 1) // 2 * 2.
  2169     rowHeight := (rowHeight + separatorSize + verticalSpacing + verticalSpacing + 1) // 2 * 2.
  2072     preferredExtent := (x + margin + margin) @ (self size * rowHeight).
  2170     preferredExtent := (x + margin + margin) @ (self size * rowHeight).
  2073 
  2171 
  2074     x := (rowHeight - separatorSize - font height) // 2 + font ascent.
  2172     rowFontAscent := (rowHeight - separatorSize - font height) // 2 + font ascent.
  2075     self columnsDo:[:aCol|aCol textInsetChanged:x].
       
  2076     self changed:#columnsLayout.
  2173     self changed:#columnsLayout.
  2077   ^ preferredExtent
  2174   ^ preferredExtent
  2078 
  2175 
  2079 
  2176 
  2080 !
  2177 !
  2081 
  2178 
  2082 preferredExtentChanged
  2179 preferredExtentChanged
       
  2180     "called if the preffered extent changed
       
  2181     "
  2083     |y x|
  2182     |y x|
  2084 
  2183 
  2085     y := viewOrigin y.
  2184     y := viewOrigin y.
  2086     x := viewOrigin x.
  2185     x := viewOrigin x.
  2087 
  2186 
  2092         self originChanged:(x negated  @ y negated).
  2191         self originChanged:(x negated  @ y negated).
  2093     ]
  2192     ]
  2094 !
  2193 !
  2095 
  2194 
  2096 recomputeHeightOfContents
  2195 recomputeHeightOfContents
  2097 
  2196     "recompute height of contents( scrolling )
       
  2197     "
  2098     preferredExtent notNil ifTrue:[
  2198     preferredExtent notNil ifTrue:[
  2099         preferredExtent y:(rowHeight * self size)
  2199         preferredExtent y:(rowHeight * self size)
  2100     ] ifFalse:[
  2200     ] ifFalse:[
  2101         self preferredExtent
  2201         self preferredExtent
  2102     ].
  2202     ].
  2669 ! !
  2769 ! !
  2670 
  2770 
  2671 !DSVColumnView class methodsFor:'documentation'!
  2771 !DSVColumnView class methodsFor:'documentation'!
  2672 
  2772 
  2673 version
  2773 version
  2674     ^ '$Header: /cvs/stx/stx/libwidg2/DSVColumnView.st,v 1.48 1998-08-08 11:49:06 cg Exp $'
  2774     ^ '$Header: /cvs/stx/stx/libwidg2/DSVColumnView.st,v 1.49 1998-08-23 13:14:03 ca Exp $'
  2675 ! !
  2775 ! !