DataSetColumn.st
author ca
Wed, 14 Jan 1998 07:37:38 +0100
changeset 655 ea7fbb7166d7
parent 647 ee98a1976972
child 807 46863a1cdd80
permissions -rw-r--r--
center CkeckToggle in row
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     1
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     2
 COPYRIGHT (c) 1997 by Claus Gittinger / eXept Software AG
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     3
              All Rights Reserved
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     4
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     5
 This software is furnished under a license and may be used
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    10
 hereby transferred.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    11
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    12
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    13
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    14
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    15
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    16
Object subclass:#DataSetColumn
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    17
	instanceVariableNames:'columnNumber dataSet label minWidth width description form
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    18
		buttonInset buttonExtent textInset drawableAction toggleExtent
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    19
		rendererType backgroundColor foregroundColor fgSelector
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    20
		bgSelector'
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
    21
	classVariableNames:''
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    22
	poolDictionaries:''
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    23
	category:'Views-DataSet'
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    24
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    25
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    26
!DataSetColumn class methodsFor:'documentation'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    27
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    28
copyright
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    29
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    30
 COPYRIGHT (c) 1997 by Claus Gittinger / eXept Software AG
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    31
              All Rights Reserved
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    32
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    33
 This software is furnished under a license and may be used
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    34
 only in accordance with the terms of that license and with the
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    35
 inclusion of the above copyright notice.   This software may not
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    36
 be provided or otherwise made available to, or used by, any
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    37
 other person.  No title to or ownership of the software is
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    38
 hereby transferred.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    39
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    40
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    41
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    42
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    43
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    44
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    45
documentation
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    46
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    47
    represent one single column description of a DataSetView
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    48
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    49
    [Instance variables:]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    50
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    51
        columnNumber    <Integer>               sequence number (into list of columns)
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    52
        description     <DataSetColumnSpec>     the column description
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    53
        dataSet         <DSVColumnView>         the view it belongs to
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    54
        width           <Integer>               width of column
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    55
        minWidth        <Integer>               minimum required width by the column
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    56
        buttonInset     <Integer>               top inset of a button (toggle)
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    57
        buttonExtent    <Point>                 extent of form
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    58
        textInset       <Integer>               top inset of a string
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    59
        form            <Form>                  a form drawn in the cell
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    60
        label           <misc>                  cellLabel on device
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    61
        drawableAction  <Action>                action to access the printable
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    62
                                                label of a cell
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    63
        rendererType    <Type>                  renderer type derived from
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    64
                                                column specification.
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    65
        backgroundColor <Color or nil>          background color of all cells or nil
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    66
                                                (nil: use default background color).
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    67
        foregroundColor <Color or nil>          foreground color of all cells or nil
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    68
                                                (nil: use default foreground color).
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    69
        fgSelector      <Selector or nil>       access specific foreground color for
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    70
                                                a cell
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    71
        bgSelector      <Selector or nil>       access specific background color for
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    72
                                                a cell
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    73
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    74
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    75
    [author:]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    76
        Claus Atzkern
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    77
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    78
    [see also:]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    79
        DataSetColumnSpec
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    80
        DSVColumnView
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    81
        DataSetView
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    82
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    83
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    84
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    85
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    86
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    87
!DataSetColumn methodsFor:'accessing'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    88
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    89
at:aRowNr
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    90
    "get the value of the raw at an index, aRowNr
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    91
    "
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
    92
    ^ description row:(dataSet at:aRowNr) at:columnNumber
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    93
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    94
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    95
at:aRowNr put:something
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    96
    "set the value of the raw at an index, aRowNr
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    97
    "
