DataSetColumn.st
author ca
Sun, 23 Aug 1998 15:14:46 +0200
changeset 1088 c2e474a7d0f2
parent 1065 332afeb89d6b
child 1089 931865a72ba7
permissions -rw-r--r--
add some comment split draw routines to make live easier
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
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
    17
	instanceVariableNames:'columnNumber dataSet minWidth width description buttonExtent
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
    18
		drawableAction rendererType backgroundColor foregroundColor
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
    19
		fgSelector bgSelector columnAlignment label readSelector
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
    20
		columnAdaptor'
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)
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    52
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    53
        dataSet         <DSVColumnView>         the view it belongs to
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    54
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    55
        minWidth        <Integer>               minimum required width by the column
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    56
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
    57
        width           <Integer>               width of column
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    58
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
    59
        description     <DataSetColumnSpec>     the column description
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    60
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
    61
        buttonExtent    <Point>                 extent of drawable form
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    62
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    63
        drawableAction  <Action>                action to access the printable
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    64
                                                label of a cell
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    65
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    66
        rendererType    <Type>                  renderer type (cached value from
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    67
                                                the column specification).
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    68
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    69
        backgroundColor <Color or nil>          background color of all cells or nil
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    70
                                                (nil: use default background color).
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    71
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    72
        foregroundColor <Color or nil>          foreground color of all cells or nil
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    73
                                                (nil: use default foreground color).
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    74
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    75
        fgSelector      <Selector or nil>       access specific foreground color for
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    76
                                                a cell
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    77
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    78
        bgSelector      <Selector or nil>       access specific background color for
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    79
                                                a cell
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    80
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
    81
        columnAlignment <Symbol>                align text/icon #left #right or #center
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
    82
                                                in row (on default: #left).
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
    83
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
    84
        label           <label/icon or nil>     label resolved by the builder shown
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
    85
                                                in the column description field.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
    86
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    87
        readSelector    <Symbol>                cached readSelector (from the spec)
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    88
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    89
        columnAdaptor   <nil or any>            if non-nil, that one is asked (via
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    90
                                                read-writeSelectors to extract a column
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    91
                                                from a row object.
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    92
                                                If nil, the row object is used itself.
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    93
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    94
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    95
    [author:]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    96
        Claus Atzkern
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    97
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    98
    [see also:]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    99
        DataSetColumnSpec
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   100
        DSVColumnView
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   101
        DataSetView
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   102
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   103
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   104
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   105
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   106
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   107
!DataSetColumn methodsFor:'accessing'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   108
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   109
at:aRowNr
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   110
    "get the value of the raw at an index, aRowNr
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   111
    "
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   112
    ^ self extractColFromRow:(dataSet at:aRowNr).
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   113
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   114
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   115
at:aRowNr put:something
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   116
    "set the value of the raw at an index, aRowNr
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   117
    "
1059
18f81ba4860d if there is a columnAdaptor,
tz
parents: 1043
diff changeset
   118
    |row newRow|
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   119
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   120
    row := dataSet at:aRowNr.
1059
18f81ba4860d if there is a columnAdaptor,
tz
parents: 1043
diff changeset
   121
    newRow := self storeCol:something inRow:row.
18f81ba4860d if there is a columnAdaptor,
tz
parents: 1043
diff changeset
   122
    newRow ~~ row ifTrue:[
1065
332afeb89d6b modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   123
        dataSet dataSetView listAt:aRowNr put:newRow.
1059
18f81ba4860d if there is a columnAdaptor,
tz
parents: 1043
diff changeset
   124
    ]
1065
332afeb89d6b modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   125
332afeb89d6b modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   126
    "Modified: / 7.8.1998 / 22:17:27 / cg"
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   127
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   128
584
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   129
backgroundColor
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   130
    ^ backgroundColor
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   131
!
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   132
807
46863a1cdd80 access method to retrieve the description
ca
parents: 655
diff changeset
   133
description
46863a1cdd80 access method to retrieve the description
ca
parents: 655
diff changeset
   134
    "returns the column description
46863a1cdd80 access method to retrieve the description
ca
parents: 655
diff changeset
   135
    "
46863a1cdd80 access method to retrieve the description
ca
parents: 655
diff changeset
   136
    ^ description
46863a1cdd80 access method to retrieve the description
ca
parents: 655
diff changeset
   137
46863a1cdd80 access method to retrieve the description
ca
parents: 655
diff changeset
   138
46863a1cdd80 access method to retrieve the description
ca
parents: 655
diff changeset
   139
!
46863a1cdd80 access method to retrieve the description
ca
parents: 655
diff changeset
   140
584
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   141
foregroundColor
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   142
    ^ foregroundColor
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   143
!
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   144
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   145
label
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   146
    "get the label assigned to the column
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   147
    "
891
f4d2ed9d3b88 checkin from browser
ca
parents: 883
diff changeset
   148
    ^ label
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   149
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   150
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   151
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   152
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   153
rendererType
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   154
    "returns my renderer type
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   155
    "
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   156
    ^ rendererType
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   157
!
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   158
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   159
width
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   160
    "returns the width in pixels
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   161
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   162
    |end|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   163
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   164
    width notNil ifTrue:[ ^ width ].                            "/ already computed
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   165
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   166
    (    (width := description width)    ~~ 0                   "/ fixed size
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   167
     or:[(width := description minWidth) ~~ 0]                  "/ start size
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   168
    ) ifFalse:[
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   169
        self containsText ifTrue:[
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   170
            "/ take maximum 10 entries to calculate the width;
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   171
            "/ can be resized later if neccessary
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   172
621
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   173
            end := 10 min:dataSet size.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   174
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   175
            1 to:end do:[:aRowNr||lbl|
621
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   176
                lbl := self drawableAt:aRowNr.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   177
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   178
                (lbl respondsTo:#widthOn:) ifTrue:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   179
                    width := width max:(lbl widthOn:dataSet)
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   180
                ] ifFalse:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   181
                    lbl notNil ifTrue:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   182
                        width := width max:(lbl displayString widthOn:dataSet)
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   183
                    ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   184
                ]
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   185
            ].
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   186
            description editorType ~~ #None ifTrue:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   187
                width := width + (dataSet font widthOn:dataSet device)
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   188
            ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   189
        ].
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   190
        width := width + buttonExtent x.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   191
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   192
        label notNil ifTrue:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   193
            width := width max:(4 + (label widthOn:dataSet))
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   194
        ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   195
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   196
    ^ width := minWidth := width + dataSet separatorSize + (2 * dataSet horizontalSpacing).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   197
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   198
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   199
width:aWidth
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   200
    "set the width
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   201
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   202
    |w|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   203
545
d01d14358b07 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 542
diff changeset
   204
    (w := description width) ~~ 0 ifTrue:[             "/ fixed size
d01d14358b07 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 542
diff changeset
   205
        width := minWidth := w
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   206
    ] ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   207
        width := aWidth max:minWidth
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   208
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   209
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   210
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   211
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   212
!DataSetColumn methodsFor:'drawing'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   213
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   214
drawCheckTogglesX:xTop y:yTop from:start to:stop with:fgColor and:bgColor
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   215
    "draw CheckToggles between start and stop
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   216
    "
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   217
    |extent toggleForm
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   218
     toggleLevel  "{ Class:SmallInteger }"
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   219
     toggleWidth  "{ Class:SmallInteger }"
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   220
     toggleHeight "{ Class:SmallInteger }"
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   221
     separatorSz  "{ Class:SmallInteger }"
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   222
     height       "{ Class:SmallInteger }"
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   223
     y            "{ Class:SmallInteger }"
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   224
     x            "{ Class:SmallInteger }"
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   225
    |
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   226
    toggleForm   := dataSet checkToggleForm.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   227
    toggleHeight := buttonExtent y.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   228
    toggleWidth  := buttonExtent x.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   229
    toggleLevel  := dataSet checkToggleLevel.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   230
    height       := dataSet rowHeight.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   231
    extent       := (buttonExtent - toggleForm extent) // 2.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   232
    separatorSz  := dataSet separatorSize - 1.
833
c4e3e579f8bd handle choices
ca
parents: 824
diff changeset
   233
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   234
    y := yTop + (height - toggleHeight - separatorSz // 2).
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   235
    x := xTop + (width  - toggleWidth  - separatorSz // 2).
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   236
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   237
    start to:stop do:[:aRowNr|
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   238
        dataSet drawEdgesAtX:x y:y width:toggleWidth height:toggleHeight level:toggleLevel.
833
c4e3e579f8bd handle choices
ca
parents: 824
diff changeset
   239
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   240
        (self extractColFromRow:(dataSet at:aRowNr)) ifTrue:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   241
            (dataSet isRowSelected:aRowNr) ifFalse:[dataSet paint:fgColor on:bgColor]
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   242
                                            ifTrue:[dataSet paint:(dataSet hgLgFgColor) on:(dataSet hgLgBgColor)].
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   243
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   244
            dataSet displayImage:toggleForm x:(x + extent x) y:(y + extent y).
833
c4e3e579f8bd handle choices
ca
parents: 824
diff changeset
   245
        ].
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   246
        y := y + height.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   247
    ]
833
c4e3e579f8bd handle choices
ca
parents: 824
diff changeset
   248
c4e3e579f8bd handle choices
ca
parents: 824
diff changeset
   249
!
c4e3e579f8bd handle choices
ca
parents: 824
diff changeset
   250
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   251
drawComboButtonsX:xTop y:yTop from:start to:stop with:fgColor and:bgColor
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   252
    "draw ComboButtons between start and stop
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   253
    "
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   254
    |extent buttonForm
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   255
     buttonLevel  "{ Class:SmallInteger }"
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   256
     buttonWidth  "{ Class:SmallInteger }"
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   257
     buttonHeight "{ Class:SmallInteger }"
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   258
     height       "{ Class:SmallInteger }"
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   259
     y            "{ Class:SmallInteger }"
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   260
     x            "{ Class:SmallInteger }"
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   261
    |
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   262
    buttonForm   := dataSet comboButtonForm.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   263
    buttonLevel  := dataSet comboButtonLevel.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   264
    buttonWidth  := buttonExtent x.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   265
    buttonHeight := buttonExtent y.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   266
    height       := dataSet rowHeight.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   267
    extent       := (buttonExtent - buttonForm extent) // 2.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   268
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   269
    y := yTop + (height - buttonHeight - (dataSet separatorSize) // 2).
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   270
    x := xTop + (width  - buttonWidth  - 4).
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   271
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   272
    start to:stop do:[:aRowNr|
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   273
        (self hasChoices:aRowNr) ifTrue:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   274
            dataSet drawEdgesAtX:x y:y width:buttonWidth height:buttonHeight level:buttonLevel.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   275
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   276
            (dataSet isRowSelected:aRowNr) ifFalse:[dataSet paint:fgColor on:bgColor]
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   277
                                            ifTrue:[dataSet paint:(dataSet hgLgFgColor)
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   278
                                                               on:(dataSet hgLgBgColor)
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   279
                                                   ].
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   280
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   281
            dataSet displayImage:buttonForm x:(x + extent x) y:(y + extent y)
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   282
        ].
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   283
        y := y + height.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   284
    ]
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   285
!
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   286
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   287
drawSeparatorsX:xTop y:yTop from:start to:stop with:fgColor
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   288
    "redraw rows between start and stop
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   289
    "
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   290
    |lgCol showColSeparator showRowSeparator yBot
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   291
     h  "{ Class:SmallInteger }"
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   292
     y  "{ Class:SmallInteger }"
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   293
     x  "{ Class:SmallInteger }"
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   294
     n  "{ Class:SmallInteger }"
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   295
    |
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   296
    h := dataSet rowHeight.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   297
    x := xTop + width - 1.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   298
    n := stop - start + 1.
1040
c8e6a2ed7928 use the same background color for a selected rowSelector
ca
parents: 1007
diff changeset
   299
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   300
    (showColSeparator := description showColSeparator) ifTrue:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   301
        yBot := yTop - 1 + (h * n).
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   302
    ] ifFalse:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   303
        (showRowSeparator := description showRowSeparator) ifFalse:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   304
            ^ self
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   305
        ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   306
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   307
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   308
    dataSet separatorSize == 1 ifTrue:[
604
6cee1e2b14c2 bug fix in draw routine:
ca
parents: 595
diff changeset
   309
        dataSet paint:fgColor.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   310
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   311
        showColSeparator ifTrue:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   312
            dataSet displayLineFromX:x y:yTop toX:x y:yBot
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   313
        ].
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   314
        showRowSeparator ifTrue:[
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   315
            y := yTop - 1.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   316
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   317
            n timesRepeat:[
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   318
                y := y + h.
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   319
                dataSet displayLineFromX:xTop y:y toX:x y:y
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   320
            ]
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   321
        ]
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   322
    ] ifFalse:[
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   323
        lgCol := dataSet separatorLightColor.
568
ca
parents: 565
diff changeset
   324
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   325
        showColSeparator ifTrue:[
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   326
            dataSet paint:lgCol.
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   327
            dataSet displayLineFromX:x y:yTop toX:x y:yBot.
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   328
            x := x - 1.
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   329
            dataSet paint:(dataSet separatorDarkColor).
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   330
            dataSet displayLineFromX:x y:yTop toX:x y:yBot.
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   331
        ] ifFalse:[
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   332
            dataSet paint:(dataSet separatorDarkColor).
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   333
            x := x + 1.
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   334
        ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   335
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   336
        showRowSeparator ifTrue:[
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   337
            y := yTop - 2.
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   338
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   339
            n timesRepeat:[
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   340
                y := y + h.
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   341
                dataSet displayLineFromX:xTop y:y toX:x y:y.
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   342
            ].
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   343
            y := yTop - 1.
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   344
            dataSet paint:lgCol.
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   345
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   346
            n timesRepeat:[
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   347
                y := y + h.
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   348
                dataSet displayLineFromX:xTop y:y toX:x y:y.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   349
            ]
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   350
        ]
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   351
    ]
807
46863a1cdd80 access method to retrieve the description
ca
parents: 655
diff changeset
   352
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   353
!
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   354
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   355
invalidate
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   356
    "set to invalidate; forces a recomputation
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   357
    "
568
ca
parents: 565
diff changeset
   358
    minWidth := width := nil.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   359
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   360
!
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   361
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   362
redrawX:xTop y:yTop from:start to:stop with:fgColor and:bgColor
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   363
    "redraw rows between start and stop
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   364
    "
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   365
    |lgCol dkCol fg bg lblFg lblBg label row sel
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   366
     h     "{ Class:SmallInteger }"
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   367
     y     "{ Class:SmallInteger }"
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   368
     x     "{ Class:SmallInteger }"
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   369
     lblX  "{ Class:SmallInteger }"
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   370
     space "{ Class:SmallInteger }"
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   371
     inset "{ Class:SmallInteger }"
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   372
    |
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   373
    h := dataSet rowHeight.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   374
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   375
    (bg := backgroundColor) isNil ifTrue:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   376
        bg := bgColor
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   377
    ] ifFalse:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   378
        dataSet paint:(dataSet colorOnDevice:bg).
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   379
        dataSet fillRectangleX:xTop y:yTop width:width height:(h * (stop - start + 1) - 1)
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   380
    ].
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   381
    fg    := foregroundColor ? fgColor.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   382
    lgCol := dataSet hgLgFgColor.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   383
    dkCol := dataSet hgLgBgColor.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   384
    space := dataSet horizontalSpacing.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   385
    inset := dataSet rowFontAscent.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   386
    y     := yTop.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   387
    x     := xTop + space.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   388
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   389
    start to:stop do:[:anIndex|
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   390
        row := dataSet at:anIndex.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   391
        sel := dataSet isSelected:anIndex inColumn:columnNumber.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   392
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   393
        rendererType == #rowSelector ifTrue:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   394
            sel ifTrue:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   395
                label := dataSet rowSelectorForm.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   396
                sel   := false.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   397
            ] ifFalse:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   398
                label := nil
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   399
            ]
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   400
        ] ifFalse:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   401
            label := drawableAction value:row
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   402
        ].
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   403
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   404
        sel ifTrue:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   405
            dataSet paint:dkCol.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   406
            dataSet fillRectangleX:xTop y:y width:width height:(h - 2).
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   407
            label isText ifTrue:[label := label string].
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   408
            lblBg := dkCol.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   409
            lblFg := lgCol.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   410
        ] ifFalse:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   411
            (bgSelector notNil and:[(lblBg := row perform:bgSelector) notNil]) ifTrue:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   412
                dataSet paint:(lblBg := dataSet colorOnDevice:lblBg).
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   413
                dataSet fillRectangleX:xTop y:y width:width height:(h - 2).                
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   414
            ] ifFalse:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   415
                lblBg := bg
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   416
            ].
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   417
            label notNil ifTrue:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   418
                (fgSelector notNil and:[(lblFg := row perform:fgSelector) notNil]) ifFalse:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   419
                    lblFg := fg.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   420
                ] ifTrue:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   421
                    lblFg := dataSet colorOnDevice:lblFg.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   422
                ].
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   423
            ]
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   424
        ].
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   425
        label notNil ifTrue:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   426
            columnAlignment == #left ifTrue:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   427
                lblX := x
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   428
            ] ifFalse:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   429
                lblX := width - (label widthOn:dataSet).
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   430
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   431
                columnAlignment == #right ifTrue:[lblX := lblX - space]
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   432
                                         ifFalse:[lblX := lblX // 2].
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   433
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   434
                lblX := (xTop + lblX) max:0.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   435
            ].
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   436
            dataSet paint:lblFg on:lblBg.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   437
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   438
            label isImageOrForm ifFalse:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   439
                label displayOn:dataSet x:lblX y:(y + inset)
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   440
            ] ifTrue:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   441
                label displayOn:dataSet x:lblX y:y + ((h - label height - dataSet separatorSize) // 2)
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   442
            ]
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   443
        ].
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   444
        y := y + h.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   445
    ].
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   446
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   447
 "/ DRAW FORM
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   448
    rendererType == #CheckToggle ifTrue:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   449
        self drawCheckTogglesX:xTop y:yTop from:start to:stop with:fgColor and:bgColor
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   450
    ] ifFalse:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   451
        (rendererType == #ComboList or:[rendererType == #ComboBox]) ifTrue:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   452
            self drawComboButtonsX:xTop y:yTop from:start to:stop with:fgColor and:bgColor
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   453
        ]
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   454
    ].
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   455
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   456
 "/ DRAW SEPARATORS
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   457
    self drawSeparatorsX:xTop y:yTop from:start to:stop with:fgColor
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   458
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   459
614
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   460
!DataSetColumn methodsFor:'editing'!
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   461
833
c4e3e579f8bd handle choices
ca
parents: 824
diff changeset
   462
