DataSetColumn.st
author Jan Vrany <jan.vrany@labware.com>
Fri, 02 Sep 2022 11:25:39 +0100
branchjv
changeset 6261 9b7eb7159d29
parent 6246 0fcf80697af7
permissions -rw-r--r--
Fix loong standing bug with some menus not being translated / resolved This has happened with browser "View" menu when sometimes it had the slice resolved and sometimes not. It turned out that it was because the code disabled resources (and therefore slices) resolution when processing shortcuts, so the menu was created and cached unresolved. This fixes the issue. eXept apparently run into the same problem.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6246
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
     1
"{ Encoding: utf8 }"
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
     2
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     3
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     4
 COPYRIGHT (c) 1997 by Claus Gittinger / eXept Software AG
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     5
              All Rights Reserved
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     6
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     7
 This software is furnished under a license and may be used
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     8
 only in accordance with the terms of that license and with the
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     9
 inclusion of the above copyright notice.   This software may not
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    10
 be provided or otherwise made available to, or used by, any
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    11
 other person.  No title to or ownership of the software is
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    12
 hereby transferred.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    13
"
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1725
diff changeset
    14
"{ Package: 'stx:libwidg2' }"
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1725
diff changeset
    15
4821
b53364768c88 class: DataSetColumn
Claus Gittinger <cg@exept.de>
parents: 4660
diff changeset
    16
"{ NameSpace: Smalltalk }"
b53364768c88 class: DataSetColumn
Claus Gittinger <cg@exept.de>
parents: 4660
diff changeset
    17
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    18
Object subclass:#DataSetColumn
3775
ce35b13cd5bf code cleanup
Claus Gittinger <cg@exept.de>
parents: 3771
diff changeset
    19
	instanceVariableNames:'columnNumber dataSet width description buttonExtent rendererType
ce35b13cd5bf code cleanup
Claus Gittinger <cg@exept.de>
parents: 3771
diff changeset
    20
		backgroundColor foregroundColor rowSeparatorSelector
ce35b13cd5bf code cleanup
Claus Gittinger <cg@exept.de>
parents: 3771
diff changeset
    21
		showColSeparator showRowSeparator columnAlignment label
ce35b13cd5bf code cleanup
Claus Gittinger <cg@exept.de>
parents: 3771
diff changeset
    22
		containsText columnAdaptor descWidth descMinWidth
ce35b13cd5bf code cleanup
Claus Gittinger <cg@exept.de>
parents: 3771
diff changeset
    23
		longStringCompression minValue maxValue'
6246
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
    24
	classVariableNames:'EditorType_None EditorType_ComboBox EditorType_ComboList
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
    25
		EditorType_CheckToggle EditorType_RadioButton
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
    26
		EditorType_InputField EditorType_Text EditorType_PopUpList
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
    27
		EditorType_rowSelector'
3775
ce35b13cd5bf code cleanup
Claus Gittinger <cg@exept.de>
parents: 3771
diff changeset
    28
	poolDictionaries:''