614
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
    98
    description row:(dataSet at:aRowNr) at:columnNumber put:something
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    99
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   100
584
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   101
backgroundColor
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   102
    ^ backgroundColor
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   103
!
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   104
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   105
foregroundColor
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   106
    ^ foregroundColor
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   107
!
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   108
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   109
label
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   110
    "get the label assigned to the column
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   111
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   112
    ^ label
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   113
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   114
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   115
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   116
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   117
rendererType
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   118
    "returns my renderer type
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   119
    "
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   120
    ^ rendererType
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   121
!
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   122
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   123
width
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   124
    "returns the width in pixels
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   125
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   126
    |end|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   127
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   128
    width notNil ifTrue:[ ^ width ].                            "/ already computed
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   129
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   130
    (    (width := description width)    ~~ 0                   "/ fixed size
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   131
     or:[(width := description minWidth) ~~ 0]                  "/ start size
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   132
    ) ifFalse:[
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   133
        self containsText ifTrue:[
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   134
            "/ take maximum 10 entries to calculate the width;
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   135
            "/ can be resized later if neccessary
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   136
621
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   137
            end := 10 min:dataSet size.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   138
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   139
            1 to:end do:[:aRowNr||lbl|
621
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   140
                lbl := self drawableAt:aRowNr.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   141
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   142
                (lbl respondsTo:#widthOn:) ifTrue:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   143
                    width := width max:(lbl widthOn:dataSet)
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   144
                ] ifFalse:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   145
                    lbl notNil ifTrue:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   146
                        width := width max:(lbl displayString widthOn:dataSet)
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   147
                    ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   148
                ]
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   149
            ].
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   150
            description editorType ~~ #None ifTrue:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   151
                width := width + (dataSet font widthOn:dataSet device)
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   152
            ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   153
        ].
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   154
        width := width + buttonExtent x.
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   155
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   156
        label notNil ifTrue:[
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   157
            width := width max:((label widthOn:dataSet) + 4)
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   158
        ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   159
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   160
    ^ width := minWidth := width + dataSet separatorSize + (2 * dataSet horizontalSpacing).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   161
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   162
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   163
width:aWidth
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   164
    "set the width
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   165
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   166
    |w|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   167
545
d01d14358b07 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 542
diff changeset
   168
    (w := description width) ~~ 0 ifTrue:[             "/ fixed size
d01d14358b07 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 542
diff changeset
   169
        width := minWidth := w
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   170
    ] ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   171
        width := aWidth max:minWidth
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   172
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   173
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   174
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   175
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   176
!DataSetColumn methodsFor:'drawing'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   177
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   178
drawFrom:start times:nTimes x0:x0 yTop:yTop yBot:yBot with:fgColor and:bgColor
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   179
    "redraw rows between start and stop
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   180
    "
655
ea7fbb7166d7 center CkeckToggle in row
ca
parents: 647
diff changeset
   181
    |lgCol dkCol fg bg lblFg lblBg lbl row colSp fH fW fE sepSz
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   182
     h  "{ Class:SmallInteger }"
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   183
     n  "{ Class:SmallInteger }"
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   184
     y  "{ Class:SmallInteger }"
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   185
     x  "{ Class:SmallInteger }"
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   186
     xI "{ Class:SmallInteger }"
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   187
    |
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   188
    h  := dataSet rowHeight.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   189
604
6cee1e2b14c2 bug fix in draw routine:
ca
parents: 595
diff changeset
   190
    (bg := backgroundColor) isNil ifTrue:[
6cee1e2b14c2 bug fix in draw routine:
ca
parents: 595
diff changeset
   191
        bg := bgColor
6cee1e2b14c2 bug fix in draw routine:
ca
parents: 595
diff changeset
   192
    ] ifFalse:[
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   193
        dataSet paint:(dataSet colorOnDevice:bg).
644
5472db50a5eb redraw: single separator
ca
parents: 637
diff changeset
   194
        dataSet fillRectangleX:x0 y:yTop width:width  height:(yBot - yTop - 1)
584
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   195
    ].
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   196
    fg    := foregroundColor ? fgColor.
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   197
    lgCol := dataSet hgLgFgColor.
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   198
    dkCol := dataSet hgLgBgColor.
655
ea7fbb7166d7 center CkeckToggle in row
ca
parents: 647
diff changeset
   199
    sepSz := dataSet separatorSize.
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   200
    y     := yTop + textInset.
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   201
    x     := x0   + dataSet horizontalSpacing.
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   202
    n     := start.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   203
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   204
    nTimes timesRepeat:[
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   205
        row := dataSet at:n.
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   206
        lbl := drawableAction value:row.
621
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   207
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   208
        (dataSet isSelected:n inColumn:columnNumber) ifTrue:[
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   209
            dataSet paint:dkCol.
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   210
            dataSet fillRectangleX:x0 y:y - textInset width:width height:(h - 2).
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   211
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   212
            rendererType == #rowSelector ifTrue:[
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   213
                lbl := form
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   214
            ] ifFalse:[
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   215
                lbl isText ifTrue:[lbl := lbl string]
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   216
            ].
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   217
            lbl notNil ifTrue:[
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   218
                dataSet paint:lgCol on:dkCol.
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   219
                lbl displayOn:dataSet x:x y:y
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   220
            ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   221
        ] ifFalse:[
621
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   222
            (bgSelector notNil and:[(lblBg := row perform:bgSelector) notNil]) ifTrue:[
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   223
                dataSet paint:(lblBg := dataSet colorOnDevice:lblBg).
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   224
                dataSet fillRectangleX:x0 y:y - textInset width:width height:(h - 2).                
621
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   225
            ] ifFalse:[
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   226
                lblBg := bg
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   227
            ].
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   228
            lbl notNil ifTrue:[
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   229
                (fgSelector notNil and:[(lblFg := row perform:fgSelector) notNil]) ifFalse:[
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   230
                    dataSet paint:fg on:lblBg.
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   231
                ] ifTrue:[
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   232
                    dataSet paint:(dataSet colorOnDevice:lblFg) on:lblBg.
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   233
                ].
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   234
                lbl displayOn:dataSet x:x y:y
621
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   235
            ]
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   236
        ].        
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   237
        y := y + h.
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   238
        n := n + 1.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   239
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   240
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   241
    (form notNil and:[rendererType ~~ #rowSelector]) ifTrue:[|xa xb xc xd|
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   242
        fE := (buttonExtent - form extent) // 2.
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   243
        fH := buttonExtent y.
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   244
        fW := buttonExtent x.
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   245
655
ea7fbb7166d7 center CkeckToggle in row
ca
parents: 647
diff changeset
   246
        rendererType ~~ #CheckToggle ifTrue:[
ea7fbb7166d7 center CkeckToggle in row
ca
parents: 647
diff changeset
   247
            x := x0 + width - fW - 4
ea7fbb7166d7 center CkeckToggle in row
ca
parents: 647
diff changeset
   248
        ] ifFalse:[
ea7fbb7166d7 center CkeckToggle in row
ca
parents: 647
diff changeset
   249
            x  := x0 + (width - fW - sepSz + 1 // 2).
ea7fbb7166d7 center CkeckToggle in row
ca
parents: 647
diff changeset
   250
        
ea7fbb7166d7 center CkeckToggle in row
ca
parents: 647
diff changeset
   251
        ].
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   252
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   253
        y := yTop + buttonInset + 1.
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   254
        dataSet paint:(dataSet separatorLightColor).
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   255
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   256
        xa := x + 1.
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   257
        xb := x + 2.
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   258
        xc := x + fW - 2.
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   259
        xd := x + fW - 3.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   260
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   261
        nTimes timesRepeat:[
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   262
            dataSet displayLineFromX:xa y:y     toX:xc y:y.
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   263
            dataSet displayLineFromX:xa y:y + 1 toX:xd y:y + 1.
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   264
            dataSet displayLineFromX:xa y:y     toX:xa y:y + fH - 3.
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   265
            dataSet displayLineFromX:xb y:y     toX:xb y:y + fH - 4.
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   266
            y := y + h.
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   267
        ].
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   268
        y  := yTop + buttonInset.
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   269
        xI := x + fE x.
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   270
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   271
        dataSet paint:fgColor on:bgColor.
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   272
        n := start.
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   273
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   274
        nTimes timesRepeat:[|u|
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   275
            (u := dataSet isRowSelected:n) ifTrue:[dataSet paint:lgCol on:dkCol].
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   276
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   277
            dataSet displayRectangleX:x y:y width:fW height:fH.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   278
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   279
            (rendererType ~~ #CheckToggle or:[self at:n]) ifTrue:[
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   280
                dataSet displayImage:form x:xI y:y + fE y
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   281
            ].
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   282
            u ifTrue:[dataSet paint:fgColor on:bgColor].
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   283
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   284
            y  := y + h.
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   285
            n  := n + 1.
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   286
        ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   287
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   288
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   289
    "/ DRAW SEPARATORS
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   290
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   291
    x  := x0 + width - 1.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   292
655
ea7fbb7166d7 center CkeckToggle in row
ca
parents: 647
diff changeset
   293
    sepSz == 1 ifTrue:[
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   294
        y := yTop.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   295
604
6cee1e2b14c2 bug fix in draw routine:
ca
parents: 595
diff changeset
   296
        dataSet paint:fgColor.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   297
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   298
        description showColSeparator ifTrue:[
644
5472db50a5eb redraw: single separator
ca
parents: 637
diff changeset
   299
            dataSet displayLineFromX:x y:yTop toX:x y:yBot - 1
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   300
        ].
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   301
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   302
        description showRowSeparator ifTrue:[
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   303
            y := yTop - 1.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   304
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   305
            nTimes timesRepeat:[
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   306
                y := y + h.
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   307
                dataSet displayLineFromX:x0 y:y toX:x y:y
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   308
            ]
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   309
        ]
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   310
    ] ifFalse:[
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   311
        dkCol := dataSet separatorDarkColor.
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   312
        lgCol := dataSet separatorLightColor.
568
ca
parents: 565
diff changeset
   313
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   314
        (colSp := description showColSeparator) ifTrue:[
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   315
            y := yBot - 1.
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   316
            dataSet paint:lgCol.
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   317
            dataSet displayLineFromX:x y:yTop toX:x y:y.
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   318
            x := x - 1.
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   319
            dataSet paint:dkCol.
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   320
            dataSet displayLineFromX:x y:yTop toX:x y:y.
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   321
        ] ifFalse:[
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   322
            dataSet paint:dkCol
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   323
        ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   324
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   325
        description showRowSeparator ifTrue:[
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   326
            y := yTop - 2.
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   327
            x := x0 + width.
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   328
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   329
            colSp ifTrue:[x := x - 2].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   330
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   331
            nTimes timesRepeat:[
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   332
                y := y + h.
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   333
                dataSet displayLineFromX:x0 y:y toX:x y:y.
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   334
            ].
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   335
            y := yTop - 1.
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   336
            dataSet paint:lgCol.
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   337
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   338
            nTimes timesRepeat:[
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   339
                y := y + h.
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   340
                dataSet displayLineFromX:x0 y:y toX:x y:y.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   341
            ]
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   342
        ]
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   343
    ]
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   344
!
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   345
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   346
invalidate
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   347
    "set to invalidate; forces a recomputation
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   348
    "
568
ca
parents: 565
diff changeset
   349
    minWidth := width := nil.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   350
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   351
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   352
614
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   353
!DataSetColumn methodsFor:'editing'!
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   354
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   355
editorAt:aRowNr in:aView with:fg bg:bg
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   356
    |value|
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   357
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   358
    (value := self at:aRowNr) isText ifTrue:[value := value string].
614
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   359
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   360
    ^ description editorOn:(dataSet at:aRowNr)
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   361
                     value:value
614
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   362
                        in:aView
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   363
                      with:fg
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   364
                        bg:bg.
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   365
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   366
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   367
! !
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   368
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   369
!DataSetColumn methodsFor:'event handling'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   370
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   371
doesNotUnderstand:aMessage
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   372
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   373
    (description respondsTo:(aMessage selector)) ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   374
        ^ aMessage sendTo:description
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   375
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   376
    ^ super doesNotUnderstand:aMessage
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   377
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   378
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   379
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   380
textInsetChanged:aTextInset
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   381
    "recompute all attributes
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   382
    "
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   383
    |lbl|
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   384
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   385
    self containsText ifTrue:[
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   386
        textInset := dataSet verticalSpacing.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   387
621
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   388
        dataSet size ~~ 0 ifTrue:[
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   389
            lbl := self drawableAt:1.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   390
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   391
            (lbl isString or:[lbl isNumber]) ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   392
                textInset := aTextInset
584
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   393
            ] ifFalse:[
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   394
                (lbl isNil and:[description printSelector isNil]) ifTrue:[
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   395
                    textInset := aTextInset.
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   396
                ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   397
            ]
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   398
        ]
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   399
    ] ifFalse:[
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   400
        textInset := (  (dataSet rowHeight)
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   401
                      - (form height)
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   402
                      - (dataSet separatorSize)
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   403
                     ) // 2.    
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   404
    ].    
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   405
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   406
    form isNil ifTrue:[
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   407
        buttonInset := 0
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   408
    ] ifFalse:[        
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   409
        buttonInset := (  (dataSet rowHeight)
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   410
                        - (buttonExtent x)
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   411
                        - (dataSet separatorSize)
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   412
                       ) // 2.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   413
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   414
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   415
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   416
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   417
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   418
!DataSetColumn methodsFor:'grow & degrow'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   419
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   420
growWidth:n
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   421
    "grow the width for n pixels
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   422
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   423
    width := width + n.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   424
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   425
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   426
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   427
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   428
minWidth
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   429
    "get my minimum width required by the entries into the column
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   430
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   431
    ^ minWidth notNil ifTrue:[minWidth] ifFalse:[self width]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   432
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   433
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   434
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   435
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   436
setMinWidth
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   437
    "set the width to the required width. returns the psitive delta width
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   438
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   439
    |deltaX|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   440
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   441
    deltaX := width - minWidth.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   442
    width  := minWidth.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   443
  ^ deltaX.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   444
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   445
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   446
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   447
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   448
!DataSetColumn methodsFor:'initialization'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   449
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   450
on:aDSVColumnView description:aDescription columnNumber:aNumber
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   451
    "instance creation; set attributes dependent on the description
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   452
    "
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   453
    |device selector format idx type|
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   454
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   455
    columnNumber    := aNumber.
584
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   456
    dataSet         := aDSVColumnView.
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   457
    description     := aDescription.
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   458
    rendererType    := description rendererType.
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   459
    form            := width := nil.
584
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   460
    device          := dataSet device.
595
586b5300d1be support of label is image
ca
parents: 584
diff changeset
   461
    label           := description rawLabel.
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   462
    drawableAction  := [:aRow| nil ].
621
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   463
    fgSelector      := description foregroundSelector.
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   464
    bgSelector      := description backgroundSelector.
584
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   465
    backgroundColor := description backgroundColor.
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   466
    foregroundColor := description foregroundColor.
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   467
    buttonExtent    := 0 @ 0.
584
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   468
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   469
    backgroundColor notNil ifTrue:[
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   470
        backgroundColor := backgroundColor on:aDSVColumnView device
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   471
    ].
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   472
    foregroundColor notNil ifTrue:[
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   473
        foregroundColor := foregroundColor on:aDSVColumnView device
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   474
    ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   475
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   476
    label isImage ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   477
        label := label onDevice:device
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   478
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   479
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   480
    rendererType == #CheckToggle ifTrue:[
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   481
        form := dataSet checkToggleForm.
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   482
        buttonExtent := dataSet buttonExtent.
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   483
      ^ self
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   484
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   485
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   486
    rendererType == #rowSelector ifTrue:[
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   487
        form := dataSet rowSelectorForm.
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   488
        buttonExtent := form extent.
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   489
      ^ self
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   490
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   491
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   492
    (rendererType == #ComboBox or:[rendererType == #ComboList]) ifTrue:[
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   493
        form := dataSet comboButtonForm.
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   494
        buttonExtent := dataSet buttonExtent.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   495
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   496
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   497
    selector := description printSelector.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   498
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   499
    selector notNil ifTrue:[
621
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   500
        drawableAction := [:aRow| aRow perform:selector with:dataSet ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   501
        ^ self
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   502
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   503
614
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   504
    (     (format := description formatString) notNil
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   505
     and:[(type   := description type) == #number or:[type == #numberOrNil]]
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   506
    ) ifTrue:[
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   507
        "/ has a format string for number (supports only floats)
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   508
614
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   509
        (idx := format indexOf:$.) ~~ 0 ifTrue:[
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   510
            idx := format size - idx
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   511
        ].
614
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   512
        format := '%0.', idx printString, 'f'.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   513
621
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   514
        drawableAction := [:aRow||n|
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   515
            n := description row:aRow at:columnNumber.
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   516
            n isReal ifTrue:[n := n asFloat printfPrintString:format].
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   517
            n
614
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   518
        ]
621
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   519
    ] ifFalse:[         "/ default: no format string
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   520
        drawableAction := [:aRow| description row:aRow at:columnNumber ]
614
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   521
    ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   522
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   523
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   524
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   525
621
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   526
!DataSetColumn methodsFor:'private'!
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   527
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   528
drawableAt:aRowNr
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   529
    "get the drawable label at an index
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   530
    "
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   531
    ^ drawableAction value:(dataSet at:aRowNr)
621
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   532
! !
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   533
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   534
!DataSetColumn methodsFor:'queries'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   535
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   536
canSelect:aRowNr
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   537
    "returns true if cell in column is selectable
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   538
    "
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   539
    |s|
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   540
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   541
    description canSelect ifTrue:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   542
        ^ ((s := description selectSelector) isNil or:[(dataSet at:aRowNr) perform:s])
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   543
    ].
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   544
    ^ false
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   545
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   546
!
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   547
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   548
containsText
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   549
    "returns true if text might exist
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   550
    "
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   551
    ^ (rendererType ~~ #rowSelector and:[rendererType ~~ #CheckToggle])
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   552
!
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   553
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   554
heightOfHighestRow
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   555
    "returns the height of the highest row in pixels
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   556
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   557
    |hObj hMin end|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   558
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   559
    hMin := dataSet font heightOn:dataSet device.
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   560
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   561
    form notNil ifTrue:[
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   562
        hMin := hMin max:(buttonExtent y)
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   563
    ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   564
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   565
    (hObj := description height) == 0 ifTrue:[
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   566
        self containsText ifTrue:[
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   567
            "/ search first none empty drawable object
621
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   568
            end := 10 min:dataSet size.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   569
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   570
            1 to:end do:[:aRowNr| |lbl|
621
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   571
                lbl := self drawableAt:aRowNr.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   572
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   573
                lbl notNil ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   574
                    (lbl respondsTo:#heightOn:) ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   575
                        hObj := lbl heightOn:dataSet
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   576
                    ] ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   577
                        hObj := lbl displayString heightOn:dataSet
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   578
                    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   579
                    ^ hMin max:hObj
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   580
                ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   581
            ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   582
        ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   583
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   584
    ^ hMin max:hObj.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   585
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   586
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   587
!DataSetColumn methodsFor:'searching'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   588
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   589
findRowNrStartingWithChar:aChar start:start stop:stop
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   590
    "find the first row starting at start to stop, which drawable label
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   591
     starts with the character, aChar. The index of the detected row is
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   592
     returned or if no row is found 0.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   593
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   594
    |char|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   595
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   596
    self containsText ifTrue:[
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   597
        char  := aChar asLowercase.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   598
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   599
        start to:stop do:[:aRowNr| |lbl|
621
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   600
            lbl := self drawableAt:aRowNr.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   601
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   602
            lbl isString ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   603
                (lbl size ~~ 0 and:[(lbl at:1) asLowercase == char]) ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   604
                    ^ aRowNr
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   605
                ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   606
            ] ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   607
                lbl isNil ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   608
                    ^ 0
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   609
                ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   610
            ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   611
        ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   612
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   613
    ^ 0
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   614
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   615
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   616
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   617
!DataSetColumn class methodsFor:'documentation'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   618
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   619
version
655
ea7fbb7166d7 center CkeckToggle in row
ca
parents: 647
diff changeset
   620
    ^ '$Header: /cvs/stx/stx/libwidg2/DataSetColumn.st,v 1.15 1998-01-14 06:37:38 ca Exp $'
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   621
! !