editorAt:aRowNr
c4e3e579f8bd handle choices
ca
parents: 824
diff changeset
   463
    |val row|
614
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   464
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   465
    row := (dataSet at:aRowNr).
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   466
    val := self extractColFromRow:row.
614
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   467
833
c4e3e579f8bd handle choices
ca
parents: 824
diff changeset
   468
    val isText ifTrue:[val := val string].
614
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   469
833
c4e3e579f8bd handle choices
ca
parents: 824
diff changeset
   470
    ^ description editorOn:row value:val.
614
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   471
! !
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   472
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   473
!DataSetColumn methodsFor:'event handling'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   474
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   475
doesNotUnderstand:aMessage
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   476
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   477
    (description respondsTo:(aMessage selector)) ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   478
        ^ aMessage sendTo:description
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   479
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   480
    ^ super doesNotUnderstand:aMessage
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   481
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   482
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   483
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   484
!DataSetColumn methodsFor:'grow & degrow'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   485
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   486
growWidth:n
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   487
    "grow the width for n pixels
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   488
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   489
    width := width + n.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   490
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   491
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   492
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   493
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   494
minWidth
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   495
    "get my minimum width required by the entries into the column
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   496
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   497
    ^ minWidth notNil ifTrue:[minWidth] ifFalse:[self width]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   498
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   499
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   500
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   501
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   502
setMinWidth
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   503
    "set the width to the required width. returns the psitive delta width
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   504
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   505
    |deltaX|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   506
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   507
    deltaX := width - minWidth.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   508
    width  := minWidth.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   509
  ^ deltaX.
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
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   514
!DataSetColumn methodsFor:'initialization'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   515
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   516
on:aDSVColumnView description:aDescription columnNumber:aNumber
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   517
    "instance creation; set attributes dependent on the description
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   518
    "