ce35b13cd5bf code cleanup
Claus Gittinger <cg@exept.de>
parents: 3771
diff changeset
    29
	category:'Views-DataSet'
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    30
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    31
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    32
!DataSetColumn class methodsFor:'documentation'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    33
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    34
copyright
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    35
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    36
 COPYRIGHT (c) 1997 by Claus Gittinger / eXept Software AG
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    37
              All Rights Reserved
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    38
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    39
 This software is furnished under a license and may be used
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    40
 only in accordance with the terms of that license and with the
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    41
 inclusion of the above copyright notice.   This software may not
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    42
 be provided or otherwise made available to, or used by, any
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    43
 other person.  No title to or ownership of the software is
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    44
 hereby transferred.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    45
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    46
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    47
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    48
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    49
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    50
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    51
documentation
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    52
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    53
    represent one single column description of a DataSetView
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    54
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    55
    [Instance variables:]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    56
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    57
        columnNumber    <Integer>               sequence number (into list of columns)
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    58
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    59
        dataSet         <DSVColumnView>         the view it belongs to
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
        width           <Integer>               width of column
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    62
2710
fcfa161492ae added selectedFg/selectedBG attributes
Claus Gittinger <cg@exept.de>
parents: 2694
diff changeset
    63
        description     <DataSetColumnSpec>     the column description (a spec)
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    64
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
    65
        buttonExtent    <Point>                 extent of drawable form
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    66
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    67
        rendererType    <Type>                  renderer type (cached value from
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    68
                                                the column specification).
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    69
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    70
        backgroundColor <Color or nil>          background color of all cells or nil
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    71
                                                (nil: use default background color).
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    72
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    73
        foregroundColor <Color or nil>          foreground color of all cells or nil
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
    74
                                                (nil: use default foreground color).
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    75
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
    76
        columnAlignment <Symbol>                align text/icon #left #right or #center
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
    77
                                                in row (on default: #left).
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
    78
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
    79
        label           <label/icon or nil>     label resolved by the builder shown
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
    80
                                                in the column description field.
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
    81
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    82
        readSelector    <Symbol>                cached readSelector (from the spec)
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    83
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    84
        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
    85
                                                read-writeSelectors to extract a column
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    86
                                                from a row object.
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    87
                                                If nil, the row object is used itself.
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
    88
1113
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
    89
        showColSeparator <Boolean>              true: vertical separators are enabled;
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
    90
                                                separator between columns
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
    91
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
    92
        showRowSeparator <Boolean>              true: horizontal separators are enabled;
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
    93
                                                separator between rows
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
    94
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
    95
        rowSeparatorSelector <Selector or nil>  access specific showRowSeparator state
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
    96
                                                for a cell
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    97
2154
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
    98
    [from description:]
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
    99
        fgSelector      <Selector or nil>       access specific foreground color for
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   100
                                                a cell
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   101
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   102
        bgSelector      <Selector or nil>       access specific background color for
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   103
                                                a cell
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   104
1725
897453804fa8 made numberOfRowsProbedForSize a variable;
Claus Gittinger <cg@exept.de>
parents: 1712
diff changeset
   105
        numberOfRowsProbedForColumnSize         the number of rows which are queries
897453804fa8 made numberOfRowsProbedForSize a variable;
Claus Gittinger <cg@exept.de>
parents: 1712
diff changeset
   106
                                <Integer>       in order to compute the columns width.
897453804fa8 made numberOfRowsProbedForSize a variable;
Claus Gittinger <cg@exept.de>
parents: 1712
diff changeset
   107
                                                (for scrollBar/col width computation)
897453804fa8 made numberOfRowsProbedForSize a variable;
Claus Gittinger <cg@exept.de>
parents: 1712
diff changeset
   108
                                                Notice, if its expensive to fetch rows
897453804fa8 made numberOfRowsProbedForSize a variable;
Claus Gittinger <cg@exept.de>
parents: 1712
diff changeset
   109
                                                (dataBase apps), this should be small.
897453804fa8 made numberOfRowsProbedForSize a variable;
Claus Gittinger <cg@exept.de>
parents: 1712
diff changeset
   110
                                                Default:15
897453804fa8 made numberOfRowsProbedForSize a variable;
Claus Gittinger <cg@exept.de>
parents: 1712
diff changeset
   111
2154
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   112
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   113
    [author:]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   114
        Claus Atzkern
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   115
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   116
    [see also:]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   117
        DataSetColumnSpec
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   118
        DSVColumnView
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   119
        DataSetView
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   120
"
2154
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   121
! !
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   122
6246
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   123
!DataSetColumn class methodsFor:'initialization'!
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   124
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   125
initialize
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   126
    EditorType_None := #None.
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   127
    EditorType_ComboBox := #ComboBox.
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   128
    EditorType_ComboList := #ComboList.
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   129
    EditorType_CheckToggle := #CheckToggle.
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   130
    EditorType_RadioButton := #RadioButton.
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   131
    EditorType_InputField := #InputField.
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   132
    EditorType_Text := #Text.
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   133
    EditorType_PopUpList := #PopUpList.
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   134
    EditorType_rowSelector := #rowSelector.
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   135
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   136
    "Created: / 25-07-2020 / 15:10:59 / cg"
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   137
! !
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   138
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   139
!DataSetColumn class methodsFor:'constants'!
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   140
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   141
editorType_CheckToggle
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   142
    ^ EditorType_CheckToggle
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   143
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   144
    "Created: / 25-07-2020 / 14:55:34 / cg"
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   145
!
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   146
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   147
editorType_ComboBox
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   148
    ^ EditorType_ComboBox
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   149
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   150
    "Created: / 25-07-2020 / 14:55:18 / cg"
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   151
!
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   152
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   153
editorType_ComboList
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   154
    ^ EditorType_ComboList
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   155
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   156
    "Created: / 25-07-2020 / 14:55:26 / cg"
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   157
!
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   158
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   159
editorType_InputField
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   160
    ^ EditorType_InputField
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   161
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   162
    "Created: / 25-07-2020 / 14:56:45 / cg"
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   163
!
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   164
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   165
editorType_None
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   166
    ^ EditorType_None
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   167
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   168
    "Created: / 25-07-2020 / 14:55:10 / cg"
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   169
!
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   170
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   171
editorType_PopUpList
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   172
    ^ EditorType_PopUpList
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   173
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   174
    "Created: / 25-07-2020 / 15:09:22 / cg"
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   175
!
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   176
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   177
editorType_RadioButton
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   178
    ^ EditorType_RadioButton
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   179
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   180
    "Created: / 25-07-2020 / 14:55:41 / cg"
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   181
!
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   182
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   183
editorType_Text
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   184
    ^ EditorType_Text
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   185
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   186
    "Created: / 25-07-2020 / 15:09:02 / cg"
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   187
!
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   188
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   189
editorType_rowSelector
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   190
    ^ EditorType_rowSelector
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   191
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   192
    "Created: / 25-07-2020 / 15:12:28 / cg"
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   193
! !
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   194
2154
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   195
!DataSetColumn class methodsFor:'utilities'!
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   196
2154
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   197
shortenedStringFor:aString on:aGC maxWidth:maxWidth
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   198
    "common code to shorten a string; used in both the DSV label- and column Views,  
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   199
     if the string is too long for the column"
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   200
2221
19a1500f8113 write to a column no longer installs the
james
parents: 2211
diff changeset
   201
    |widthOf3Dots wRest shortenedLabel lUsed lMin lMax|
2154
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   202
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   203
    aString isString ifFalse:[^ aString].
4234
63f563c5aca9 Fix stc compiler warnings
Stefan Vogel <sv@exept.de>
parents: 4230
diff changeset
   204
    (aString widthOn:aGC) <= maxWidth ifTrue:[^ aString].
2154
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   205
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   206
    widthOf3Dots := '...' widthOn:aGC.
2221
19a1500f8113 write to a column no longer installs the
james
parents: 2211
diff changeset
   207
19a1500f8113 write to a column no longer installs the
james
parents: 2211
diff changeset
   208
    lMin := 1.
19a1500f8113 write to a column no longer installs the
james
parents: 2211
diff changeset
   209
    lMax := aString size.
2154
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   210
    [ 
2221
19a1500f8113 write to a column no longer installs the
james
parents: 2211
diff changeset
   211
        lUsed := (lMax + lMin) // 2.
19a1500f8113 write to a column no longer installs the
james
parents: 2211
diff changeset
   212
        wRest := aString widthFrom:1 to:lUsed on:aGC.
19a1500f8113 write to a column no longer installs the
james
parents: 2211
diff changeset
   213
        wRest > (maxWidth-widthOf3Dots) ifTrue:[
19a1500f8113 write to a column no longer installs the
james
parents: 2211
diff changeset
   214
            lMax := lUsed - 1.
19a1500f8113 write to a column no longer installs the
james
parents: 2211
diff changeset
   215
        ] ifFalse:[
19a1500f8113 write to a column no longer installs the
james
parents: 2211
diff changeset
   216
            lMin := lUsed + 1.
19a1500f8113 write to a column no longer installs the
james
parents: 2211
diff changeset
   217
        ].
19a1500f8113 write to a column no longer installs the
james
parents: 2211
diff changeset
   218
        lMin < lMax
19a1500f8113 write to a column no longer installs the
james
parents: 2211
diff changeset
   219
    ] whileTrue.
19a1500f8113 write to a column no longer installs the
james
parents: 2211
diff changeset
   220
    shortenedLabel := aString copyFrom:1 to:lUsed.
19a1500f8113 write to a column no longer installs the
james
parents: 2211
diff changeset
   221
2154
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   222
    shortenedLabel isEmpty ifTrue:[
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   223
        ((aString first asString , '..') widthOn:aGC) < maxWidth ifTrue:[
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   224
            "/ only two dots and the first character
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   225
            ^ (aString first asString , '..')
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   226
        ]
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   227
    ].
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   228
    ^ (shortenedLabel , '...').
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   229
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   230
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   231
!DataSetColumn methodsFor:'accessing'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   232
3211
69cc92eb7a77 +activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3210
diff changeset
   233
activeHelpText
69cc92eb7a77 +activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3210
diff changeset
   234
    "get the active helpText or nil"
69cc92eb7a77 +activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3210
diff changeset
   235
69cc92eb7a77 +activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3210
diff changeset
   236
    |app key|
69cc92eb7a77 +activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3210
diff changeset
   237
3869
20d5ddff9541 changed:
Claus Gittinger <cg@exept.de>
parents: 3856
diff changeset
   238
    ((key := description activeHelpKey) notEmptyOrNil 
3211
69cc92eb7a77 +activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3210
diff changeset
   239
    and:[(app := dataSet application) notNil]) ifTrue:[
3869
20d5ddff9541 changed:
Claus Gittinger <cg@exept.de>
parents: 3856
diff changeset
   240
        ^ app flyByHelpTextForKey:key asSymbol.
3211
69cc92eb7a77 +activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3210
diff changeset
   241
    ].
3218
Claus Gittinger <cg@exept.de>
parents: 3213
diff changeset
   242
    ^ nil
3211
69cc92eb7a77 +activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3210
diff changeset
   243
69cc92eb7a77 +activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3210
diff changeset
   244
    "Created: / 26-03-2007 / 13:39:11 / cg"
3218
Claus Gittinger <cg@exept.de>
parents: 3213
diff changeset
   245
    "Modified: / 26-03-2007 / 17:51:15 / cg"
3211
69cc92eb7a77 +activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3210
diff changeset
   246
!
69cc92eb7a77 +activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3210
diff changeset
   247
3522
3a173979096d allow for separate activeHelp for the label area
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   248
activeHelpTextForLabel
3a173979096d allow for separate activeHelp for the label area
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   249
    "get the active helpText for the label or nil"
3a173979096d allow for separate activeHelp for the label area
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   250
3a173979096d allow for separate activeHelp for the label area
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   251
    |app key|
3a173979096d allow for separate activeHelp for the label area
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   252
3869
20d5ddff9541 changed:
Claus Gittinger <cg@exept.de>
parents: 3856
diff changeset
   253
    ((key := description activeHelpKeyForLabel) notEmptyOrNil 
3522
3a173979096d allow for separate activeHelp for the label area
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   254
    and:[(app := dataSet application) notNil]) ifTrue:[
3869
20d5ddff9541 changed:
Claus Gittinger <cg@exept.de>
parents: 3856
diff changeset
   255
        ^ app flyByHelpTextForKey:key asSymbol.
3522
3a173979096d allow for separate activeHelp for the label area
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   256
    ].
3a173979096d allow for separate activeHelp for the label area
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   257
    ^ nil
3a173979096d allow for separate activeHelp for the label area
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   258
3a173979096d allow for separate activeHelp for the label area
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   259
    "Created: / 26-03-2007 / 13:39:11 / cg"
3a173979096d allow for separate activeHelp for the label area
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   260
    "Modified: / 26-03-2007 / 17:51:15 / cg"
3a173979096d allow for separate activeHelp for the label area
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   261
!
3a173979096d allow for separate activeHelp for the label area
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   262
3459
6d1feb9745b8 changed #activeHelpTextForRow:
Stefan Vogel <sv@exept.de>
parents: 3448
diff changeset
   263
activeHelpTextForRow:rowNr
6d1feb9745b8 changed #activeHelpTextForRow:
Stefan Vogel <sv@exept.de>
parents: 3448
diff changeset
   264
    "get the active helpText or nil"
6d1feb9745b8 changed #activeHelpTextForRow:
Stefan Vogel <sv@exept.de>
parents: 3448
diff changeset
   265
6d1feb9745b8 changed #activeHelpTextForRow:
Stefan Vogel <sv@exept.de>
parents: 3448
diff changeset
   266
    |app key|
6d1feb9745b8 changed #activeHelpTextForRow:
Stefan Vogel <sv@exept.de>
parents: 3448
diff changeset
   267
3460
a2c21a2e959c changed #activeHelpTextForRow:
Stefan Vogel <sv@exept.de>
parents: 3459
diff changeset
   268
    ((key := description activeHelpKey) notEmptyOrNil 
3459
6d1feb9745b8 changed #activeHelpTextForRow:
Stefan Vogel <sv@exept.de>
parents: 3448
diff changeset
   269
    and:[(app := dataSet application) notNil]) ifTrue:[
3511
Claus Gittinger <cg@exept.de>
parents: 3505
diff changeset
   270
        ^ app flyByHelpTextForKey:key asSymbol row:rowNr.
3459
6d1feb9745b8 changed #activeHelpTextForRow:
Stefan Vogel <sv@exept.de>
parents: 3448
diff changeset
   271
    ].
6d1feb9745b8 changed #activeHelpTextForRow:
Stefan Vogel <sv@exept.de>
parents: 3448
diff changeset
   272
    ^ nil
6d1feb9745b8 changed #activeHelpTextForRow:
Stefan Vogel <sv@exept.de>
parents: 3448
diff changeset
   273
6d1feb9745b8 changed #activeHelpTextForRow:
Stefan Vogel <sv@exept.de>
parents: 3448
diff changeset
   274
    "Created: / 26-03-2007 / 13:39:11 / cg"
6d1feb9745b8 changed #activeHelpTextForRow:
Stefan Vogel <sv@exept.de>
parents: 3448
diff changeset
   275
    "Modified: / 26-03-2007 / 17:51:15 / cg"
6d1feb9745b8 changed #activeHelpTextForRow:
Stefan Vogel <sv@exept.de>
parents: 3448
diff changeset
   276
!
6d1feb9745b8 changed #activeHelpTextForRow:
Stefan Vogel <sv@exept.de>
parents: 3448
diff changeset
   277
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   278
at:aRowNr
3505
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   279
    "get the value of the cell at the row index, aRowNr"
2211
f14db8e094b9 pass rowNr and dataSet as additional args to
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
   280
f14db8e094b9 pass rowNr and dataSet as additional args to
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
   281
    |row|
f14db8e094b9 pass rowNr and dataSet as additional args to
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
   282
f14db8e094b9 pass rowNr and dataSet as additional args to
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
   283
    row := dataSet at:aRowNr.
f14db8e094b9 pass rowNr and dataSet as additional args to
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
   284
    ^ self extractColFromRow:row rowNr:aRowNr.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   285
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   286
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   287
at:aRowNr put:something
3505
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   288
    "set the value of the cell at the row index, aRowNr"
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   289
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   290
    |row|
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   291
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   292
    row := dataSet at:aRowNr.
2419
e0121908fffe added longStringCompression flag
Claus Gittinger <cg@exept.de>
parents: 2222
diff changeset
   293
    self storeCol:something inRow:row.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   294
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   295
1558
00b34d71898a columnAdaptor also used when retrieving a ComboBoxes list.
Claus Gittinger <cg@exept.de>
parents: 1526
diff changeset
   296
columnAdaptor
00b34d71898a columnAdaptor also used when retrieving a ComboBoxes list.
Claus Gittinger <cg@exept.de>
parents: 1526
diff changeset
   297
    ^ columnAdaptor
00b34d71898a columnAdaptor also used when retrieving a ComboBoxes list.
Claus Gittinger <cg@exept.de>
parents: 1526
diff changeset
   298
!
00b34d71898a columnAdaptor also used when retrieving a ComboBoxes list.
Claus Gittinger <cg@exept.de>
parents: 1526
diff changeset
   299
1712
5511cc404d6b accessor for columnAdapter (can now be a valueHolder)
ca
parents: 1592
diff changeset
   300
columnAdaptor:anAdapter
5511cc404d6b accessor for columnAdapter (can now be a valueHolder)
ca
parents: 1592
diff changeset
   301
    columnAdaptor := anAdapter.
5511cc404d6b accessor for columnAdapter (can now be a valueHolder)
ca
parents: 1592
diff changeset
   302
!
5511cc404d6b accessor for columnAdapter (can now be a valueHolder)
ca
parents: 1592
diff changeset
   303
3505
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   304
columnNumber
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   305
    ^ columnNumber
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   306
!
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   307
807
46863a1cdd80 access method to retrieve the description
ca
parents: 655
diff changeset
   308
description
2710
fcfa161492ae added selectedFg/selectedBG attributes
Claus Gittinger <cg@exept.de>
parents: 2694
diff changeset
   309
    "returns the column spec
807
46863a1cdd80 access method to retrieve the description
ca
parents: 655
diff changeset
   310
    "
46863a1cdd80 access method to retrieve the description
ca
parents: 655
diff changeset
   311
    ^ description
46863a1cdd80 access method to retrieve the description
ca
parents: 655
diff changeset
   312
!
46863a1cdd80 access method to retrieve the description
ca
parents: 655
diff changeset
   313
5054
a660f11bc670 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 4963
diff changeset
   314
doubleClickedSelector
a660f11bc670 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 4963
diff changeset
   315
    ^ description doubleClickedSelector
a660f11bc670 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 4963
diff changeset
   316
!
a660f11bc670 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 4963
diff changeset
   317
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   318
label
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   319
    "get the label assigned to the column
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   320
    "
891
f4d2ed9d3b88 checkin from browser
ca
parents: 883
diff changeset
   321
    ^ label
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   322
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   323
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   324
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   325
2419
e0121908fffe added longStringCompression flag
Claus Gittinger <cg@exept.de>
parents: 2222
diff changeset
   326
longStringCompression:aBoolean
e0121908fffe added longStringCompression flag
Claus Gittinger <cg@exept.de>
parents: 2222
diff changeset
   327
    ^ longStringCompression ? true
e0121908fffe added longStringCompression flag
Claus Gittinger <cg@exept.de>
parents: 2222
diff changeset
   328
!
e0121908fffe added longStringCompression flag
Claus Gittinger <cg@exept.de>
parents: 2222
diff changeset
   329
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   330
rendererType
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   331
    "returns my renderer type
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   332
    "
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   333
    ^ rendererType
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   334
! !
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   335
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1725
diff changeset
   336
!DataSetColumn methodsFor:'accessing-colors'!
1565
ca
parents: 1559
diff changeset
   337
ca
parents: 1559
diff changeset
   338
backgroundColor
ca
parents: 1559
diff changeset
   339
    "returns the background color or nil
ca
parents: 1559
diff changeset
   340
    "
2710
fcfa161492ae added selectedFg/selectedBG attributes
Claus Gittinger <cg@exept.de>
parents: 2694
diff changeset
   341
    ^ backgroundColor == dataSet backgroundColor ifTrue:[nil] ifFalse:[backgroundColor]
1565
ca
parents: 1559
diff changeset
   342
!
ca
parents: 1559
diff changeset
   343
2693
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   344
backgroundColor: aColor
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   345
    backgroundColor := aColor
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   346
!
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   347
1565
ca
parents: 1559
diff changeset
   348
backgroundColorAt:aRowNr
ca
parents: 1559
diff changeset
   349
    "returns the background color for a row at list index a rowNr
ca
parents: 1559
diff changeset
   350
    "
2154
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   351
    description backgroundSelector notNil ifTrue:[
1565
ca
parents: 1559
diff changeset
   352
        ^ self backgroundColorFor:(dataSet at:aRowNr) at:aRowNr
ca
parents: 1559
diff changeset
   353
    ].
ca
parents: 1559
diff changeset
   354
    ^ backgroundColor
ca
parents: 1559
diff changeset
   355
!
ca
parents: 1559
diff changeset
   356
2211
f14db8e094b9 pass rowNr and dataSet as additional args to
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
   357
backgroundColorFor:aRow at:aRowNr     
2727
5cb5708a6982 No extra handling needed for LimitedPrecisionReal
Stefan Vogel <sv@exept.de>
parents: 2710
diff changeset
   358
    "return the background color for a row at list index a rowNr"
5cb5708a6982 No extra handling needed for LimitedPrecisionReal
Stefan Vogel <sv@exept.de>
parents: 2710
diff changeset
   359
3210
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   360
    "/ backgroundColor has already been fetched from description/dataSet (see #initialize)
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   361
    ^ self
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   362
        colorFor:aRow at:aRowNr 
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   363
        descriptionSelector:(description backgroundSelector) 
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   364
        descriptionColor:backgroundColor 
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   365
        dataSetDefaultColor:nil
1565
ca
parents: 1559
diff changeset
   366
3210
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   367
    "Modified: / 26-03-2007 / 13:27:19 / cg"
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   368
!
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   369
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   370
colorFor:aRow at:aRowNr descriptionSelector:descriptionSelector descriptionColor:descriptionColor dataSetDefaultColor:dataSetColor    
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   371
    "common code for returning a color for a row at list index a rowNr, asking both description and dataSet as fallBack"
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   372
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   373
    |clr|
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   374
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   375
    descriptionSelector notNil ifTrue:[
1924
634dd19b10bf allow use of a column adaptor for fg/bg colors
ca
parents: 1818
diff changeset
   376
        columnAdaptor notNil ifTrue:[
3210
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   377
            clr := columnAdaptor perform:descriptionSelector withOptionalArgument:aRow and:aRowNr and:columnNumber and:dataSet
1565
ca
parents: 1559
diff changeset
   378
        ] ifFalse:[
4660
985b9030eab6 When extracting color, send the color-message to the application itself it the
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4566
diff changeset
   379
            "/ Check if row-object responds to the color message...
985b9030eab6 When extracting color, send the color-message to the application itself it the
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4566
diff changeset
   380
            (aRow respondsTo: descriptionSelector) ifTrue:[
985b9030eab6 When extracting color, send the color-message to the application itself it the
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4566
diff changeset
   381
                clr := aRow perform:descriptionSelector withOptionalArgument:aRowNr and:columnNumber and:dataSet
985b9030eab6 When extracting color, send the color-message to the application itself it the
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4566
diff changeset
   382
            ] ifFalse:[ 
985b9030eab6 When extracting color, send the color-message to the application itself it the
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4566
diff changeset
   383
                "/ ...if not, send the message to the application model. This allows application models to
985b9030eab6 When extracting color, send the color-message to the application itself it the
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4566
diff changeset
   384
                "/ define visual aspects while data still could be extracted from the row-objects directly. 
985b9030eab6 When extracting color, send the color-message to the application itself it the
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4566
diff changeset
   385
985b9030eab6 When extracting color, send the color-message to the application itself it the
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4566
diff changeset
   386
                | app |
985b9030eab6 When extracting color, send the color-message to the application itself it the
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4566
diff changeset
   387
985b9030eab6 When extracting color, send the color-message to the application itself it the
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4566
diff changeset
   388
                app := dataSet application.
985b9030eab6 When extracting color, send the color-message to the application itself it the
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4566
diff changeset
   389
                app notNil ifTrue:[ 
985b9030eab6 When extracting color, send the color-message to the application itself it the
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4566
diff changeset
   390
                    clr := app perform:descriptionSelector withOptionalArgument:aRow and:aRowNr and:columnNumber and:dataSet
985b9030eab6 When extracting color, send the color-message to the application itself it the
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4566
diff changeset
   391
                ].
985b9030eab6 When extracting color, send the color-message to the application itself it the
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4566
diff changeset
   392
            ].
1565
ca
parents: 1559
diff changeset
   393
        ].
3210
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   394
        clr notNil ifTrue:[
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   395
            (clr isColor or:[clr isImageOrForm]) ifTrue:[
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   396
                ^ clr
1928
2dcf8e62af64 debug: care for non-color to be returned from fg/bg message.
Claus Gittinger <cg@exept.de>
parents: 1924
diff changeset
   397
            ].
3210
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   398
            self error:'unexpected color (not a color or image)'.
1928
2dcf8e62af64 debug: care for non-color to be returned from fg/bg message.
Claus Gittinger <cg@exept.de>
parents: 1924
diff changeset
   399
        ]
1565
ca
parents: 1559
diff changeset
   400
    ].
3210
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   401
    ^ descriptionColor ? dataSetColor
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   402
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   403
    "Created: / 26-03-2007 / 13:05:24 / cg"
4660
985b9030eab6 When extracting color, send the color-message to the application itself it the
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4566
diff changeset
   404
    "Modified: / 23-09-2014 / 11:35:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1565
ca
parents: 1559
diff changeset
   405
!
ca
parents: 1559
diff changeset
   406
ca
parents: 1559
diff changeset
   407
foregroundColor
ca
parents: 1559
diff changeset
   408
    "returns the foreground color or nil
ca
parents: 1559
diff changeset
   409
    "
2710
fcfa161492ae added selectedFg/selectedBG attributes
Claus Gittinger <cg@exept.de>
parents: 2694
diff changeset
   410
    ^ foregroundColor == dataSet foregroundColor ifTrue:[nil] ifFalse:[foregroundColor]
1565
ca
parents: 1559
diff changeset
   411
!
ca
parents: 1559
diff changeset
   412
2693
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   413
foregroundColor: aColor
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   414
    foregroundColor := aColor
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   415
!
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   416
1565
ca
parents: 1559
diff changeset
   417
foregroundColorFor:aRow at:aRowNr
ca
parents: 1559
diff changeset
   418
    "returns the foreground color for a row at list index a rowNr
ca
parents: 1559
diff changeset
   419
    "
ca
parents: 1559
diff changeset
   420
3210
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   421
    "/ foregroundColor has already been fetched from description/dataSet (see #initialize)
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   422
    ^ self
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   423
        colorFor:aRow at:aRowNr 
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   424
        descriptionSelector:(description foregroundSelector) 
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   425
        descriptionColor:foregroundColor 
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   426
        dataSetDefaultColor:nil
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   427
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   428
    "Modified: / 26-03-2007 / 13:27:39 / cg"
2710
fcfa161492ae added selectedFg/selectedBG attributes
Claus Gittinger <cg@exept.de>
parents: 2694
diff changeset
   429
!
fcfa161492ae added selectedFg/selectedBG attributes
Claus Gittinger <cg@exept.de>
parents: 2694
diff changeset
   430
fcfa161492ae added selectedFg/selectedBG attributes
Claus Gittinger <cg@exept.de>
parents: 2694
diff changeset
   431
selectedBackgroundColorFor:aRow at:aRowNr     
3210
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   432
    "returns the selected background color for a row at list index a rowNr"
2710
fcfa161492ae added selectedFg/selectedBG attributes
Claus Gittinger <cg@exept.de>
parents: 2694
diff changeset
   433
3210
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   434
    ^ self
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   435
        colorFor:aRow at:aRowNr 
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   436
        descriptionSelector:(description selectedBackgroundSelector) 
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   437
        descriptionColor:(description selectedBackgroundColor) 
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   438
        dataSetDefaultColor:(dataSet selectionBackgroundColor)
3139
6ef356fd2303 new selectionHandling - buttonPress
ca
parents: 2897
diff changeset
   439
3210
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   440
    "Modified: / 26-03-2007 / 13:06:06 / cg"
2710
fcfa161492ae added selectedFg/selectedBG attributes
Claus Gittinger <cg@exept.de>
parents: 2694
diff changeset
   441
!
fcfa161492ae added selectedFg/selectedBG attributes
Claus Gittinger <cg@exept.de>
parents: 2694
diff changeset
   442
fcfa161492ae added selectedFg/selectedBG attributes
Claus Gittinger <cg@exept.de>
parents: 2694
diff changeset
   443
selectedForegroundColorFor:aRow at:aRowNr     
3210
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   444
    "returns the selected foreground color for a row at list index a rowNr"
2710
fcfa161492ae added selectedFg/selectedBG attributes
Claus Gittinger <cg@exept.de>
parents: 2694
diff changeset
   445
3210
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   446
    ^ self
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   447
        colorFor:aRow at:aRowNr 
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   448
        descriptionSelector:(description selectedForegroundSelector) 
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   449
        descriptionColor:(description selectedForegroundColor) 
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   450
        dataSetDefaultColor:(dataSet selectionForegroundColor)
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   451
d6e4a96f8597 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3139
diff changeset
   452
    "Modified: / 26-03-2007 / 13:05:31 / cg"
3990
a1ed686544e0 added: #selectedFrameColorFor:at:
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
   453
!
a1ed686544e0 added: #selectedFrameColorFor:at:
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
   454
a1ed686544e0 added: #selectedFrameColorFor:at:
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
   455
selectedFrameColorFor:aRow at:aRowNr     
a1ed686544e0 added: #selectedFrameColorFor:at:
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
   456
    "returns the selected frame color for a row at list index a rowNr"
a1ed686544e0 added: #selectedFrameColorFor:at:
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
   457
a1ed686544e0 added: #selectedFrameColorFor:at:
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
   458
    ^ self
a1ed686544e0 added: #selectedFrameColorFor:at:
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
   459
        colorFor:aRow at:aRowNr 
a1ed686544e0 added: #selectedFrameColorFor:at:
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
   460
        descriptionSelector:(description selectedBackgroundSelector) 
a1ed686544e0 added: #selectedFrameColorFor:at:
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
   461
        descriptionColor:(description selectedBackgroundColor) 
a1ed686544e0 added: #selectedFrameColorFor:at:
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
   462
        dataSetDefaultColor:(dataSet selectionFrameColor)
a1ed686544e0 added: #selectedFrameColorFor:at:
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
   463
a1ed686544e0 added: #selectedFrameColorFor:at:
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
   464
    "Created: / 20-01-2011 / 08:46:32 / cg"
1565
ca
parents: 1559
diff changeset
   465
! !
ca
parents: 1559
diff changeset
   466
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1725
diff changeset
   467
!DataSetColumn methodsFor:'accessing-dimension'!
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   468
1484
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
   469
minWidth
1490
9c418c3aaf49 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   470
    "get the minimum width required by the column
1484
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
   471
    "
1490
9c418c3aaf49 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   472
    descMinWidth notNil ifTrue:[
9c418c3aaf49 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   473
        ^ descMinWidth
9c418c3aaf49 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   474
    ].
4414
3ec865b931a3 class: DataSetColumn
ca
parents: 4335
diff changeset
   475
    descWidth isInteger ifTrue:[
3ec865b931a3 class: DataSetColumn
ca
parents: 4335
diff changeset
   476
        ^ descWidth
3ec865b931a3 class: DataSetColumn
ca
parents: 4335
diff changeset
   477
    ].
3ec865b931a3 class: DataSetColumn
ca
parents: 4335
diff changeset
   478
    ^ 0.
3ec865b931a3 class: DataSetColumn
ca
parents: 4335
diff changeset
   479
"/   width := nil.
3ec865b931a3 class: DataSetColumn
ca
parents: 4335
diff changeset
   480
"/  ^ self width
1490
9c418c3aaf49 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   481
!
9c418c3aaf49 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   482
1492
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
   483
minimumRequiredWidth
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
   484
    "returns the minimum required width
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
   485
    "
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
   486
    |minWidth|
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
   487
1940
50cf5e9dea10 allow resizing less than label size
ca
parents: 1937
diff changeset
   488
    descMinWidth notNil ifTrue:[
50cf5e9dea10 allow resizing less than label size
ca
parents: 1937
diff changeset
   489
        minWidth := DSVLabelView tabSpacing max:2.
50cf5e9dea10 allow resizing less than label size
ca
parents: 1937
diff changeset
   490
      ^ minWidth // 2 + minWidth
50cf5e9dea10 allow resizing less than label size
ca
parents: 1937
diff changeset
   491
    ].
1492
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
   492
1940
50cf5e9dea10 allow resizing less than label size
ca
parents: 1937
diff changeset
   493
    minWidth := dataSet separatorSize + (2 * dataSet horizontalSpacing).
50cf5e9dea10 allow resizing less than label size
ca
parents: 1937
diff changeset
   494
  ^ minWidth + label preferredWidth.
1492
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
   495
!
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
   496
1490
9c418c3aaf49 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   497
setDescWidth:aWidth
9c418c3aaf49 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   498
    "set a fixed width
9c418c3aaf49 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   499
    "
1940
50cf5e9dea10 allow resizing less than label size
ca
parents: 1937
diff changeset
   500
    descMinWidth := 1.
50cf5e9dea10 allow resizing less than label size
ca
parents: 1937
diff changeset
   501
    descMinWidth := width := descWidth := self minimumRequiredWidth max:aWidth.
1484
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
   502
!
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
   503
4414
3ec865b931a3 class: DataSetColumn
ca
parents: 4335
diff changeset
   504
setWidth:pixels
3ec865b931a3 class: DataSetColumn
ca
parents: 4335
diff changeset
   505
    width := pixels
3ec865b931a3 class: DataSetColumn
ca
parents: 4335
diff changeset
   506
!
3ec865b931a3 class: DataSetColumn
ca
parents: 4335
diff changeset
   507
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   508
width
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   509
    "returns the width in pixels
5374
aabe14372dc5 #OTHER by mawalch
mawalch
parents: 5348
diff changeset
   510
     Warning:
1725
897453804fa8 made numberOfRowsProbedForSize a variable;
Claus Gittinger <cg@exept.de>
parents: 1712
diff changeset
   511
        only the first numberOfRowsProbedForColumnSize are probed,
897453804fa8 made numberOfRowsProbedForSize a variable;
Claus Gittinger <cg@exept.de>
parents: 1712
diff changeset
   512
        in case the access is expensive (dataBase apps)
897453804fa8 made numberOfRowsProbedForSize a variable;
Claus Gittinger <cg@exept.de>
parents: 1712
diff changeset
   513
     If the descriptor defines a width, that is used, and the items
897453804fa8 made numberOfRowsProbedForSize a variable;
Claus Gittinger <cg@exept.de>
parents: 1712
diff changeset
   514
     are not probed at all."
897453804fa8 made numberOfRowsProbedForSize a variable;
Claus Gittinger <cg@exept.de>
parents: 1712
diff changeset
   515
2211
f14db8e094b9 pass rowNr and dataSet as additional args to
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
   516
    |max       "{ Class:SmallInteger }"
f14db8e094b9 pass rowNr and dataSet as additional args to
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
   517
     listSize  "{ Class:SmallInteger }"|
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   518
1484
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
   519
    width notNil ifTrue:[^ width].              "/ already computed
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   520
1490
9c418c3aaf49 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   521
    descMinWidth notNil ifTrue:[
9c418c3aaf49 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   522
        width := descMinWidth.
4963
f6db5a9da095 #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 4821
diff changeset
   523
        ^ width
1484
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
   524
    ].
1482
b703fd600f73 support of relative values
Claus Gittinger <cg@exept.de>
parents: 1480
diff changeset
   525
4963
f6db5a9da095 #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 4821
diff changeset
   526
    (descWidth ~~ 0 and:[self hasRelativeWidth not "descWidth isLimitedPrecisionReal not"]) ifTrue:[
1493
045378a0c25e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
   527
        width := descMinWidth := descWidth.
4963
f6db5a9da095 #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 4821
diff changeset
   528
        ^ width
1493
045378a0c25e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
   529
    ].
045378a0c25e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
   530
1490
9c418c3aaf49 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   531
    width := description minWidth max:(label preferredWidth).
9c418c3aaf49 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   532
4963
f6db5a9da095 #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 4821
diff changeset
   533
    self hasRelativeWidth ifTrue:[
2093
0dff6d4c173a bug fix: relative width (two coluns with 0.5)
ca
parents: 2074
diff changeset
   534
        width := width max:(descWidth * dataSet innerWidth) rounded.
4963
f6db5a9da095 #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 4821
diff changeset
   535
        ^ width
1482
b703fd600f73 support of relative values
Claus Gittinger <cg@exept.de>
parents: 1480
diff changeset
   536
    ].
b703fd600f73 support of relative values
Claus Gittinger <cg@exept.de>
parents: 1480
diff changeset
   537
1496
78d702c6c614 bugFix:
Claus Gittinger <cg@exept.de>
parents: 1493
diff changeset
   538
    containsText ifTrue:[
1725
897453804fa8 made numberOfRowsProbedForSize a variable;
Claus Gittinger <cg@exept.de>
parents: 1712
diff changeset
   539
        "/ take maximum numberOfRowsProbedForColumnSize entries to calculate the width;
5374
aabe14372dc5 #OTHER by mawalch
mawalch
parents: 5348
diff changeset
   540
        "/ can be resized later if necessary
2211
f14db8e094b9 pass rowNr and dataSet as additional args to
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
   541
        listSize := dataSet size.
f14db8e094b9 pass rowNr and dataSet as additional args to
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
   542
        max := listSize min:description numberOfRowsProbedForColumnSize.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   543
1526
a5dbe699323f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1496
diff changeset
   544
        max ~~ 0 ifTrue:[
2211
f14db8e094b9 pass rowNr and dataSet as additional args to
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
   545
            1 to:max do:[:rowNr| |row|
f14db8e094b9 pass rowNr and dataSet as additional args to
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
   546
                row := dataSet at:rowNr.
2444
e3488b6592cd refactored (do not overuse blocks)
penk
parents: 2443
diff changeset
   547
                width := width max:(self widthOfLabel:(self shownValueForRow:row rowNr:rowNr))
1526
a5dbe699323f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1496
diff changeset
   548
            ].
2444
e3488b6592cd refactored (do not overuse blocks)
penk
parents: 2443
diff changeset
   549
            width := width max:(self widthOfLabel:(self shownValueForRow:(dataSet at:listSize) rowNr:listSize))
1484
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
   550
        ].
6246
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   551
        description editorType ~~ DataSetColumn editorType_None ifTrue:[
1484
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
   552
            width := width + (dataSet font widthOn:dataSet device)
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   553
        ].
1493
045378a0c25e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
   554
    ] ifFalse:[
045378a0c25e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
   555
        max := 1
1484
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
   556
    ].
1490
9c418c3aaf49 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   557
    width := width + buttonExtent x + dataSet separatorSize + (2 * dataSet horizontalSpacing).
1493
045378a0c25e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
   558
045378a0c25e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
   559
    max ~~ 0 ifTrue:[
1526
a5dbe699323f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1496
diff changeset
   560
        descMinWidth := width.
a5dbe699323f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1496
diff changeset
   561
        description usePreferredWidth ifTrue:[
a5dbe699323f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1496
diff changeset
   562
            descWidth := width
a5dbe699323f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1496
diff changeset
   563
        ]
1493
045378a0c25e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
   564
    ].
4963
f6db5a9da095 #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 4821
diff changeset
   565
    ^ width
1484
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
   566
6246
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   567
    "Modified: / 25-07-2020 / 15:28:35 / cg"
4566
19114315128c Fox for column resizing bug.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4414
diff changeset
   568
!
19114315128c Fox for column resizing bug.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4414
diff changeset
   569
19114315128c Fox for column resizing bug.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4414
diff changeset
   570
width: aWidth
19114315128c Fox for column resizing bug.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4414
diff changeset
   571
    self setWidth: aWidth
19114315128c Fox for column resizing bug.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4414
diff changeset
   572
19114315128c Fox for column resizing bug.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4414
diff changeset
   573
    "Created: / 11-04-2014 / 10:01:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   574
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   575
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   576
!DataSetColumn methodsFor:'drawing'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   577
3330
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   578
drawLabel:aLabelToDraw atX:xLeft y:yTop
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   579
    "draw aLabelToDraw; handle columnAlignment"
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   580
5348
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
   581
    |drawnLabel x space prevClip mustUndoClip cachedWidth
3330
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   582
     labelWidth leftPart leftShift indexOfFirstDigit indexOfFirstNonDigit|
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   583
5348
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
   584
    cachedWidth := self width.
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
   585
    cachedWidth isNil ifTrue:[ ^ self ].
3330
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   586
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   587
    space := dataSet horizontalSpacing.
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   588
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   589
    drawnLabel := aLabelToDraw.
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   590
    labelWidth := drawnLabel widthOn:dataSet.
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   591
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   592
    (longStringCompression ~~ false
5348
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
   593
     and:[ drawnLabel isString 
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
   594
     and:[ labelWidth > cachedWidth]]) ifTrue:[
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
   595
        drawnLabel := self class shortenedStringFor:drawnLabel on:dataSet maxWidth:cachedWidth-space.
3330
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   596
        labelWidth := drawnLabel widthOn:dataSet.
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   597
    ].
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   598
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   599
    columnAlignment == #left ifTrue:[
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   600
        x  := xLeft + space.
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   601
    ] ifFalse:[
3675
e0e63070a210 support a hacky form of decimalRight alignmnet
Claus Gittinger <cg@exept.de>
parents: 3674
diff changeset
   602
        (columnAlignment == #decimal
e0e63070a210 support a hacky form of decimalRight alignmnet
Claus Gittinger <cg@exept.de>
parents: 3674
diff changeset
   603
        or:[ columnAlignment == #decimalRight ]) ifTrue:[
3330
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   604
            drawnLabel := drawnLabel asString.
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   605
            (drawnLabel includes:$.) ifTrue:[
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   606
                leftPart := drawnLabel upTo:$..
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   607
            ] ifFalse:[
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   608
                leftPart := drawnLabel.
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   609
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   610
                indexOfFirstDigit := drawnLabel findFirst:[:char | char isDigit].
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   611
                indexOfFirstDigit ~~ 0 ifTrue:[
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   612
                    indexOfFirstNonDigit := drawnLabel findFirst:[:char | char isDigit not] startingAt:indexOfFirstDigit+1.
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   613
                    indexOfFirstNonDigit ~~ 0 ifTrue:[
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   614
                        leftPart := drawnLabel copyTo:indexOfFirstNonDigit-1.
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   615
                    ].
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   616
                ].
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   617
            ].
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   618
            leftShift := leftPart widthOn:dataSet.
3675
e0e63070a210 support a hacky form of decimalRight alignmnet
Claus Gittinger <cg@exept.de>
parents: 3674
diff changeset
   619
            columnAlignment == #decimalRight ifTrue:[
e0e63070a210 support a hacky form of decimalRight alignmnet
Claus Gittinger <cg@exept.de>
parents: 3674
diff changeset
   620
                "/ decimal at the right
5348
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
   621
                x := cachedWidth - ('9999' widthOn:dataSet) - leftShift.
3675
e0e63070a210 support a hacky form of decimalRight alignmnet
Claus Gittinger <cg@exept.de>
parents: 3674
diff changeset
   622
            ] ifFalse:[
e0e63070a210 support a hacky form of decimalRight alignmnet
Claus Gittinger <cg@exept.de>
parents: 3674
diff changeset
   623
                "/ decimal at the middle
5348
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
   624
                x := (cachedWidth // 2) - leftShift.
3675
e0e63070a210 support a hacky form of decimalRight alignmnet
Claus Gittinger <cg@exept.de>
parents: 3674
diff changeset
   625
            ].
3330
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   626
        ] ifFalse:[
5348
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
   627
            x := cachedWidth - labelWidth.
3330
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   628
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   629
            columnAlignment == #right ifTrue:[x := x - space]
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   630
                                     ifFalse:[x := x // 2].
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   631
        ].
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   632
    "/ cg: old code (did not right-align if string is larger than width
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   633
    "/        x := xLeft + (x max:0).
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   634
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   635
        "/ new code: always right-align.
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   636
        x := xLeft + x.
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   637
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   638
        "/ must clip left, if string is too large
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   639
        x < xLeft ifTrue:[
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   640
            "/ must clip ...
5348
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
   641
            prevClip := dataSet clippingBoundsOrNil.
3330
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   642
            mustUndoClip := true.
5348
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
   643
            dataSet clippingBounds:(Rectangle 
3330
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   644
                                left:xLeft top:yTop 
5348
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
   645
                                width:cachedWidth height:(drawnLabel heightOn:dataSet)).
3330
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   646
        ].
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   647
    ].
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   648
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   649
"/    drawnLabel isImageOrForm ifTrue:[
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   650
"/        y := yTop.
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   651
"/    ] ifFalse:[
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   652
"/        y := (yTop + dataSet rowFontAscent)
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   653
"/    ].
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   654
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   655
"/    drawnLabel isString ifFalse:[
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   656
"/        y := yTop + (drawnLabel ascentOn:dataSet).
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   657
"/    ] ifTrue:[
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   658
"/        y := yTop + dataSet rowFontAscent
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   659
"/    ].
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   660
"/    drawnLabel displayOn:dataSet x:x y:y.
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   661
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   662
    dataSet displayLabel:drawnLabel x:x y:yTop.
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   663
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   664
    mustUndoClip == true ifTrue:[
5348
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
   665
        dataSet clippingBounds:prevClip    
3330
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   666
    ].
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   667
!
f7fe85be360b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3325
diff changeset
   668
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   669
drawLabelsAtX:xLeft y:yTop h:h from:start to:stop
5348
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
   670
    "redraw labels from start to stop"
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
   671
3990
a1ed686544e0 added: #selectedFrameColorFor:at:
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
   672
    |fg y yT x hspace lblHg bg label row isSel cachedWidth lineColor|
3298
3408a7138374 Cache width during redraw. Should solve problems by setting width to nil
ab
parents: 3264
diff changeset
   673
3990
a1ed686544e0 added: #selectedFrameColorFor:at:
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
   674
    cachedWidth := self width.
a1ed686544e0 added: #selectedFrameColorFor:at:
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
   675
    cachedWidth isNil ifTrue:[ ^ self ].
2578
13400c9f2b26 bugfix Windows: drawing selection background color
ca
parents: 2542
diff changeset
   676
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   677
    yT := yTop.
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   678
    hspace := dataSet horizontalSpacing.
1100
376515452be4 support of all styles; windows and next
ca
parents: 1092
diff changeset
   679
2211
f14db8e094b9 pass rowNr and dataSet as additional args to
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
   680
    start to:stop do:[:aRowNr|
3364
b7f6e426cd60 care for list change while drawing
Claus Gittinger <cg@exept.de>
parents: 3330
diff changeset
   681
        row := dataSet at:aRowNr ifAbsent:[^ self].
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   682
        y := yT.
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   683
        x := xLeft.
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   684
3990
a1ed686544e0 added: #selectedFrameColorFor:at:
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
   685
        "/ GET BACKGROUND AND FOREGROUND-COLOR
a1ed686544e0 added: #selectedFrameColorFor:at:
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
   686
        "/ ===================================
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   687
2211
f14db8e094b9 pass rowNr and dataSet as additional args to
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
   688
        isSel := dataSet isSelected:aRowNr inColumn:columnNumber.
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   689
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   690
        (isSel and:[description showSelectionHighLighted]) ifTrue:[
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   691
            "/ SHOW SELECTED( MUST REDRAW BACKGROUND )
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   692
            "/ =======================================
2710
fcfa161492ae added selectedFg/selectedBG attributes
Claus Gittinger <cg@exept.de>
parents: 2694
diff changeset
   693
            bg := self selectedBackgroundColorFor:row at:aRowNr.
fcfa161492ae added selectedFg/selectedBG attributes
Claus Gittinger <cg@exept.de>
parents: 2694
diff changeset
   694
            fg := self selectedForegroundColorFor:row at:aRowNr.
2578
13400c9f2b26 bugfix Windows: drawing selection background color
ca
parents: 2542
diff changeset
   695
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   696
            dataSet paint:bg.
3990
a1ed686544e0 added: #selectedFrameColorFor:at:
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
   697
            dataSet fillRectangleX:x y:y width:cachedWidth height:h.
a1ed686544e0 added: #selectedFrameColorFor:at:
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
   698
a1ed686544e0 added: #selectedFrameColorFor:at:
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
   699
            dataSet hasRowSelection ifFalse:[
a1ed686544e0 added: #selectedFrameColorFor:at:
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
   700
                lineColor := self selectedFrameColorFor:row at:aRowNr.
a1ed686544e0 added: #selectedFrameColorFor:at:
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
   701
                lineColor notNil ifTrue:[
a1ed686544e0 added: #selectedFrameColorFor:at:
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
   702
                    dataSet paint:lineColor.
a1ed686544e0 added: #selectedFrameColorFor:at:
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
   703
                    dataSet displayRectangleX:x y:y width:cachedWidth height:h.
a1ed686544e0 added: #selectedFrameColorFor:at:
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
   704
                ]
a1ed686544e0 added: #selectedFrameColorFor:at:
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
   705
            ]
1113
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
   706
        ] ifFalse:[
2154
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   707
            description backgroundSelector notNil ifTrue:[
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   708
                "/ MUST REDRAW BACKGROUND
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   709
                "/ ======================
2211
f14db8e094b9 pass rowNr and dataSet as additional args to
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
   710
                bg := self backgroundColorFor:row at:aRowNr.
1565
ca
parents: 1559
diff changeset
   711
ca
parents: 1559
diff changeset
   712
                bg ~~ backgroundColor ifTrue:[
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   713
                    bg := dataSet colorOnDevice:bg
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   714
                ].
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   715
                dataSet paint:bg.
3990
a1ed686544e0 added: #selectedFrameColorFor:at:
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
   716
                dataSet fillRectangleX:x y:y width:cachedWidth height:h.
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   717
            ] ifFalse:[
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   718
                bg := backgroundColor
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   719
            ].
1100
376515452be4 support of all styles; windows and next
ca
parents: 1092
diff changeset
   720
2211
f14db8e094b9 pass rowNr and dataSet as additional args to
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
   721
            fg := self foregroundColorFor:row at:aRowNr.
1565
ca
parents: 1559
diff changeset
   722
ca
parents: 1559
diff changeset
   723
            fg ~~ foregroundColor ifTrue:[
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   724
                fg := dataSet colorOnDevice:fg
1565
ca
parents: 1559
diff changeset
   725
            ].
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   726
        ].
833
c4e3e579f8bd handle choices
ca
parents: 824
diff changeset
   727
3990
a1ed686544e0 added: #selectedFrameColorFor:at:
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
   728
        "/ GET AND DRAW LABEL
a1ed686544e0 added: #selectedFrameColorFor:at:
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
   729
        "/ ==================
2542
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
   730
        (self isRowVisible:aRowNr) ifTrue:[
6246
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   731
            rendererType == DataSetColumn editorType_rowSelector ifTrue:[
2542
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
   732
                isSel ifTrue:[
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
   733
                    label := dataSet rowSelectorForm.
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
   734
                    x  := x + hspace.
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
   735
                ] ifFalse:[
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
   736
                    label := nil
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
   737
                ]
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   738
            ] ifFalse:[
2542
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
   739
                (isSel and:[dataSet hasOpenEditor]) ifTrue:[
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
   740
                    label := nil
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
   741
                ]  ifFalse:[
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
   742
                    label := self shownValueForRow:row rowNr:aRowNr
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
   743
                ]
1589
8bb71707b51a remove any color emphasis when displaying the selection.
Claus Gittinger <cg@exept.de>
parents: 1587
diff changeset
   744
            ].
2542
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
   745
            label notNil ifTrue:[
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
   746
                "/ care for a dark-colored label,
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
   747
                "/ with a dark selection-bg color
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
   748
                (isSel and:[label isString and:[label hasChangeOfEmphasis]]) ifTrue:[
4821
b53364768c88 class: DataSetColumn
Claus Gittinger <cg@exept.de>
parents: 4660
diff changeset
   749
                    "/ take away the label's own color info
b53364768c88 class: DataSetColumn
Claus Gittinger <cg@exept.de>
parents: 4660
diff changeset
   750
                    label := label copy emphasisAllRemove:#color.
2542
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
   751
                ].
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
   752
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
   753
                lblHg := self heightOfLabel:label.
1589
8bb71707b51a remove any color emphasis when displaying the selection.
Claus Gittinger <cg@exept.de>
parents: 1587
diff changeset
   754
2542
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
   755
                lblHg ~~ 0 ifTrue:[
3139
6ef356fd2303 new selectionHandling - buttonPress
ca
parents: 2897
diff changeset
   756
                    y := y + ((h - lblHg) // 2).
2542
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
   757
                    dataSet paint:fg on:bg.
1113
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
   758
5348
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
   759
                    (label isString and:[label includes:Character cr]) ifTrue:[
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
   760
                        label := label asCollectionOfLines
3462
d2df3607bfb5 mass operations: color selected-color
Claus Gittinger <cg@exept.de>
parents: 3460
diff changeset
   761
                    ].
d2df3607bfb5 mass operations: color selected-color
Claus Gittinger <cg@exept.de>
parents: 3460
diff changeset
   762
5348
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
   763
                    (label isNonByteCollection) ifTrue:[
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
   764
                        "a collection of labels"
2542
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
   765
                        label do:[:el|
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
   766
                            el notNil ifTrue:[
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
   767
                                self drawLabel:el atX:x y:y.
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
   768
                                y := y + (el heightOn:dataSet).
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
   769
                            ]
1147
2d0b9fc2422c new feature:
Claus Gittinger <cg@exept.de>
parents: 1133
diff changeset
   770
                        ]
5348
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
   771
                    ] ifFalse:[
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
   772
                        "a single label"
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
   773
                        self drawLabel:label atX:x y:y
2542
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
   774
                    ].
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
   775
                ]
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
   776
            ].
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   777
        ].
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   778
        yT := yT + h
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   779
    ]
3990
a1ed686544e0 added: #selectedFrameColorFor:at:
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
   780
6246
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   781
    "Modified: / 25-07-2020 / 15:49:13 / cg"
833
c4e3e579f8bd handle choices
ca
parents: 824
diff changeset
   782
!
c4e3e579f8bd handle choices
ca
parents: 824
diff changeset
   783
3505
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   784
drawRendererInRow:rowNr x:xLeft y:y width:cellWidth value:cellValue
6246
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   785
    (rendererType == EditorType_ComboBox or:[rendererType == EditorType_ComboList]) ifTrue:[
3505
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   786
        (self hasChoices:rowNr) ifTrue:[
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   787
            dataSet drawComboButtonAtX:xLeft y:y w:cellWidth
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   788
        ].
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   789
        ^ self
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   790
    ].
6246
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   791
    rendererType == EditorType_CheckToggle ifTrue:[
3505
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   792
        dataSet drawCheckToggleAtX:xLeft y:y w:cellWidth state:cellValue.
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   793
        ^ self
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   794
    ].
6246
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   795
    rendererType == EditorType_RadioButton ifTrue:[
3505
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   796
         dataSet drawRadioButtonAtX:xLeft y:y w:cellWidth state:cellValue.
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   797
        ^ self
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   798
    ].
6246
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   799
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   800
    "Modified: / 25-07-2020 / 15:11:41 / cg"
3505
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   801
!
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   802
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   803
drawSeparatorsAtX:xLeft y:yTop h:h from:start to:stop
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   804
    "redraw separators for cells between start and stop
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   805
    "
3298
3408a7138374 Cache width during redraw. Should solve problems by setting width to nil
ab
parents: 3264
diff changeset
   806
    |cashedWidth is3D xL xR yB yT times|
3408a7138374 Cache width during redraw. Should solve problems by setting width to nil
ab
parents: 3264
diff changeset
   807
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   808
    (showColSeparator or:[showRowSeparator]) ifFalse:[
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   809
        ^ self
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   810
    ].
3298
3408a7138374 Cache width during redraw. Should solve problems by setting width to nil
ab
parents: 3264
diff changeset
   811
    cashedWidth := self width.
3408a7138374 Cache width during redraw. Should solve problems by setting width to nil
ab
parents: 3264
diff changeset
   812
    cashedWidth isNil ifTrue:[ ^ self ].
3408a7138374 Cache width during redraw. Should solve problems by setting width to nil
ab
parents: 3264
diff changeset
   813
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   814
    is3D := dataSet has3Dseparators.
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   815
1113
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
   816
    is3D ifTrue:[dataSet paint:(dataSet separatorDarkColor)]
2638
f2b2ecc2c851 use user defined color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   817
        ifFalse:[dataSet paint:(dataSet separatorOneDColor)].
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   818
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   819
    times := stop - start + 1.
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   820
    xL    := xLeft.
3298
3408a7138374 Cache width during redraw. Should solve problems by setting width to nil
ab
parents: 3264
diff changeset
   821
    xR    := xL - 1 + cashedWidth.
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   822
1113
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
   823
    showRowSeparator ifTrue:[
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   824
     "/ DRAW SEPARATORS AT BOTTOM( DARK COLOR )
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   825
     "/ =======================================
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   826
        yB := yTop - 1 + h.
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   827
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   828
        rowSeparatorSelector isNil ifTrue:[
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   829
            times timesRepeat:[
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   830
                dataSet displayLineFromX:xL y:yB toX:xR y:yB.
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   831
                yB := yB + h.
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   832
            ]
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   833
        ] ifFalse:[
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   834
            start to:stop do:[:idx|
3240
2afa6e06b634 bugfix: columnAdapter notNil -> invoke rowSeparatorSelector
ca
parents: 3218
diff changeset
   835
                (self hasRowSeparatorAt:idx) ifTrue:[
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   836
                    dataSet displayLineFromX:xL y:yB toX:xR y:yB
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   837
                ].
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   838
                yB := yB + h.
3240
2afa6e06b634 bugfix: columnAdapter notNil -> invoke rowSeparatorSelector
ca
parents: 3218
diff changeset
   839
            ].
2afa6e06b634 bugfix: columnAdapter notNil -> invoke rowSeparatorSelector
ca
parents: 3218
diff changeset
   840
        ].
1113
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
   841
    ].
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   842
1113
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
   843
    showColSeparator ifTrue:[
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   844
     "/ DRAW SEPARATORS AT RIGHT( DARK COLOR )
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   845
     "/ ======================================
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   846
        yT := yTop.
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   847
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   848
        times timesRepeat:[
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   849
            dataSet displayLineFromX:xR y:yT toX:xR y:(yT - 1 + h).
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   850
            yT := yT + h.
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   851
        ]
1113
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
   852
    ].
1089
931865a72ba7 make life easier to add new renderer
ca
parents: 1088
diff changeset
   853
1113
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
   854
    is3D ifFalse:[
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
   855
        ^ self
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
   856
    ].
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   857
1113
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
   858
    dataSet paint:(dataSet separatorLightColor).
1040
c8e6a2ed7928 use the same background color for a selected rowSelector
ca
parents: 1007
diff changeset
   859
1113
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
   860
    (     columnNumber == 1
3505
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   861
      or:[(dataSet columnDescriptorAt:(columnNumber - 1)) showColSeparator]
1113
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
   862
    ) ifTrue:[
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   863
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   864
     "/ DRAW SEPARATORS AT LEFT( LIGHT COLOR )
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   865
     "/ ======================================
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   866
        yT := yTop.
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   867
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   868
        times timesRepeat:[
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   869
            dataSet displayLineFromX:xL y:yT toX:xL y:(yT - 1 + h).
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   870
            yT := yT + h.
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   871
        ].
1113
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
   872
    ] ifFalse:[
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   873
        xL := xL - 1
1113
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
   874
    ].
1092
bc003bc88972 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1089
diff changeset
   875
1113
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
   876
    showRowSeparator ifTrue:[
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   877
     "/ DRAW SEPARATORS AT TOP( LIGHT COLOR )
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   878
     "/ =====================================
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   879
        yT := yTop.
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   880
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   881
        rowSeparatorSelector isNil ifTrue:[
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   882
            times timesRepeat:[
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   883
                dataSet displayLineFromX:xL y:yT toX:xR y:yT.
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   884
                yT := yT + h.
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   885
            ]
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   886
        ] ifFalse:[
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   887
         "/ CHECK WHETHER PREVIOUS ROW HAS A SEPARATOR AT BOTTOM
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   888
         "/ ====================================================
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   889
            start to:stop do:[:idx|
3240
2afa6e06b634 bugfix: columnAdapter notNil -> invoke rowSeparatorSelector
ca
parents: 3218
diff changeset
   890
                (idx == 1 or:[self hasRowSeparatorAt:(idx - 1)]) ifTrue:[
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   891
                    dataSet displayLineFromX:xL y:yT toX:xR y:yT.
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   892
                ].
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   893
                yT := yT + h.
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   894
            ]
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   895
        ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   896
    ].
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   897
!
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
   898
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   899
invalidate
1484
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
   900
    "invalidate width of column; forces a recomputation
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   901
    "
1484
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
   902
    width := nil.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   903
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   904
!
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   905
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   906
redrawX:xLeft y:yTop h:h from:start to:stop
3505
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   907
    "redraw all rows between start and stop"
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   908
3298
3408a7138374 Cache width during redraw. Should solve problems by setting width to nil
ab
parents: 3264
diff changeset
   909
    |rH y cashedWidth|
3408a7138374 Cache width during redraw. Should solve problems by setting width to nil
ab
parents: 3264
diff changeset
   910
3408a7138374 Cache width during redraw. Should solve problems by setting width to nil
ab
parents: 3264
diff changeset
   911
    cashedWidth := self width.
3408a7138374 Cache width during redraw. Should solve problems by setting width to nil
ab
parents: 3264
diff changeset
   912
    cashedWidth isNil ifTrue:[ ^ self ].
3408a7138374 Cache width during redraw. Should solve problems by setting width to nil
ab
parents: 3264
diff changeset
   913
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   914
    rH := dataSet rowHeight.
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   915
2154
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   916
    description backgroundSelector isNil ifTrue:[
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   917
        dataSet paint:backgroundColor.
3298
3408a7138374 Cache width during redraw. Should solve problems by setting width to nil
ab
parents: 3264
diff changeset
   918
        dataSet fillRectangleX:xLeft y:yTop width:cashedWidth height:h
1115
7f3f4581c3d3 clear background
ca
parents: 1113
diff changeset
   919
    ].
7f3f4581c3d3 clear background
ca
parents: 1113
diff changeset
   920
3505
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   921
    "/ DRAW CELLS: BACKGROUND/FOREGROUND/LABEL
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   922
    "/ =======================================
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   923
    self drawLabelsAtX:xLeft y:yTop h:rH from:start to:stop.
1113
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
   924
3505
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   925
    "/ DRAW RENDERED INDICATORS
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   926
    "/ ========================
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   927
    rendererType notNil ifTrue:[
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   928
        y := yTop.
2211
f14db8e094b9 pass rowNr and dataSet as additional args to
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
   929
        start to:stop do:[:rowNr|
3505
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   930
            |state|
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   931
2542
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
   932
            (self isRowVisible:rowNr) ifTrue:[
3505
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   933
                state := self at:rowNr.
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   934
                self drawRendererInRow:rowNr x:xLeft y:y width:cashedWidth value:state.
1113
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
   935
            ].
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   936
            y := y + rH.
3505
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   937
        ].
1088
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   938
    ].
c2e474a7d0f2 add some comment
ca
parents: 1065
diff changeset
   939
3505
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   940
    "/ DRAW SEPARATORS
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   941
    "/ ===============
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
   942
    self drawSeparatorsAtX:xLeft y:yTop h:rH from:start to:stop
2693
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   943
!
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   944
5348
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
   945
shownValueForRow:aRowOrNil rowNr:aRowNr
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
   946
    |aRow selector format value type choices translatedChoices idx converter|
2693
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   947
6246
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   948
    rendererType == EditorType_CheckToggle ifTrue:[
2693
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   949
        ^ nil
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   950
    ].
6246
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   951
    rendererType == EditorType_RadioButton ifTrue:[
3505
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   952
        ^ nil
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
   953
    ].
2693
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   954
6246
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
   955
    rendererType == EditorType_rowSelector ifTrue:[
2693
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   956
        ^ nil
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   957
    ].
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   958
5348
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
   959
    aRow := aRowOrNil.
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
   960
    aRowOrNil isNil ifTrue:[
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
   961
        aRow := dataSet at:aRowNr.
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
   962
    ].
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
   963
2693
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   964
    selector := description printSelector.
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   965
    selector notNil ifTrue:[
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   966
        ^ aRow 
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   967
            perform:selector 
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   968
            withOptionalArgument:dataSet and:columnNumber and:aRowNr and:dataSet.
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   969
    ].
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   970
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   971
    value := self extractColFromRow:aRow rowNr:aRowNr.
2865
688eb125fe89 added xlatedChoices
Claus Gittinger <cg@exept.de>
parents: 2864
diff changeset
   972
    description translatedChoices notNil ifTrue:[
688eb125fe89 added xlatedChoices
Claus Gittinger <cg@exept.de>
parents: 2864
diff changeset
   973
        choices := self choicesFor:aRow at:aRowNr.
688eb125fe89 added xlatedChoices
Claus Gittinger <cg@exept.de>
parents: 2864
diff changeset
   974
        idx := choices indexOf:value.
688eb125fe89 added xlatedChoices
Claus Gittinger <cg@exept.de>
parents: 2864
diff changeset
   975
        idx ~~ 0 ifTrue:[
688eb125fe89 added xlatedChoices
Claus Gittinger <cg@exept.de>
parents: 2864
diff changeset
   976
            translatedChoices := self translatedChoicesFor:aRow at:aRowNr.
688eb125fe89 added xlatedChoices
Claus Gittinger <cg@exept.de>
parents: 2864
diff changeset
   977
            translatedChoices notNil ifTrue:[
688eb125fe89 added xlatedChoices
Claus Gittinger <cg@exept.de>
parents: 2864
diff changeset
   978
                value := translatedChoices at:idx.
688eb125fe89 added xlatedChoices
Claus Gittinger <cg@exept.de>
parents: 2864
diff changeset
   979
            ].
688eb125fe89 added xlatedChoices
Claus Gittinger <cg@exept.de>
parents: 2864
diff changeset
   980
        ].
688eb125fe89 added xlatedChoices
Claus Gittinger <cg@exept.de>
parents: 2864
diff changeset
   981
    ].
2693
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   982
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   983
    selector := description formatSelector.
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   984
    selector notNil ifTrue:[
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   985
        format := aRow 
3674
384982192479 fix formatSelector
Stefan Vogel <sv@exept.de>
parents: 3522
diff changeset
   986
            perform:selector asSymbol
2693
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   987
            withOptionalArgument:dataSet and:columnNumber and:aRowNr and:dataSet.
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   988
    ] ifFalse:[
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   989
        format := description formatString.
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   990
    ].
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   991
    format notNil ifTrue:[
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   992
"/ cannot remember what this was used for ...
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   993
"/        (idx := format indexOf:$.) ~~ 0 ifTrue:[
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   994
"/            idx := format size - idx
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   995
"/        ].
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   996
"/        format := '%0.', idx printString, 'f'.
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
   997
3674
384982192479 fix formatSelector
Stefan Vogel <sv@exept.de>
parents: 3522
diff changeset
   998
        ^ value printStringFormat:format
3325
8d2a6394f01a added/fixed printConverter handling
Claus Gittinger <cg@exept.de>
parents: 3320
diff changeset
   999
    ].
8d2a6394f01a added/fixed printConverter handling
Claus Gittinger <cg@exept.de>
parents: 3320
diff changeset
  1000
8d2a6394f01a added/fixed printConverter handling
Claus Gittinger <cg@exept.de>
parents: 3320
diff changeset
  1001
    type := description type.
8d2a6394f01a added/fixed printConverter handling
Claus Gittinger <cg@exept.de>
parents: 3320
diff changeset
  1002
    type ~~ #string ifTrue:[
8d2a6394f01a added/fixed printConverter handling
Claus Gittinger <cg@exept.de>
parents: 3320
diff changeset
  1003
        converter := TypeConverter new perform:type.
3920
4a1933e73efd changed: #shownValueForRow:rowNr:
Claus Gittinger <cg@exept.de>
parents: 3869
diff changeset
  1004
        ^ converter getBlock value:value.
4a1933e73efd changed: #shownValueForRow:rowNr:
Claus Gittinger <cg@exept.de>
parents: 3869
diff changeset
  1005
"/ cg: the code below is dangerous (tries to addDependent to Integers) !!
4a1933e73efd changed: #shownValueForRow:rowNr:
Claus Gittinger <cg@exept.de>
parents: 3869
diff changeset
  1006
"/        converter model:value.
4a1933e73efd changed: #shownValueForRow:rowNr:
Claus Gittinger <cg@exept.de>
parents: 3869
diff changeset
  1007
"/        ^ converter value.
2693
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1008
    ].
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1009
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1010
    ^ value
3920
4a1933e73efd changed: #shownValueForRow:rowNr:
Claus Gittinger <cg@exept.de>
parents: 3869
diff changeset
  1011
6246
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
  1012
    "Modified: / 25-07-2020 / 15:20:35 / cg"
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1013
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1014
614
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
  1015
!DataSetColumn methodsFor:'editing'!
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
  1016
3856
ef485acbfd81 added: #editorForRowAt:
Claus Gittinger <cg@exept.de>
parents: 3775
diff changeset
  1017
editorForRowAt:aRowNr
ef485acbfd81 added: #editorForRowAt:
Claus Gittinger <cg@exept.de>
parents: 3775
diff changeset
  1018
    "creates the editor for the row in a view and returns an editorAndModel, or nil"
3771
0640570dcd43 added: #specForEditorAt:
Claus Gittinger <cg@exept.de>
parents: 3767
diff changeset
  1019
1268
37066c039eb3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1226
diff changeset
  1020
    |val row|
614
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
  1021
3264
642d79a1b0d6 care for non-exisiting columns (race condition)
Claus Gittinger <cg@exept.de>
parents: 3240
diff changeset
  1022
    row := dataSet at:aRowNr ifAbsent:[^ nil].
2211
f14db8e094b9 pass rowNr and dataSet as additional args to
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
  1023
    val := self extractColFromRow:row rowNr:aRowNr.
614
8316c869d4df support of readSelector with arguments
ca
parents: 607
diff changeset
  1024
833
c4e3e579f8bd handle choices
ca
parents: 824
diff changeset
  1025
    val isText ifTrue:[val := val string].
3856
ef485acbfd81 added: #editorForRowAt:
Claus Gittinger <cg@exept.de>
parents: 3775
diff changeset
  1026
    ^ description editorOn:row at:aRowNr column:self value:val usingAdaptor:columnAdaptor.
3264
642d79a1b0d6 care for non-exisiting columns (race condition)
Claus Gittinger <cg@exept.de>
parents: 3240
diff changeset
  1027
642d79a1b0d6 care for non-exisiting columns (race condition)
Claus Gittinger <cg@exept.de>
parents: 3240
diff changeset
  1028
    "Modified: / 27-10-2007 / 10:26:15 / cg"
2693
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1029
! !
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1030
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1031
!DataSetColumn methodsFor:'event handling'!
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1032
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1033
doesNotUnderstand:aMessage
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1034
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1035
    (description respondsTo:(aMessage selector)) ifTrue:[
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1036
        ^ aMessage sendTo:description
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1037
    ].
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1038
    ^ super doesNotUnderstand:aMessage
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1039
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1040
! !
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1041
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1042
!DataSetColumn methodsFor:'grow & shrink'!
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1043
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1044
growWidth:n
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1045
    "grow the width for n pixels
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1046
    "
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1047
    width := self width + n.
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1048
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1049
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1050
! !
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1051
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1052
!DataSetColumn methodsFor:'initialization'!
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1053
1147
2d0b9fc2422c new feature:
Claus Gittinger <cg@exept.de>
parents: 1133
diff changeset
  1054
on:aDSVColumnView description:aDescription columnNumber:aNumber label:aLabel
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1055
    "instance creation; set attributes dependent on the description
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1056
    "
1089
931865a72ba7 make life easier to add new renderer
ca
parents: 1088
diff changeset
  1057
    columnNumber     := aNumber.
931865a72ba7 make life easier to add new renderer
ca
parents: 1088
diff changeset
  1058
    dataSet          := aDSVColumnView.
1147
2d0b9fc2422c new feature:
Claus Gittinger <cg@exept.de>
parents: 1133
diff changeset
  1059
    label            := aLabel.
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1060
1089
931865a72ba7 make life easier to add new renderer
ca
parents: 1088
diff changeset
  1061
    description      := aDescription.
931865a72ba7 make life easier to add new renderer
ca
parents: 1088
diff changeset
  1062
    rendererType     := description rendererType.
6246
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
  1063
    containsText     := (      rendererType ~~ EditorType_CheckToggle
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
  1064
                          and:[rendererType ~~ EditorType_RadioButton
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
  1065
                          and:[rendererType ~~ DataSetColumn editorType_rowSelector]]
1496
78d702c6c614 bugFix:
Claus Gittinger <cg@exept.de>
parents: 1493
diff changeset
  1066
                        ).
1490
9c418c3aaf49 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
  1067
    descWidth        := description width.
2424
576621beeacb Care for #longStringCompression
Stefan Vogel <sv@exept.de>
parents: 2420
diff changeset
  1068
    longStringCompression := description longStringCompression.
1526
a5dbe699323f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1496
diff changeset
  1069
a5dbe699323f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1496
diff changeset
  1070
    description usePreferredWidth ifTrue:[
a5dbe699323f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1496
diff changeset
  1071
        descWidth := 0
a5dbe699323f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1496
diff changeset
  1072
    ].
a5dbe699323f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1496
diff changeset
  1073
1565
ca
parents: 1559
diff changeset
  1074
    width      := nil.
ca
parents: 1559
diff changeset
  1075
2693
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1076
    minValue := description minValue.
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1077
    maxValue := description maxValue.
1113
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
  1078
    rowSeparatorSelector := description rowSeparatorSelector.
1565
ca
parents: 1559
diff changeset
  1079
1113
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
  1080
    showColSeparator := description showColSeparator.
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
  1081
    showRowSeparator := description showRowSeparator.
1089
931865a72ba7 make life easier to add new renderer
ca
parents: 1088
diff changeset
  1082
    columnAdaptor    := dataSet columnAdaptor.
931865a72ba7 make life easier to add new renderer
ca
parents: 1088
diff changeset
  1083
    buttonExtent     := 0 @ 0.
931865a72ba7 make life easier to add new renderer
ca
parents: 1088
diff changeset
  1084
    columnAlignment  := #left.
584
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
  1085
1132
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
  1086
    (backgroundColor := description backgroundColor) isNil ifTrue:[
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
  1087
        backgroundColor := dataSet backgroundColor
ce5f367af894 redraw changed for: separators and labels
ca
parents: 1115
diff changeset
  1088
    ] ifFalse:[
1480
51dd0cc6ea11 #on: -> #onDevice:
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
  1089
        backgroundColor := backgroundColor onDevice:dataSet device
584
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
  1090
    ].
1113
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
  1091
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
  1092
    (foregroundColor := description foregroundColor) isNil ifTrue:[
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
  1093
        foregroundColor := dataSet foregroundColor
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
  1094
    ] ifFalse:[
1480
51dd0cc6ea11 #on: -> #onDevice:
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
  1095
        foregroundColor := foregroundColor onDevice:dataSet device
584
1426fe34f4e8 support of foreground and background colors
ca
parents: 568
diff changeset
  1096
    ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1097
6246
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
  1098
    rendererType == EditorType_CheckToggle ifTrue:[
1113
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
  1099
        buttonExtent := dataSet checkToggleExtent.
2067
cda10b41aa0f use new #perform:withOptionalArg
Claus Gittinger <cg@exept.de>
parents: 2017
diff changeset
  1100
        ^ self
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1101
    ].
6246
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
  1102
    rendererType == EditorType_RadioButton ifTrue:[
3505
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
  1103
        buttonExtent := dataSet radioButtonExtent.
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
  1104
        ^ self
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
  1105
    ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1106
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1107
    rendererType == #rowSelector ifTrue:[
807
46863a1cdd80 access method to retrieve the description
ca
parents: 655
diff changeset
  1108
        buttonExtent := dataSet rowSelectorExtent.
2067
cda10b41aa0f use new #perform:withOptionalArg
Claus Gittinger <cg@exept.de>
parents: 2017
diff changeset
  1109
        ^ self
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1110
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1111
6246
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
  1112
    (rendererType == EditorType_ComboBox or:[rendererType == EditorType_ComboList]) ifTrue:[
807
46863a1cdd80 access method to retrieve the description
ca
parents: 655
diff changeset
  1113
        buttonExtent := dataSet comboButtonExtent.
883
0a790ad56286 add column justification
ca
parents: 882
diff changeset
  1114
    ] ifFalse:[
0a790ad56286 add column justification
ca
parents: 882
diff changeset
  1115
        columnAlignment := description columnAlignment
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1116
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1117
6246
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
  1118
    "Modified: / 25-07-2020 / 15:49:17 / cg"
2424
576621beeacb Care for #longStringCompression
Stefan Vogel <sv@exept.de>
parents: 2420
diff changeset
  1119
! !
576621beeacb Care for #longStringCompression
Stefan Vogel <sv@exept.de>
parents: 2420
diff changeset
  1120
621
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
  1121
!DataSetColumn methodsFor:'private'!
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
  1122
2211
f14db8e094b9 pass rowNr and dataSet as additional args to
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
  1123
extractColFromRow:aRow rowNr:rowNr
3320
18d61818a3d1 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3298
diff changeset
  1124
    |readSelector col numArgs|
2154
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  1125
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  1126
    readSelector := description readSelector.
1226
877cadb5d798 allow for nil readSelector
Claus Gittinger <cg@exept.de>
parents: 1187
diff changeset
  1127
    readSelector isNil ifTrue:[^ nil].
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
  1128
2862
3279303eabd8 allow for block in readselector/writeSelector
Claus Gittinger <cg@exept.de>
parents: 2727
diff changeset
  1129
    readSelector isBlock ifTrue:[
5311
be1b4506b7ac #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5264
diff changeset
  1130
        "/ I don't use valueWithOptionalArgument:and:and:and: here, to make better use of inline caches...
3320
18d61818a3d1 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3298
diff changeset
  1131
        numArgs := readSelector numArgs.
18d61818a3d1 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3298
diff changeset
  1132
        numArgs == 0 ifTrue:[
2862
3279303eabd8 allow for block in readselector/writeSelector
Claus Gittinger <cg@exept.de>
parents: 2727
diff changeset
  1133
            ^ readSelector value
3279303eabd8 allow for block in readselector/writeSelector
Claus Gittinger <cg@exept.de>
parents: 2727
diff changeset
  1134
        ].
3320
18d61818a3d1 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3298
diff changeset
  1135
        numArgs == 1 ifTrue:[
2862
3279303eabd8 allow for block in readselector/writeSelector
Claus Gittinger <cg@exept.de>
parents: 2727
diff changeset
  1136
            ^ readSelector value:aRow
3279303eabd8 allow for block in readselector/writeSelector
Claus Gittinger <cg@exept.de>
parents: 2727
diff changeset
  1137
        ].
3320
18d61818a3d1 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3298
diff changeset
  1138
        numArgs == 2 ifTrue:[
2862
3279303eabd8 allow for block in readselector/writeSelector
Claus Gittinger <cg@exept.de>
parents: 2727
diff changeset
  1139
            ^ readSelector value:aRow value:columnNumber
3279303eabd8 allow for block in readselector/writeSelector
Claus Gittinger <cg@exept.de>
parents: 2727
diff changeset
  1140
        ].
3320
18d61818a3d1 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3298
diff changeset
  1141
        numArgs == 3 ifTrue:[
2862
3279303eabd8 allow for block in readselector/writeSelector
Claus Gittinger <cg@exept.de>
parents: 2727
diff changeset
  1142
            ^ readSelector value:aRow value:columnNumber value:rowNr
3279303eabd8 allow for block in readselector/writeSelector
Claus Gittinger <cg@exept.de>
parents: 2727
diff changeset
  1143
        ].
3279303eabd8 allow for block in readselector/writeSelector
Claus Gittinger <cg@exept.de>
parents: 2727
diff changeset
  1144
        ^ readSelector value:aRow value:columnNumber value:rowNr value:dataSet
3279303eabd8 allow for block in readselector/writeSelector
Claus Gittinger <cg@exept.de>
parents: 2727
diff changeset
  1145
    ].
3279303eabd8 allow for block in readselector/writeSelector
Claus Gittinger <cg@exept.de>
parents: 2727
diff changeset
  1146
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
  1147
    columnAdaptor notNil ifTrue:[
2211
f14db8e094b9 pass rowNr and dataSet as additional args to
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
  1148
        ^ columnAdaptor perform:readSelector withOptionalArgument:aRow and:columnNumber and:rowNr and:dataSet
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
  1149
    ].
2635
a8add4698dea care for nil rows when extracting columns
Claus Gittinger <cg@exept.de>
parents: 2613
diff changeset
  1150
    aRow isNil ifTrue:[^ nil].
a8add4698dea care for nil rows when extracting columns
Claus Gittinger <cg@exept.de>
parents: 2613
diff changeset
  1151
4230
acf268d95fd0 class: DataSetColumn
Claus Gittinger <cg@exept.de>
parents: 4151
diff changeset
  1152
    (aRow isDictionary) ifTrue:[
3724
f4726b172c16 allow for dictionary to be used as row
Claus Gittinger <cg@exept.de>
parents: 3675
diff changeset
  1153
        col := aRow at:readSelector
f4726b172c16 allow for dictionary to be used as row
Claus Gittinger <cg@exept.de>
parents: 3675
diff changeset
  1154
    ] ifFalse:[
f4726b172c16 allow for dictionary to be used as row
Claus Gittinger <cg@exept.de>
parents: 3675
diff changeset
  1155
        col := aRow perform:readSelector withOptionalArgument:columnNumber and:rowNr and:dataSet.
f4726b172c16 allow for dictionary to be used as row
Claus Gittinger <cg@exept.de>
parents: 3675
diff changeset
  1156
    ].
2444
e3488b6592cd refactored (do not overuse blocks)
penk
parents: 2443
diff changeset
  1157
    ^ col
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
  1158
!
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
  1159
2693
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1160
storeCol:newValueArg inRow:aRow
2862
3279303eabd8 allow for block in readselector/writeSelector
Claus Gittinger <cg@exept.de>
parents: 2727
diff changeset
  1161
    |writeSelector numArgs newValue|
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
  1162
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
  1163
    writeSelector := description writeSelector.
1226
877cadb5d798 allow for nil readSelector
Claus Gittinger <cg@exept.de>
parents: 1187
diff changeset
  1164
    writeSelector isNil ifTrue:[^ aRow].
877cadb5d798 allow for nil readSelector
Claus Gittinger <cg@exept.de>
parents: 1187
diff changeset
  1165
2693
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1166
    newValue := newValueArg.
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1167
    (newValue isNumber) ifTrue:[
2862
3279303eabd8 allow for block in readselector/writeSelector
Claus Gittinger <cg@exept.de>
parents: 2727
diff changeset
  1168
        minValue notNil ifTrue:[
3279303eabd8 allow for block in readselector/writeSelector
Claus Gittinger <cg@exept.de>
parents: 2727
diff changeset
  1169
            newValue < minValue ifTrue:[
3279303eabd8 allow for block in readselector/writeSelector
Claus Gittinger <cg@exept.de>
parents: 2727
diff changeset
  1170
               newValue := minValue
2693
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1171
            ]
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1172
        ].
2862
3279303eabd8 allow for block in readselector/writeSelector
Claus Gittinger <cg@exept.de>
parents: 2727
diff changeset
  1173
        maxValue notNil ifTrue:[
3279303eabd8 allow for block in readselector/writeSelector
Claus Gittinger <cg@exept.de>
parents: 2727
diff changeset
  1174
            newValue > maxValue ifTrue:[
3279303eabd8 allow for block in readselector/writeSelector
Claus Gittinger <cg@exept.de>
parents: 2727
diff changeset
  1175
               newValue := maxValue
2693
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1176
            ]
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1177
        ].
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1178
    ].
c67e66b4e3e3 formatSelector + color accessors
werner
parents: 2638
diff changeset
  1179
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
  1180
    numArgs := writeSelector numArgs.
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
  1181
2862
3279303eabd8 allow for block in readselector/writeSelector
Claus Gittinger <cg@exept.de>
parents: 2727
diff changeset
  1182
    writeSelector isBlock ifTrue:[
3279303eabd8 allow for block in readselector/writeSelector
Claus Gittinger <cg@exept.de>
parents: 2727
diff changeset
  1183
        numArgs == 2 ifTrue:[
2863
c0585cbcd922 argument order when using write-store-blocks
Claus Gittinger <cg@exept.de>
parents: 2862
diff changeset
  1184
            ^ writeSelector value:newValue value:aRow
2862
3279303eabd8 allow for block in readselector/writeSelector
Claus Gittinger <cg@exept.de>
parents: 2727
diff changeset
  1185
        ].
2863
c0585cbcd922 argument order when using write-store-blocks
Claus Gittinger <cg@exept.de>
parents: 2862
diff changeset
  1186
        ^ writeSelector value:newValue value:aRow value:columnNumber
2862
3279303eabd8 allow for block in readselector/writeSelector
Claus Gittinger <cg@exept.de>
parents: 2727
diff changeset
  1187
    ].
3279303eabd8 allow for block in readselector/writeSelector
Claus Gittinger <cg@exept.de>
parents: 2727
diff changeset
  1188
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
  1189
    columnAdaptor notNil ifTrue:[
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
  1190
        numArgs == 2 ifTrue:[
2419
e0121908fffe added longStringCompression flag
Claus Gittinger <cg@exept.de>
parents: 2222
diff changeset
  1191
            columnAdaptor perform:writeSelector with:aRow with:newValue.
e0121908fffe added longStringCompression flag
Claus Gittinger <cg@exept.de>
parents: 2222
diff changeset
  1192
            ^ self
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
  1193
        ].
2419
e0121908fffe added longStringCompression flag
Claus Gittinger <cg@exept.de>
parents: 2222
diff changeset
  1194
        columnAdaptor perform:writeSelector with:aRow with:columnNumber with:newValue.
e0121908fffe added longStringCompression flag
Claus Gittinger <cg@exept.de>
parents: 2222
diff changeset
  1195
        ^ self
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
  1196
    ].
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
  1197
4230
acf268d95fd0 class: DataSetColumn
Claus Gittinger <cg@exept.de>
parents: 4151
diff changeset
  1198
    (aRow isDictionary) ifTrue:[
3724
f4726b172c16 allow for dictionary to be used as row
Claus Gittinger <cg@exept.de>
parents: 3675
diff changeset
  1199
        aRow at:writeSelector put:newValue
1007
4ea1ecf23596 added support for columndAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
  1200
    ] ifFalse:[
3724
f4726b172c16 allow for dictionary to be used as row
Claus Gittinger <cg@exept.de>
parents: 3675
diff changeset
  1201
        numArgs == 1 ifTrue:[
f4726b172c16 allow for dictionary to be used as row
Claus Gittinger <cg@exept.de>
parents: 3675
diff changeset
  1202
            aRow perform:writeSelector with:newValue
f4726b172c16 allow for dictionary to be used as row
Claus Gittinger <cg@exept.de>
parents: 3675
diff changeset
  1203
        ] ifFalse:[
f4726b172c16 allow for dictionary to be used as row
Claus Gittinger <cg@exept.de>
parents: 3675
diff changeset
  1204
            aRow perform:writeSelector with:columnNumber with:newValue
f4726b172c16 allow for dictionary to be used as row
Claus Gittinger <cg@exept.de>
parents: 3675
diff changeset
  1205
        ]
1059
18f81ba4860d if there is a columnAdaptor,
tz
parents: 1043
diff changeset
  1206
    ].
621
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
  1207
! !
620553e6a537 foreground & background selector (cell).
ca
parents: 614
diff changeset
  1208
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1209
!DataSetColumn methodsFor:'queries'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1210
1492
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
  1211
canResize
4117
b2eb0d2d0008 changed: #canResize - formatting
Stefan Vogel <sv@exept.de>
parents: 3992
diff changeset
  1212
    ^ containsText and:[descWidth == 0 or:[self hasRelativeWidth]]
1492
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
  1213
!
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
  1214
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
  1215
canSelect:aRowNr
3448
ef7d76d6bcfd some comments changed into reasonable english
Claus Gittinger <cg@exept.de>
parents: 3364
diff changeset
  1216
    "returns true if the cell in column is selectable.
ef7d76d6bcfd some comments changed into reasonable english
Claus Gittinger <cg@exept.de>
parents: 3364
diff changeset
  1217
     (possibly calls the selectSelector, if any)"
ef7d76d6bcfd some comments changed into reasonable english
Claus Gittinger <cg@exept.de>
parents: 3364
diff changeset
  1218
2067
cda10b41aa0f use new #perform:withOptionalArg
Claus Gittinger <cg@exept.de>
parents: 2017
diff changeset
  1219
    |s row|
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
  1220
2067
cda10b41aa0f use new #perform:withOptionalArg
Claus Gittinger <cg@exept.de>
parents: 2017
diff changeset
  1221
    description canSelect ifFalse:[^ false].
cda10b41aa0f use new #perform:withOptionalArg
Claus Gittinger <cg@exept.de>
parents: 2017
diff changeset
  1222
    s := description selectSelector.
cda10b41aa0f use new #perform:withOptionalArg
Claus Gittinger <cg@exept.de>
parents: 2017
diff changeset
  1223
    s isNil ifTrue:[^ true].
cda10b41aa0f use new #perform:withOptionalArg
Claus Gittinger <cg@exept.de>
parents: 2017
diff changeset
  1224
3264
642d79a1b0d6 care for non-exisiting columns (race condition)
Claus Gittinger <cg@exept.de>
parents: 3240
diff changeset
  1225
    row := dataSet at:aRowNr ifAbsent:[^ false].
2067
cda10b41aa0f use new #perform:withOptionalArg
Claus Gittinger <cg@exept.de>
parents: 2017
diff changeset
  1226
    columnAdaptor notNil ifTrue:[
2211
f14db8e094b9 pass rowNr and dataSet as additional args to
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
  1227
        ^ columnAdaptor perform:s withOptionalArgument:row and:columnNumber and:aRowNr and:dataSet
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
  1228
    ].
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
  1229
2211
f14db8e094b9 pass rowNr and dataSet as additional args to
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
  1230
    ^ row perform:s withOptionalArgument:columnNumber and:aRowNr and:dataSet
3264
642d79a1b0d6 care for non-exisiting columns (race condition)
Claus Gittinger <cg@exept.de>
parents: 3240
diff changeset
  1231
642d79a1b0d6 care for non-exisiting columns (race condition)
Claus Gittinger <cg@exept.de>
parents: 3240
diff changeset
  1232
    "Modified: / 27-10-2007 / 10:27:20 / cg"
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
  1233
!
a5e0c2bf1370 support of multiple select:rows
ca
parents: 604
diff changeset
  1234
2864
a2b8598dc659 fix: choices via columnAdaptor
Claus Gittinger <cg@exept.de>
parents: 2863
diff changeset
  1235
choicesFor:aRow at:aRowNr
a2b8598dc659 fix: choices via columnAdaptor
Claus Gittinger <cg@exept.de>
parents: 2863
diff changeset
  1236
    |choicesSelector|
a2b8598dc659 fix: choices via columnAdaptor
Claus Gittinger <cg@exept.de>
parents: 2863
diff changeset
  1237
a2b8598dc659 fix: choices via columnAdaptor
Claus Gittinger <cg@exept.de>
parents: 2863
diff changeset
  1238
    choicesSelector := description choices.
2897
1ff11b4ffed5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2865
diff changeset
  1239
    choicesSelector isNil ifTrue:[^ nil].
2864
a2b8598dc659 fix: choices via columnAdaptor
Claus Gittinger <cg@exept.de>
parents: 2863
diff changeset
  1240
a2b8598dc659 fix: choices via columnAdaptor
Claus Gittinger <cg@exept.de>
parents: 2863
diff changeset
  1241
    columnAdaptor notNil ifTrue:[
a2b8598dc659 fix: choices via columnAdaptor
Claus Gittinger <cg@exept.de>
parents: 2863
diff changeset
  1242
        ^ columnAdaptor perform:choicesSelector withOptionalArgument:aRow and:columnNumber and:aRowNr and:dataSet
a2b8598dc659 fix: choices via columnAdaptor
Claus Gittinger <cg@exept.de>
parents: 2863
diff changeset
  1243
    ].
a2b8598dc659 fix: choices via columnAdaptor
Claus Gittinger <cg@exept.de>
parents: 2863
diff changeset
  1244
    ^ aRow perform:choicesSelector withOptionalArgument:aRowNr and:columnNumber and:dataSet
a2b8598dc659 fix: choices via columnAdaptor
Claus Gittinger <cg@exept.de>
parents: 2863
diff changeset
  1245
!
a2b8598dc659 fix: choices via columnAdaptor
Claus Gittinger <cg@exept.de>
parents: 2863
diff changeset
  1246
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
  1247
containsText
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
  1248
    "returns true if text might exist
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
  1249
    "
1496
78d702c6c614 bugFix:
Claus Gittinger <cg@exept.de>
parents: 1493
diff changeset
  1250
    ^ containsText
647
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
  1251
!
ee98a1976972 support of different styles
ca
parents: 644
diff changeset
  1252
2074
89565d366510 doubleClick and menu via columnAdaptor
martin
parents: 2067
diff changeset
  1253
doubleClickOn:aRowNr
2694
82289374e92e dblCLickOn: multi-args
werner
parents: 2693
diff changeset
  1254
    |sel row|
2074
89565d366510 doubleClick and menu via columnAdaptor
martin
parents: 2067
diff changeset
  1255
89565d366510 doubleClick and menu via columnAdaptor
martin
parents: 2067
diff changeset
  1256
    (sel := self doubleClickedSelector) notNil ifTrue:[
2694
82289374e92e dblCLickOn: multi-args
werner
parents: 2693
diff changeset
  1257
        row := dataSet at:aRowNr.
2074
89565d366510 doubleClick and menu via columnAdaptor
martin
parents: 2067
diff changeset
  1258
        columnAdaptor notNil ifTrue:[
2694
82289374e92e dblCLickOn: multi-args
werner
parents: 2693
diff changeset
  1259
            ^ columnAdaptor perform:sel withOptionalArgument:row and:columnNumber and:aRowNr and:dataSet
2074
89565d366510 doubleClick and menu via columnAdaptor
martin
parents: 2067
diff changeset
  1260
        ].
2694
82289374e92e dblCLickOn: multi-args
werner
parents: 2693
diff changeset
  1261
        ^ row perform:sel withOptionalArgument:columnNumber and:aRowNr and:dataSet
2074
89565d366510 doubleClick and menu via columnAdaptor
martin
parents: 2067
diff changeset
  1262
    ].
89565d366510 doubleClick and menu via columnAdaptor
martin
parents: 2067
diff changeset
  1263
!
89565d366510 doubleClick and menu via columnAdaptor
martin
parents: 2067
diff changeset
  1264
833
c4e3e579f8bd handle choices
ca
parents: 824
diff changeset
  1265
hasChoices:aRowNr
2864
a2b8598dc659 fix: choices via columnAdaptor
Claus Gittinger <cg@exept.de>
parents: 2863
diff changeset
  1266
    |row|
a2b8598dc659 fix: choices via columnAdaptor
Claus Gittinger <cg@exept.de>
parents: 2863
diff changeset
  1267
a2b8598dc659 fix: choices via columnAdaptor
Claus Gittinger <cg@exept.de>
parents: 2863
diff changeset
  1268
    row := dataSet at:aRowNr.
a2b8598dc659 fix: choices via columnAdaptor
Claus Gittinger <cg@exept.de>
parents: 2863
diff changeset
  1269
    ^ (self choicesFor:row at:aRowNr) notNil
833
c4e3e579f8bd handle choices
ca
parents: 824
diff changeset
  1270
!
c4e3e579f8bd handle choices
ca
parents: 824
diff changeset
  1271
1950
ps
parents: 1940
diff changeset
  1272
hasPotentialNonConstantBackground
ps
parents: 1940
diff changeset
  1273
    (backgroundColor notNil and:[backgroundColor isImageOrForm]) ifTrue:[^ true].
2154
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  1274
    description backgroundSelector notNil ifTrue:[^ true].
1950
ps
parents: 1940
diff changeset
  1275
    ^ false.
ps
parents: 1940
diff changeset
  1276
!
ps
parents: 1940
diff changeset
  1277
1484
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  1278
hasRelativeWidth
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  1279
    "returns true if width is relative
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  1280
    "
4963
f6db5a9da095 #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 4821
diff changeset
  1281
    ^ descWidth isInteger not. "/ descWidth isLimitedPrecisionReal 
1484
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  1282
!
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  1283
3240
2afa6e06b634 bugfix: columnAdapter notNil -> invoke rowSeparatorSelector
ca
parents: 3218
diff changeset
  1284
hasRowSeparatorAt:rowNumber
2afa6e06b634 bugfix: columnAdapter notNil -> invoke rowSeparatorSelector
ca
parents: 3218
diff changeset
  1285
    |row bool|
2afa6e06b634 bugfix: columnAdapter notNil -> invoke rowSeparatorSelector
ca
parents: 3218
diff changeset
  1286
2afa6e06b634 bugfix: columnAdapter notNil -> invoke rowSeparatorSelector
ca
parents: 3218
diff changeset
  1287
    rowSeparatorSelector isNil ifTrue:[^ true ].
2afa6e06b634 bugfix: columnAdapter notNil -> invoke rowSeparatorSelector
ca
parents: 3218
diff changeset
  1288
    row := dataSet at:rowNumber.
2afa6e06b634 bugfix: columnAdapter notNil -> invoke rowSeparatorSelector
ca
parents: 3218
diff changeset
  1289
2afa6e06b634 bugfix: columnAdapter notNil -> invoke rowSeparatorSelector
ca
parents: 3218
diff changeset
  1290
    columnAdaptor isNil ifTrue:[
2afa6e06b634 bugfix: columnAdapter notNil -> invoke rowSeparatorSelector
ca
parents: 3218
diff changeset
  1291
        bool := row perform:rowSeparatorSelector.
2afa6e06b634 bugfix: columnAdapter notNil -> invoke rowSeparatorSelector
ca
parents: 3218
diff changeset
  1292
    ] ifFalse:[
2afa6e06b634 bugfix: columnAdapter notNil -> invoke rowSeparatorSelector
ca
parents: 3218
diff changeset
  1293
        bool := columnAdaptor perform:rowSeparatorSelector
2afa6e06b634 bugfix: columnAdapter notNil -> invoke rowSeparatorSelector
ca
parents: 3218
diff changeset
  1294
                    withOptionalArgument:row and:columnNumber and:rowNumber and:dataSet.
2afa6e06b634 bugfix: columnAdapter notNil -> invoke rowSeparatorSelector
ca
parents: 3218
diff changeset
  1295
    ].
2afa6e06b634 bugfix: columnAdapter notNil -> invoke rowSeparatorSelector
ca
parents: 3218
diff changeset
  1296
    ^ bool ~~ false
2afa6e06b634 bugfix: columnAdapter notNil -> invoke rowSeparatorSelector
ca
parents: 3218
diff changeset
  1297
!
2afa6e06b634 bugfix: columnAdapter notNil -> invoke rowSeparatorSelector
ca
parents: 3218
diff changeset
  1298
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1299
heightOfHighestRow
1725
897453804fa8 made numberOfRowsProbedForSize a variable;
Claus Gittinger <cg@exept.de>
parents: 1712
diff changeset
  1300
    "returns the height of the highest row in pixels.
897453804fa8 made numberOfRowsProbedForSize a variable;
Claus Gittinger <cg@exept.de>
parents: 1712
diff changeset
  1301
     Warning: 
897453804fa8 made numberOfRowsProbedForSize a variable;
Claus Gittinger <cg@exept.de>
parents: 1712
diff changeset
  1302
        only the first numberOfRowsProbedForColumnSize are probed,
897453804fa8 made numberOfRowsProbedForSize a variable;
Claus Gittinger <cg@exept.de>
parents: 1712
diff changeset
  1303
        in case the access is expensive (dataBase apps)
3992
184aff1e22bc changed:
Claus Gittinger <cg@exept.de>
parents: 3990
diff changeset
  1304
     If the descriptor defines a height, that is used, and the items are not probed at all.
4331
7c89cfb5b3a4 class: DataSetColumn
Claus Gittinger <cg@exept.de>
parents: 4248
diff changeset
  1305
     If the descriptor's height is -1 or #fontHeight, that is used.
4332
601cf68cb5a4 class: DataSetColumn
Claus Gittinger <cg@exept.de>
parents: 4331
diff changeset
  1306
     If the descriptor's height is #heightOfFirstRow, only the first columns height is probed.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1307
    "
4331
7c89cfb5b3a4 class: DataSetColumn
Claus Gittinger <cg@exept.de>
parents: 4248
diff changeset
  1308
    |h end bE editorType row1|
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1309
1496
78d702c6c614 bugFix:
Claus Gittinger <cg@exept.de>
parents: 1493
diff changeset
  1310
    (h := description height) == 0 ifTrue:[
78d702c6c614 bugFix:
Claus Gittinger <cg@exept.de>
parents: 1493
diff changeset
  1311
        containsText ifTrue:[
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1312
            "/ search first none empty drawable object
2154
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  1313
            end := description numberOfRowsProbedForColumnSize min:dataSet size.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1314
2211
f14db8e094b9 pass rowNr and dataSet as additional args to
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
  1315
            1 to:end do:[:rowNr| |row|
f14db8e094b9 pass rowNr and dataSet as additional args to
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
  1316
                row := dataSet at:rowNr.
2444
e3488b6592cd refactored (do not overuse blocks)
penk
parents: 2443
diff changeset
  1317
                h := h max:(self heightOfLabel:(self shownValueForRow:row rowNr:rowNr))
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1318
            ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1319
        ]
3992
184aff1e22bc changed:
Claus Gittinger <cg@exept.de>
parents: 3990
diff changeset
  1320
    ] ifFalse:[
4332
601cf68cb5a4 class: DataSetColumn
Claus Gittinger <cg@exept.de>
parents: 4331
diff changeset
  1321
        ((h == #heightOfFirstRow) or:[ h == #askFirst]) ifTrue:[
4335
5c5fd7a5565b class: DataSetColumn
Claus Gittinger <cg@exept.de>
parents: 4332
diff changeset
  1322
            h := 0.
5c5fd7a5565b class: DataSetColumn
Claus Gittinger <cg@exept.de>
parents: 4332
diff changeset
  1323
            containsText ifTrue:[
5c5fd7a5565b class: DataSetColumn
Claus Gittinger <cg@exept.de>
parents: 4332
diff changeset
  1324
                row1 := dataSet at:1.
5c5fd7a5565b class: DataSetColumn
Claus Gittinger <cg@exept.de>
parents: 4332
diff changeset
  1325
                row1 notNil ifTrue:[
5c5fd7a5565b class: DataSetColumn
Claus Gittinger <cg@exept.de>
parents: 4332
diff changeset
  1326
                    h := self heightOfLabel:(self shownValueForRow:row1 rowNr:1)
5c5fd7a5565b class: DataSetColumn
Claus Gittinger <cg@exept.de>
parents: 4332
diff changeset
  1327
                ]
5c5fd7a5565b class: DataSetColumn
Claus Gittinger <cg@exept.de>
parents: 4332
diff changeset
  1328
            ].
4331
7c89cfb5b3a4 class: DataSetColumn
Claus Gittinger <cg@exept.de>
parents: 4248
diff changeset
  1329
        ] ifFalse:[
7c89cfb5b3a4 class: DataSetColumn
Claus Gittinger <cg@exept.de>
parents: 4248
diff changeset
  1330
            (h == #fontHeight or:[ h isNumber and:[h < 0] ]) ifTrue:[
7c89cfb5b3a4 class: DataSetColumn
Claus Gittinger <cg@exept.de>
parents: 4248
diff changeset
  1331
                h := dataSet font heightOn:dataSet device.
4335
5c5fd7a5565b class: DataSetColumn
Claus Gittinger <cg@exept.de>
parents: 4332
diff changeset
  1332
            ] ifFalse:[
5c5fd7a5565b class: DataSetColumn
Claus Gittinger <cg@exept.de>
parents: 4332
diff changeset
  1333
                h := 0
4331
7c89cfb5b3a4 class: DataSetColumn
Claus Gittinger <cg@exept.de>
parents: 4248
diff changeset
  1334
            ].
3992
184aff1e22bc changed:
Claus Gittinger <cg@exept.de>
parents: 3990
diff changeset
  1335
        ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1336
    ].
3992
184aff1e22bc changed:
Claus Gittinger <cg@exept.de>
parents: 3990
diff changeset
  1337
1559
1e7f30057e22 care for renderer==Text and editor==Comboxxx in
Claus Gittinger <cg@exept.de>
parents: 1558
diff changeset
  1338
    (bE := buttonExtent y) = 0 ifTrue:[
3505
f5964848f894 refactored;
Claus Gittinger <cg@exept.de>
parents: 3462
diff changeset
  1339
        editorType := description editorType.
6246
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
  1340
        (editorType == DataSetColumn editorType_ComboList or:[ editorType  == DataSetColumn editorType_ComboBox]) ifTrue:[
1559
1e7f30057e22 care for renderer==Text and editor==Comboxxx in
Claus Gittinger <cg@exept.de>
parents: 1558
diff changeset
  1341
            bE := dataSet comboButtonExtent y.
1e7f30057e22 care for renderer==Text and editor==Comboxxx in
Claus Gittinger <cg@exept.de>
parents: 1558
diff changeset
  1342
        ].
1e7f30057e22 care for renderer==Text and editor==Comboxxx in
Claus Gittinger <cg@exept.de>
parents: 1558
diff changeset
  1343
    ].
1e7f30057e22 care for renderer==Text and editor==Comboxxx in
Claus Gittinger <cg@exept.de>
parents: 1558
diff changeset
  1344
    ^ h max:bE
1725
897453804fa8 made numberOfRowsProbedForSize a variable;
Claus Gittinger <cg@exept.de>
parents: 1712
diff changeset
  1345
3992
184aff1e22bc changed:
Claus Gittinger <cg@exept.de>
parents: 3990
diff changeset
  1346
    "Modified: / 20-01-2011 / 18:03:45 / cg"
6246
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
  1347
    "Modified (format): / 29-07-2018 / 09:51:43 / Claus Gittinger"
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
  1348
    "Modified: / 25-07-2020 / 15:40:32 / cg"
1113
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
  1349
!
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
  1350
1147
2d0b9fc2422c new feature:
Claus Gittinger <cg@exept.de>
parents: 1133
diff changeset
  1351
heightOfLabel:aLabel
3462
d2df3607bfb5 mass operations: color selected-color
Claus Gittinger <cg@exept.de>
parents: 3460
diff changeset
  1352
    "returns the height of the label"
1147
2d0b9fc2422c new feature:
Claus Gittinger <cg@exept.de>
parents: 1133
diff changeset
  1353
4332
601cf68cb5a4 class: DataSetColumn
Claus Gittinger <cg@exept.de>
parents: 4331
diff changeset
  1354
    |h font|
3992
184aff1e22bc changed:
Claus Gittinger <cg@exept.de>
parents: 3990
diff changeset
  1355
3462
d2df3607bfb5 mass operations: color selected-color
Claus Gittinger <cg@exept.de>
parents: 3460
diff changeset
  1356
    aLabel isNil ifTrue:[ ^ 0 ].
5348
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
  1357
    aLabel isImageOrForm ifTrue:[ 
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
  1358
        ^ aLabel heightOn:dataSet
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
  1359
    ].
5264
18e38a656dcf #BUGFIX by Maren
matilk
parents: 5205
diff changeset
  1360
5205
586b40171cfe #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5054
diff changeset
  1361
    font := dataSet deviceFont.
5348
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
  1362
    h := description height.
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
  1363
    (h == #fontHeight or:[h isNumber and:[h < 0]]) ifTrue:[
4332
601cf68cb5a4 class: DataSetColumn
Claus Gittinger <cg@exept.de>
parents: 4331
diff changeset
  1364
        ^ font height
3992
184aff1e22bc changed:
Claus Gittinger <cg@exept.de>
parents: 3990
diff changeset
  1365
    ].
184aff1e22bc changed:
Claus Gittinger <cg@exept.de>
parents: 3990
diff changeset
  1366
5205
586b40171cfe #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5054
diff changeset
  1367
    aLabel isString ifTrue:[
3462
d2df3607bfb5 mass operations: color selected-color
Claus Gittinger <cg@exept.de>
parents: 3460
diff changeset
  1368
        "/ if multiple lines - count 'em
d2df3607bfb5 mass operations: color selected-color
Claus Gittinger <cg@exept.de>
parents: 3460
diff changeset
  1369
        (aLabel includes:Character cr) ifTrue:[
5348
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
  1370
            ^ aLabel asStringCollection 
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
  1371
                inject:0 into:[:sumH :line | sumH + (line heightOn:dataSet)]
3462
d2df3607bfb5 mass operations: color selected-color
Claus Gittinger <cg@exept.de>
parents: 3460
diff changeset
  1372
        ].
4332
601cf68cb5a4 class: DataSetColumn
Claus Gittinger <cg@exept.de>
parents: 4331
diff changeset
  1373
        ^ font heightOf:aLabel
1496
78d702c6c614 bugFix:
Claus Gittinger <cg@exept.de>
parents: 1493
diff changeset
  1374
    ].
1147
2d0b9fc2422c new feature:
Claus Gittinger <cg@exept.de>
parents: 1133
diff changeset
  1375
5348
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
  1376
    aLabel isSequenceable ifTrue:[
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
  1377
        ^ aLabel inject:0 into:[:sumH :line | sumH + (line heightOn:dataSet)].
1147
2d0b9fc2422c new feature:
Claus Gittinger <cg@exept.de>
parents: 1133
diff changeset
  1378
    ].
2d0b9fc2422c new feature:
Claus Gittinger <cg@exept.de>
parents: 1133
diff changeset
  1379
5348
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
  1380
    ^ aLabel 
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
  1381
            perform:#heightOn: 
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
  1382
            with:dataSet 
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
  1383
            ifNotUnderstood:[aLabel displayString heightOn:dataSet].
3992
184aff1e22bc changed:
Claus Gittinger <cg@exept.de>
parents: 3990
diff changeset
  1384
184aff1e22bc changed:
Claus Gittinger <cg@exept.de>
parents: 3990
diff changeset
  1385
    "Modified: / 20-01-2011 / 18:03:38 / cg"
1147
2d0b9fc2422c new feature:
Claus Gittinger <cg@exept.de>
parents: 1133
diff changeset
  1386
!
2d0b9fc2422c new feature:
Claus Gittinger <cg@exept.de>
parents: 1133
diff changeset
  1387
1937
1eb0ed685b71 enable/disable resizeability
ca
parents: 1928
diff changeset
  1388
isResizeable
1eb0ed685b71 enable/disable resizeability
ca
parents: 1928
diff changeset
  1389
    "returns true if the row is resizeable
1eb0ed685b71 enable/disable resizeability
ca
parents: 1928
diff changeset
  1390
    "
1eb0ed685b71 enable/disable resizeability
ca
parents: 1928
diff changeset
  1391
    ^ description isResizeable
1eb0ed685b71 enable/disable resizeability
ca
parents: 1928
diff changeset
  1392
!
1eb0ed685b71 enable/disable resizeability
ca
parents: 1928
diff changeset
  1393
2542
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
  1394
isRowVisible:rowNr
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
  1395
    ^ description rowIsVisible:(dataSet at:rowNr)
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
  1396
!
fc78c87abbd2 +visibilitySelector
penk
parents: 2502
diff changeset
  1397
3767
72bb638a96e2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
  1398
isSortable
72bb638a96e2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
  1399
    ^ description isSortable
72bb638a96e2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
  1400
!
72bb638a96e2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
  1401
1113
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
  1402
showColSeparator
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
  1403
    "returns true if column separator is on
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
  1404
    "
6b0513d33566 add new functionality
ca
parents: 1100
diff changeset
  1405
    ^ showColSeparator
1133
619b0afc557a checkin from browser
ca
parents: 1132
diff changeset
  1406
!
619b0afc557a checkin from browser
ca
parents: 1132
diff changeset
  1407
619b0afc557a checkin from browser
ca
parents: 1132
diff changeset
  1408
showSelectionHighLighted
619b0afc557a checkin from browser
ca
parents: 1132
diff changeset
  1409
    "returns true if selection is highLighted
619b0afc557a checkin from browser
ca
parents: 1132
diff changeset
  1410
    "
619b0afc557a checkin from browser
ca
parents: 1132
diff changeset
  1411
    ^ description showSelectionHighLighted ~~ false
1147
2d0b9fc2422c new feature:
Claus Gittinger <cg@exept.de>
parents: 1133
diff changeset
  1412
!
2d0b9fc2422c new feature:
Claus Gittinger <cg@exept.de>
parents: 1133
diff changeset
  1413
2865
688eb125fe89 added xlatedChoices
Claus Gittinger <cg@exept.de>
parents: 2864
diff changeset
  1414
translatedChoicesFor:aRow at:aRowNr
688eb125fe89 added xlatedChoices
Claus Gittinger <cg@exept.de>
parents: 2864
diff changeset
  1415
    |translatedChoicesSelector|
688eb125fe89 added xlatedChoices
Claus Gittinger <cg@exept.de>
parents: 2864
diff changeset
  1416
688eb125fe89 added xlatedChoices
Claus Gittinger <cg@exept.de>
parents: 2864
diff changeset
  1417
    translatedChoicesSelector := description translatedChoices.
688eb125fe89 added xlatedChoices
Claus Gittinger <cg@exept.de>
parents: 2864
diff changeset
  1418
688eb125fe89 added xlatedChoices
Claus Gittinger <cg@exept.de>
parents: 2864
diff changeset
  1419
    columnAdaptor notNil ifTrue:[
688eb125fe89 added xlatedChoices
Claus Gittinger <cg@exept.de>
parents: 2864
diff changeset
  1420
        ^ columnAdaptor perform:translatedChoicesSelector withOptionalArgument:aRow and:columnNumber and:aRowNr and:dataSet
688eb125fe89 added xlatedChoices
Claus Gittinger <cg@exept.de>
parents: 2864
diff changeset
  1421
    ].
688eb125fe89 added xlatedChoices
Claus Gittinger <cg@exept.de>
parents: 2864
diff changeset
  1422
    ^ aRow perform:translatedChoicesSelector withOptionalArgument:aRowNr and:columnNumber and:dataSet
688eb125fe89 added xlatedChoices
Claus Gittinger <cg@exept.de>
parents: 2864
diff changeset
  1423
!
688eb125fe89 added xlatedChoices
Claus Gittinger <cg@exept.de>
parents: 2864
diff changeset
  1424
1147
2d0b9fc2422c new feature:
Claus Gittinger <cg@exept.de>
parents: 1133
diff changeset
  1425
widthOfLabel:aLabel
5348
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
  1426
    "returns the width of the label"
1147
2d0b9fc2422c new feature:
Claus Gittinger <cg@exept.de>
parents: 1133
diff changeset
  1427
5348
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
  1428
    aLabel isNil ifTrue:[ ^ 0 ].
1496
78d702c6c614 bugFix:
Claus Gittinger <cg@exept.de>
parents: 1493
diff changeset
  1429
    (aLabel isString or:[aLabel isImageOrForm]) ifTrue:[
78d702c6c614 bugFix:
Claus Gittinger <cg@exept.de>
parents: 1493
diff changeset
  1430
        ^ aLabel widthOn:dataSet
78d702c6c614 bugFix:
Claus Gittinger <cg@exept.de>
parents: 1493
diff changeset
  1431
    ].
1147
2d0b9fc2422c new feature:
Claus Gittinger <cg@exept.de>
parents: 1133
diff changeset
  1432
5348
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
  1433
    aLabel isSequenceable ifTrue:[
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
  1434
        ^ aLabel inject:0 into:[:sumW :line | sumW max:(line widthOn:dataSet)].
1147
2d0b9fc2422c new feature:
Claus Gittinger <cg@exept.de>
parents: 1133
diff changeset
  1435
    ].
2d0b9fc2422c new feature:
Claus Gittinger <cg@exept.de>
parents: 1133
diff changeset
  1436
5348
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
  1437
    ^ aLabel 
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
  1438
        perform:#widthOn: with:dataSet 
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
  1439
        ifNotUnderstood:[aLabel displayString widthOn:dataSet].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1440
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1441
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1442
!DataSetColumn methodsFor:'searching'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1443
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1444
findRowNrStartingWithChar:aChar start:start stop:stop
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1445
    "find the first row starting at start to stop, which drawable label
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1446
     starts with the character, aChar. The index of the detected row is
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1447
     returned or if no row is found 0.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1448
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1449
    |char|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1450
1496
78d702c6c614 bugFix:
Claus Gittinger <cg@exept.de>
parents: 1493
diff changeset
  1451
    containsText ifTrue:[
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1452
        char  := aChar asLowercase.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1453
2211
f14db8e094b9 pass rowNr and dataSet as additional args to
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
  1454
        start to:stop do:[:eachNr| |row lbl|
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2635
diff changeset
  1455
            (dataSet isRowSelectable:eachNr) ifTrue:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2635
diff changeset
  1456
                row := dataSet at:eachNr.
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2635
diff changeset
  1457
                lbl := self shownValueForRow:row rowNr:eachNr.
1147
2d0b9fc2422c new feature:
Claus Gittinger <cg@exept.de>
parents: 1133
diff changeset
  1458
5348
cc2400eba609 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5311
diff changeset
  1459
                lbl isNonByteCollection ifTrue:[
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2635
diff changeset
  1460
                    lbl := lbl at:1 ifAbsent:nil
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2635
diff changeset
  1461
                ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1462
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2635
diff changeset
  1463
                (lbl respondsTo:#string) ifTrue:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2635
diff changeset
  1464
                    lbl := lbl string.
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2635
diff changeset
  1465
                    (lbl size ~~ 0 and:[(lbl at:1) asLowercase == char]) ifTrue:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2635
diff changeset
  1466
                        ^ eachNr
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2635
diff changeset
  1467
                    ]
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2635
diff changeset
  1468
                ] ifFalse:[
4248
dc2031ba7c52 class: DataSetColumn
Claus Gittinger <cg@exept.de>
parents: 4234
diff changeset
  1469
                    lbl notNil ifTrue:[ ^ 0 ].
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2635
diff changeset
  1470
                ].
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2635
diff changeset
  1471
            ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1472
        ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1473
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1474
    ^ 0
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1475
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1476
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1477
!DataSetColumn class methodsFor:'documentation'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1478
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1479
version
4821
b53364768c88 class: DataSetColumn
Claus Gittinger <cg@exept.de>
parents: 4660
diff changeset
  1480
    ^ '$Header$'
3767
72bb638a96e2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
  1481
!
72bb638a96e2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
  1482
72bb638a96e2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
  1483
version_CVS
4821
b53364768c88 class: DataSetColumn
Claus Gittinger <cg@exept.de>
parents: 4660
diff changeset
  1484
    ^ '$Header$'
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1485
! !
4230
acf268d95fd0 class: DataSetColumn
Claus Gittinger <cg@exept.de>
parents: 4151
diff changeset
  1486
6246
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
  1487
0fcf80697af7 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5374
diff changeset
  1488
DataSetColumn initialize!