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