891
f4d2ed9d3b88 checkin from browser
ca
parents: 883
diff changeset
   519
    |device selector format idx type oldFont newFont|
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   520
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   521
    columnNumber    := aNumber.
584
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   522
    dataSet         := aDSVColumnView.
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   523
    description     := aDescription.
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   524
    rendererType    := description rendererType.
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   525
    width           := nil.
584
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   526
    device          := dataSet device.
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   527
    drawableAction  := [:aRow| nil ].
621
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   528
    fgSelector      := description foregroundSelector.
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   529
    bgSelector      := description backgroundSelector.
584
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   530
    backgroundColor := description backgroundColor.
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   531
    foregroundColor := description foregroundColor.
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   532
    readSelector    := description readSelector.
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   533
    columnAdaptor   := dataSet columnAdaptor.
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   534
    buttonExtent    := 0 @ 0.
883
0a790ad56286 add column justification
ca
parents: 882
diff changeset
   535
    columnAlignment := #left.
584
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   536
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   537
    backgroundColor notNil ifTrue:[
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 807
diff changeset
   538
        backgroundColor := backgroundColor on:dataSet device
584
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   539
    ].
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   540
    foregroundColor notNil ifTrue:[
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 807
diff changeset
   541
        foregroundColor := foregroundColor on:dataSet device
584
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
   542
    ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   543
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 807
diff changeset
   544
    oldFont := nil.
891
f4d2ed9d3b88 checkin from browser
ca
parents: 883
diff changeset
   545
    label   := self resolveLabelWithBuilder:(dataSet builder).
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 807
diff changeset
   546
d2e60c8ac775 support of Drag & Drop
ca
parents: 807
diff changeset
   547
    (label respondsTo:#string) ifTrue:[
d2e60c8ac775 support of Drag & Drop
ca
parents: 807
diff changeset
   548
        "/
d2e60c8ac775 support of Drag & Drop
ca
parents: 807
diff changeset
   549
        "/ must set the font to accumulate the real extent of a string label
d2e60c8ac775 support of Drag & Drop
ca
parents: 807
diff changeset
   550
        "/
d2e60c8ac775 support of Drag & Drop
ca
parents: 807
diff changeset
   551
        (label isString and:[label isEmpty]) ifTrue:[
d2e60c8ac775 support of Drag & Drop
ca
parents: 807
diff changeset
   552
            label := nil
d2e60c8ac775 support of Drag & Drop
ca
parents: 807
diff changeset
   553
        ] ifFalse:[
d2e60c8ac775 support of Drag & Drop
ca
parents: 807
diff changeset
   554
            (newFont := description labelFont) notNil ifTrue:[
d2e60c8ac775 support of Drag & Drop
ca
parents: 807
diff changeset
   555
                oldFont := dataSet font.
d2e60c8ac775 support of Drag & Drop
ca
parents: 807
diff changeset
   556
                dataSet font:newFont.
d2e60c8ac775 support of Drag & Drop
ca
parents: 807
diff changeset
   557
            ]
d2e60c8ac775 support of Drag & Drop
ca
parents: 807
diff changeset
   558
        ]
d2e60c8ac775 support of Drag & Drop
ca
parents: 807
diff changeset
   559
    ].
d2e60c8ac775 support of Drag & Drop
ca
parents: 807
diff changeset
   560
d2e60c8ac775 support of Drag & Drop
ca
parents: 807
diff changeset
   561
    oldFont notNil ifTrue:[
d2e60c8ac775 support of Drag & Drop
ca
parents: 807
diff changeset
   562
        dataSet font:oldFont
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   563
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   564
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   565
    rendererType == #CheckToggle ifTrue:[
807
46863a1cdd80 access method to retrieve the description
ca
parents: 655
diff changeset
   566
        buttonExtent := dataSet checkToggleExtent.
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   567
      ^ self
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   568
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   569
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   570
    rendererType == #rowSelector ifTrue:[
807
46863a1cdd80 access method to retrieve the description
ca
parents: 655
diff changeset
   571
        buttonExtent := dataSet rowSelectorExtent.
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   572
      ^ self
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   573
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   574
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   575
    (rendererType == #ComboBox or:[rendererType == #ComboList]) ifTrue:[
807
46863a1cdd80 access method to retrieve the description
ca
parents: 655
diff changeset
   576
        buttonExtent := dataSet comboButtonExtent.
883
0a790ad56286 add column justification
ca
parents: 882
diff changeset
   577
    ] ifFalse:[
0a790ad56286 add column justification
ca
parents: 882
diff changeset
   578
        columnAlignment := description columnAlignment
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   579
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   580
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   581
    selector := description printSelector.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   582
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   583
    selector notNil ifTrue:[
621
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   584
        drawableAction := [:aRow| aRow perform:selector with:dataSet ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   585
        ^ self
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   586
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   587
614
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   588
    (     (format := description formatString) notNil
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   589
     and:[(type   := description type) == #number or:[type == #numberOrNil]]
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   590
    ) ifTrue:[
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   591
        "/ has a format string for number (supports only floats)
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   592
614
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   593
        (idx := format indexOf:$.) ~~ 0 ifTrue:[
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   594
            idx := format size - idx
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   595
        ].
614
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   596
        format := '%0.', idx printString, 'f'.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   597
621
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   598
        drawableAction := [:aRow||n|
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   599
            n := self extractColFromRow:aRow.
621
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   600
            n isReal ifTrue:[n := n asFloat printfPrintString:format].
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   601
            n
614
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   602
        ]
621
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   603
    ] ifFalse:[         "/ default: no format string
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   604
        drawableAction := [:aRow| self extractColFromRow:aRow ]
614
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
   605
    ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   606
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   607
891
f4d2ed9d3b88 checkin from browser
ca
parents: 883
diff changeset
   608
!
f4d2ed9d3b88 checkin from browser
ca
parents: 883
diff changeset
   609
f4d2ed9d3b88 checkin from browser
ca
parents: 883
diff changeset
   610
resolveLabelWithBuilder:aBuilder
1043
25956296706d optimization
ca
parents: 1041
diff changeset
   611
    |label appl l2|
891
f4d2ed9d3b88 checkin from browser
ca
parents: 883
diff changeset
   612
f4d2ed9d3b88 checkin from browser
ca
parents: 883
diff changeset
   613
    aBuilder isNil ifTrue:[
f4d2ed9d3b88 checkin from browser
ca
parents: 883
diff changeset
   614
        ^ description rawLabel        
f4d2ed9d3b88 checkin from browser
ca
parents: 883
diff changeset
   615
    ].
f4d2ed9d3b88 checkin from browser
ca
parents: 883
diff changeset
   616
f4d2ed9d3b88 checkin from browser
ca
parents: 883
diff changeset
   617
    (label := description label) isString ifTrue:[
f4d2ed9d3b88 checkin from browser
ca
parents: 883
diff changeset
   618
        description labelIsImage ifTrue:[
f4d2ed9d3b88 checkin from browser
ca
parents: 883
diff changeset
   619
            aBuilder isEditing ifTrue:[
f4d2ed9d3b88 checkin from browser
ca
parents: 883
diff changeset
   620
                label := nil
f4d2ed9d3b88 checkin from browser
ca
parents: 883
diff changeset
   621
            ] ifFalse:[
1043
25956296706d optimization
ca
parents: 1041
diff changeset
   622
                (label := aBuilder labelFor:(label asSymbol)) notNil ifTrue:[
25956296706d optimization
ca
parents: 1041
diff changeset
   623
                    ^ label
25956296706d optimization
ca
parents: 1041
diff changeset
   624
                ]
891
f4d2ed9d3b88 checkin from browser
ca
parents: 883
diff changeset
   625
            ].
1043
25956296706d optimization
ca
parents: 1041
diff changeset
   626
            ^ description class defaultIcon
891
f4d2ed9d3b88 checkin from browser
ca
parents: 883
diff changeset
   627
        ].
f4d2ed9d3b88 checkin from browser
ca
parents: 883
diff changeset
   628
        description translateLabel == true ifTrue:[
f4d2ed9d3b88 checkin from browser
ca
parents: 883
diff changeset
   629
            (appl := aBuilder application) notNil ifTrue:[
1043
25956296706d optimization
ca
parents: 1041
diff changeset
   630
                (l2 := appl resources string:label) notNil ifTrue:[
25956296706d optimization
ca
parents: 1041
diff changeset
   631
                    ^ l2
25956296706d optimization
ca
parents: 1041
diff changeset
   632
                ]
891
f4d2ed9d3b88 checkin from browser
ca
parents: 883
diff changeset
   633
            ]
f4d2ed9d3b88 checkin from browser
ca
parents: 883
diff changeset
   634
        ]
f4d2ed9d3b88 checkin from browser
ca
parents: 883
diff changeset
   635
    ].
f4d2ed9d3b88 checkin from browser
ca
parents: 883
diff changeset
   636
    ^ label
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   637
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   638
621
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   639
!DataSetColumn methodsFor:'private'!
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   640
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   641
drawableAt:aRowNr
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   642
    "get the drawable label at an index
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   643
    "
637
e56ec99923ae VW compatible
ca
parents: 621
diff changeset
   644
    ^ drawableAction value:(dataSet at:aRowNr)
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   645
!
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   646
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   647
extractColFromRow:aRow
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   648
    |numArgs|
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   649
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   650
    numArgs := readSelector numArgs.
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   651
    columnAdaptor notNil ifTrue:[
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   652
        numArgs == 1 ifTrue:[
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   653
            ^ columnAdaptor perform:readSelector with:aRow
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   654
        ].
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   655
        ^ columnAdaptor perform:readSelector with:aRow with:columnNumber
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   656
    ].
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   657
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   658
    numArgs == 0 ifTrue:[
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   659
        ^ aRow perform:readSelector
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   660
    ].
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   661
    ^ aRow perform:readSelector with:columnNumber
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   662
!
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   663
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   664
storeCol:newValue inRow:aRow
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   665
    |writeSelector numArgs|
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   666
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   667
    writeSelector := description writeSelector.
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   668
    numArgs := writeSelector numArgs.
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   669
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   670
    columnAdaptor notNil ifTrue:[
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   671
        numArgs == 2 ifTrue:[
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   672
            ^ columnAdaptor perform:writeSelector with:aRow with:newValue
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   673
        ].
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   674
        ^ columnAdaptor perform:writeSelector with:aRow with:columnNumber with:newValue
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   675
    ].
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   676
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   677
    numArgs == 1 ifTrue:[
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   678
        aRow perform:writeSelector with:newValue
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   679
    ] ifFalse:[
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   680
        aRow perform:writeSelector with:columnNumber with:newValue
1059
18f81ba4860d if there is a columnAdaptor,
tz
parents: 1043
diff changeset
   681
    ].
18f81ba4860d if there is a columnAdaptor,
tz
parents: 1043
diff changeset
   682
    ^ aRow
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   683
621
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   684
! !
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   685
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   686
!DataSetColumn methodsFor:'queries'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   687
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   688
canSelect:aRowNr
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   689
    "returns true if cell in column is selectable
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   690
    "
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   691
    |s|
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   692
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   693
    description canSelect ifTrue:[
1065
332afeb89d6b modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   694
        (s := description selectSelector) notNil ifTrue:[
332afeb89d6b modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   695
            columnAdaptor notNil ifTrue:[
332afeb89d6b modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   696
                s numArgs == 2 ifTrue:[
332afeb89d6b modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   697
                    ^ columnAdaptor perform:s with:(dataSet at:aRowNr) with:columnNumber
332afeb89d6b modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   698
                ].
332afeb89d6b modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   699
                ^ columnAdaptor perform:s with:(dataSet at:aRowNr)
332afeb89d6b modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   700
            ].
332afeb89d6b modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   701
            s numArgs == 1 ifTrue:[
332afeb89d6b modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   702
                ^ (dataSet at:aRowNr) perform:s with:columnNumber
332afeb89d6b modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   703
            ].
332afeb89d6b modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   704
            ^ (dataSet at:aRowNr) perform:s
332afeb89d6b modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   705
        ].
332afeb89d6b modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   706
        ^ true
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   707
    ].
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   708
    ^ false
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   709
1065
332afeb89d6b modify the model (i.e. the list), when a
Claus Gittinger <cg@exept.de>
parents: 1059
diff changeset
   710
    "Modified: / 7.8.1998 / 22:49:20 / cg"
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   711
!
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   712
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   713
containsText
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   714
    "returns true if text might exist
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   715
    "
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   716
    ^ (rendererType ~~ #rowSelector and:[rendererType ~~ #CheckToggle])
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   717
!
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   718
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   719
drawableForm
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   720
    rendererType == #CheckToggle ifTrue:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   721
        ^ dataSet checkToggleForm.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   722
    ].
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   723
    (rendererType == #ComboBox or:[rendererType == #ComboList]) ifTrue:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   724
        ^ dataSet comboButtonForm
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   725
    ].
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   726
    rendererType == #rowSelector ifTrue:[
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   727
        ^  dataSet rowSelectorForm
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   728
    ].
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   729
    ^ nil
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   730
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   731
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   732
!
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   733
833
c4e3e579f8bd handle choices
ca
parents: 824
diff changeset
   734
hasChoices:aRowNr
c4e3e579f8bd handle choices
ca
parents: 824
diff changeset
   735
    ^ (description choicesFor:(dataSet at:aRowNr)) notNil
c4e3e579f8bd handle choices
ca
parents: 824
diff changeset
   736
!
c4e3e579f8bd handle choices
ca
parents: 824
diff changeset
   737
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   738
heightOfHighestRow
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   739
    "returns the height of the highest row in pixels
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   740
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   741
    |hObj hMin end|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   742
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   743
    hMin := (dataSet font heightOn:dataSet device) max:(buttonExtent y).
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   744
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   745
    (hObj := description height) == 0 ifTrue:[
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   746
        self containsText ifTrue:[
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   747
            "/ search first none empty drawable object
621
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   748
            end := 10 min:dataSet size.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   749
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   750
            1 to:end do:[:aRowNr| |lbl|
621
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   751
                lbl := self drawableAt:aRowNr.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   752
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   753
                lbl notNil ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   754
                    (lbl respondsTo:#heightOn:) ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   755
                        hObj := lbl heightOn:dataSet
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   756
                    ] ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   757
                        hObj := lbl displayString heightOn:dataSet
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   758
                    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   759
                    ^ hMin max:hObj
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   760
                ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   761
            ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   762
        ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   763
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   764
    ^ hMin max:hObj.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   765
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   766
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   767
!DataSetColumn methodsFor:'searching'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   768
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   769
findRowNrStartingWithChar:aChar start:start stop:stop
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   770
    "find the first row starting at start to stop, which drawable label
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   771
     starts with the character, aChar. The index of the detected row is
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   772
     returned or if no row is found 0.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   773
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   774
    |char|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   775
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
   776
    self containsText ifTrue:[
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   777
        char  := aChar asLowercase.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   778
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   779
        start to:stop do:[:aRowNr| |lbl|
621
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
   780
            lbl := self drawableAt:aRowNr.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   781
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   782
            lbl isString ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   783
                (lbl size ~~ 0 and:[(lbl at:1) asLowercase == char]) ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   784
                    ^ aRowNr
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   785
                ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   786
            ] ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   787
                lbl isNil ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   788
                    ^ 0
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   789
                ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   790
            ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   791
        ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   792
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   793
    ^ 0
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   794
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   795
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   796
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   797
!DataSetColumn class methodsFor:'documentation'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   798
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   799
version
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   800
    ^ '$Header: /cvs/stx/stx/libwidg2/DataSetColumn.st,v 1.29 1998-08-23 13:14:46 ca Exp $'
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   801
! !