DataSetView.st
author ca
Fri, 07 Nov 1997 14:27:53 +0100
changeset 607 a5e0c2bf1370
parent 570 133bdb474043
child 611 7fb299f3f542
permissions -rw-r--r--
support of multiple select:rows
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     1
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     2
 COPYRIGHT (c) 1997 by Claus Gittinger / eXept Software AG
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     3
              All Rights Reserved
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     4
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     5
 This software is furnished under a license and may be used
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    10
 hereby transferred.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    11
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    12
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    13
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    14
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    15
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    16
View subclass:#DataSetView
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    17
	instanceVariableNames:'columnView labelView listHolder useIndex'
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    18
	classVariableNames:''
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    19
	poolDictionaries:''
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    20
	category:'Views-DataSet'
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    21
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    22
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    23
!DataSetView class methodsFor:'documentation'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    24
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    25
copyright
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    26
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    27
 COPYRIGHT (c) 1997 by Claus Gittinger / eXept Software AG
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    28
              All Rights Reserved
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    29
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    30
 This software is furnished under a license and may be used
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    31
 only in accordance with the terms of that license and with the
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    32
 inclusion of the above copyright notice.   This software may not
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    33
 be provided or otherwise made available to, or used by, any
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    34
 other person.  No title to or ownership of the software is
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    35
 hereby transferred.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    36
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    37
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    38
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    39
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    40
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    41
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    42
documentation
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    43
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    44
    This class implements a selection list view based on rows and columns.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    45
    It allows for the dynamic editing of this information.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    46
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    47
    [author:]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    48
        Claus Atzkern
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    49
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    50
    [see also:]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    51
        DataSetColumnSpec
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    52
        DataSetColumn
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    53
        DSVColumnView
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    54
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    55
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    56
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    57
examples
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    58
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    59
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    60
    example 1
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    61
                                                                                [exBegin]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    62
    |top scr clDc rows slct list idx bool|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    63
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    64
    top  := StandardSystemView new label:'select'; extent:700@440.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    65
    scr  := DataSetView origin:(0.0 @ 0.0) corner:(1.0 @ 1.0) in:top.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    66
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    67
    clDc := OrderedCollection new.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    68
    rows := OrderedCollection new.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    69
    list := #( 'Text ' 'Field ' 'C-Box ' 'C-List ' true    #( 'foo' 'bar' 'baz' ) ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    70
    slct := #( #text   #field   #cbox    #clist    #toggle #choices               ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    71
    idx  := 11.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    72
    bool := true.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    73
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    74
    20 timesRepeat:[ |values|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    75
        values := list collect:[:n|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    76
            n isString ifTrue:[n, idx printString]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    77
                      ifFalse:[n == true ifTrue:[bool] ifFalse:[n]]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    78
        ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    79
        rows add:(Structure newWith:slct values:values).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    80
        bool := bool not.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    81
        idx  := idx + 1.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    82
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    83
    clDc add:( DataSetColumnSpec label:'Text'   editorType:#None        selector:#text ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    84
    clDc add:( DataSetColumnSpec label:'Text'   editorType:#None        selector:#text ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    85
    clDc add:( DataSetColumnSpec label:'Field'  editorType:#InputField  selector:#field ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    86
    clDc add:( DataSetColumnSpec label:'C-Box'  editorType:#ComboBox    selector:#cbox ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    87
    clDc last choices:#choices.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    88
    clDc add:( DataSetColumnSpec label:'C-List' editorType:#ComboList   selector:#clist ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    89
    clDc last choices:#choices.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    90
    clDc add:( DataSetColumnSpec label:'Toggle' editorType:#CheckToggle selector:#toggle ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    91
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 570
diff changeset
    92
    scr has3Dseparators:true.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    93
    scr columnDescriptors:clDc.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    94
    scr list:rows.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    95
    top open.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    96
                                                                                [exEnd]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    97
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    98
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    99
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   100
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   101
    example 2: add a row selector
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   102
                                                                                [exBegin]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   103
    |top scr clDc rows slct list idx bool|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   104
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   105
    top  := StandardSystemView new label:'select'; extent:700@440.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   106
    scr  := DataSetView origin:(0.0 @ 0.0) corner:(1.0 @ 1.0) in:top.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   107
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   108
    clDc := OrderedCollection new.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   109
    rows := OrderedCollection new.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   110
    list := #( 'Text ' 'Field ' 'C-Box ' 'C-List ' true    #( 'foo' 'bar' 'baz' ) ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   111
    slct := #( #text   #field   #cbox    #clist    #toggle #choices               ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   112
    idx  := 11.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   113
    bool := true.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   114
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   115
    20 timesRepeat:[ |values|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   116
        values := list collect:[:n|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   117
            n isString ifTrue:[n, idx printString]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   118
                      ifFalse:[n == true ifTrue:[bool] ifFalse:[n]]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   119
        ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   120
        rows add:(Structure newWith:slct values:values).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   121
        bool := bool not.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   122
        idx  := idx + 1.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   123
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   124
    clDc add:( DataSetColumnSpec rowSelector ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   125
    clDc add:( DataSetColumnSpec label:'Text'   editorType:#None        selector:#text ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   126
    clDc add:( DataSetColumnSpec label:'Text'   editorType:#None        selector:#text ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   127
    clDc add:( DataSetColumnSpec label:'Field'  editorType:#InputField  selector:#field ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   128
    clDc add:( DataSetColumnSpec label:'C-Box'  editorType:#ComboBox    selector:#cbox ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   129
    clDc last choices:#choices.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   130
    clDc add:( DataSetColumnSpec label:'C-List' editorType:#ComboList   selector:#clist ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   131
    clDc last choices:#choices.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   132
    clDc add:( DataSetColumnSpec label:'Toggle' editorType:#CheckToggle selector:#toggle ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   133
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 570
diff changeset
   134
    scr has3Dseparators:true.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   135
    scr columnDescriptors:clDc.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   136
    scr list:rows.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   137
    top open.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   138
                                                                                [exEnd]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   139
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   140
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   141
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   142
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   143
    example 3: performance test
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   144
                                                                                [exBegin]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   145
    |t1 top scr clDc rows slct list bool tmArr listModel|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   146
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   147
    top  := StandardSystemView new label:'select'; extent:600@440.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   148
    scr  := DataSetView origin:(0.0 @ 0.0) corner:(1.0 @ 1.0) in:top.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   149
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   150
    clDc := OrderedCollection new.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   151
    rows := OrderedCollection new.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   152
    list := #( 'Text ' 'Field ' 'C-Box ' 'C-List ' true ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   153
    slct := #( #text   #field   #cbox    #clist    #toggle ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   154
    bool := true.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   155
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   156
    clDc add:( DataSetColumnSpec label:'Text'   editorType:#None        selector:#text ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   157
    clDc add:( DataSetColumnSpec label:'Field'  editorType:#InputField  selector:#field ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   158
    clDc add:( DataSetColumnSpec label:'C-Box'  editorType:#ComboBox    selector:#cbox ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   159
    clDc add:( DataSetColumnSpec label:'C-List' editorType:#ComboList   selector:#clist ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   160
    clDc add:( DataSetColumnSpec label:'Toggle' editorType:#CheckToggle selector:#toggle ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   161
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   162
    scr columnDescriptors:clDc.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   163
    scr beDependentOfRows:false.
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 570
diff changeset
   164
    scr has3Dseparators:false.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   165
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   166
    top openAndWait.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   167
    tmArr := Array new:4.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   168
    listModel := List new.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   169
    scr listHolder:listModel.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   170
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   171
    (1 to:tmArr size) do:[:i|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   172
        listModel removeAll.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   173
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   174
        t1 := Time millisecondsToRun:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   175
            1 to:200 do:[:i| |values|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   176
                values := list collect:[:n|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   177
                    n isString ifTrue:[n, i printString]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   178
                              ifFalse:[n == true ifTrue:[bool] ifFalse:[n]]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   179
                ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   180
                listModel add:(Structure newWith:slct values:values).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   181
                bool := bool not.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   182
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   183
                i even ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   184
                    listModel removeFirst
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   185
                ]       
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   186
            ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   187
        ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   188
        tmArr at:i put:t1
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   189
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   190
    t1 := 0.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   191
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   192
    Transcript showCR:'----------'.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   193
    tmArr do:[:t|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   194
        t1 := t1 + t.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   195
        Transcript showCR:'TIME : ', t printString.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   196
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   197
    Transcript showCR:'----------'.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   198
    Transcript showCR:'DIFF : ', (t1 // tmArr size) printString.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   199
                                                                                [exEnd]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   200
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   201
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   202
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   203
    example 4: images as label
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   204
                                                                                [exBegin]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   205
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   206
    |lbl top scr clDc rows slct list idx bool|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   207
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   208
    top  := StandardSystemView new label:'select'; extent:400@440.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   209
    scr  := DataSetView origin:(0.0 @ 0.0) corner:(1.0 @ 1.0) in:top.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   210
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   211
    clDc := OrderedCollection new.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   212
    rows := OrderedCollection new.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   213
    list := #( 'Text ' 'Field ' 'C-Box ' 'C-List ' true    #( 'foo' 'bar' 'baz' ) ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   214
    slct := #( #text   #field   #cbox    #clist    #toggle #choices               ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   215
    idx  := 11.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   216
    bool := true.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   217
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   218
    20 timesRepeat:[ |values|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   219
        values := list collect:[:n|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   220
            n isString ifTrue:[n, idx printString]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   221
                      ifFalse:[n == true ifTrue:[bool] ifFalse:[n]]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   222
        ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   223
        rows add:(Structure newWith:slct values:values).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   224
        bool := bool not.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   225
        idx  := idx + 1.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   226
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   227
    lbl := Image fromFile:('gifImages/nexthand.gif' ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   228
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   229
    clDc add:( DataSetColumnSpec label:lbl      editorType:#None        selector:#text ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   230
    clDc add:( DataSetColumnSpec label:'Text'   editorType:#None        selector:#text ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   231
    clDc add:( DataSetColumnSpec label:'Field'  editorType:#InputField  selector:#field ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   232
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   233
    lbl := Image fromFile:('xpmBitmaps/misc_tools/box_full.xpm' ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   234
    clDc add:( DataSetColumnSpec label:lbl      editorType:#ComboBox    selector:#cbox ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   235
    clDc last choices:#choices.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   236
    clDc add:( DataSetColumnSpec label:'C-List' editorType:#ComboList   selector:#clist ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   237
    clDc last choices:#choices.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   238
    clDc add:( DataSetColumnSpec label:'Toggle' editorType:#CheckToggle selector:#toggle ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   239
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 570
diff changeset
   240
    scr has3Dseparators:true.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   241
    scr columnDescriptors:clDc.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   242
    scr list:rows.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   243
    top open.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   244
                                                                                [exEnd]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   245
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   246
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   247
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   248
"
570
ca
parents: 564
diff changeset
   249
!
ca
parents: 564
diff changeset
   250
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 570
diff changeset
   251
test:with3Dseparators
a5e0c2bf1370 support of multiple select:rows
ca
parents: 570
diff changeset
   252
    "performance test
a5e0c2bf1370 support of multiple select:rows
ca
parents: 570
diff changeset
   253
    "
570
ca
parents: 564
diff changeset
   254
    |t1 top scr clDc rows slct list bool tmArr listModel|
ca
parents: 564
diff changeset
   255
ca
parents: 564
diff changeset
   256
    top  := StandardSystemView new label:'select'; extent:600@440.
ca
parents: 564
diff changeset
   257
    scr  := DataSetView origin:(0.0 @ 0.0) corner:(1.0 @ 1.0) in:top.
ca
parents: 564
diff changeset
   258
ca
parents: 564
diff changeset
   259
    clDc := OrderedCollection new.
ca
parents: 564
diff changeset
   260
    rows := OrderedCollection new.
ca
parents: 564
diff changeset
   261
    list := #( 'Text ' 'Field ' 'C-Box ' 'C-List ' true ).
ca
parents: 564
diff changeset
   262
    slct := #( #text   #field   #cbox    #clist    #toggle ).
ca
parents: 564
diff changeset
   263
    bool := true.
ca
parents: 564
diff changeset
   264
ca
parents: 564
diff changeset
   265
    clDc add:( DataSetColumnSpec label:'Text'   editorType:#None        selector:#text ).
ca
parents: 564
diff changeset
   266
    clDc add:( DataSetColumnSpec label:'Field'  editorType:#InputField  selector:#field ).
ca
parents: 564
diff changeset
   267
    clDc add:( DataSetColumnSpec label:'C-Box'  editorType:#ComboBox    selector:#cbox ).
ca
parents: 564
diff changeset
   268
    clDc add:( DataSetColumnSpec label:'C-List' editorType:#ComboList   selector:#clist ).
ca
parents: 564
diff changeset
   269
    clDc add:( DataSetColumnSpec label:'Toggle' editorType:#CheckToggle selector:#toggle ).
ca
parents: 564
diff changeset
   270
ca
parents: 564
diff changeset
   271
    scr columnDescriptors:clDc.
ca
parents: 564
diff changeset
   272
    scr beDependentOfRows:false.
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 570
diff changeset
   273
    scr has3Dseparators:with3Dseparators.
570
ca
parents: 564
diff changeset
   274
ca
parents: 564
diff changeset
   275
    top openAndWait.
ca
parents: 564
diff changeset
   276
    tmArr := Array new:8.
ca
parents: 564
diff changeset
   277
    listModel := List new.
ca
parents: 564
diff changeset
   278
    scr listHolder:listModel.
ca
parents: 564
diff changeset
   279
ca
parents: 564
diff changeset
   280
    (1 to:tmArr size) do:[:i|
ca
parents: 564
diff changeset
   281
        listModel removeAll.
ca
parents: 564
diff changeset
   282
ca
parents: 564
diff changeset
   283
        t1 := Time millisecondsToRun:[
ca
parents: 564
diff changeset
   284
            1 to:200 do:[:i| |values|
ca
parents: 564
diff changeset
   285
                values := list collect:[:n|
ca
parents: 564
diff changeset
   286
                    n isString ifTrue:[n, i printString]
ca
parents: 564
diff changeset
   287
                              ifFalse:[n == true ifTrue:[bool] ifFalse:[n]]
ca
parents: 564
diff changeset
   288
                ].
ca
parents: 564
diff changeset
   289
                listModel add:(Structure newWith:slct values:values).
ca
parents: 564
diff changeset
   290
                bool := bool not.
ca
parents: 564
diff changeset
   291
ca
parents: 564
diff changeset
   292
                i even ifTrue:[
ca
parents: 564
diff changeset
   293
                    listModel removeFirst
ca
parents: 564
diff changeset
   294
                ]       
ca
parents: 564
diff changeset
   295
            ].
ca
parents: 564
diff changeset
   296
        ].
ca
parents: 564
diff changeset
   297
        tmArr at:i put:t1
ca
parents: 564
diff changeset
   298
    ].
ca
parents: 564
diff changeset
   299
    t1 := 0.
ca
parents: 564
diff changeset
   300
ca
parents: 564
diff changeset
   301
    Transcript showCR:'----------'.
ca
parents: 564
diff changeset
   302
    tmArr do:[:t|
ca
parents: 564
diff changeset
   303
        t1 := t1 + t.
ca
parents: 564
diff changeset
   304
        Transcript showCR:'TIME : ', t printString.
ca
parents: 564
diff changeset
   305
    ].
ca
parents: 564
diff changeset
   306
    Transcript showCR:'----------'.
ca
parents: 564
diff changeset
   307
    Transcript showCR:'DIFF : ', (t1 // tmArr size) printString.
ca
parents: 564
diff changeset
   308
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   309
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   310
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   311
!DataSetView methodsFor:'accessing'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   312
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   313
useIndex
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   314
    ^ useIndex
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   315
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   316
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   317
useIndex:aBool
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   318
    useIndex := aBool
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   319
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   320
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   321
!DataSetView methodsFor:'accessing menus'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   322
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   323
menuHolder:anObject
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   324
    "set the menu holder in the column view too
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   325
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   326
    super menuHolder:anObject.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   327
    columnView menuHolder:anObject.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   328
    labelView  menuHolder:anObject.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   329
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   330
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   331
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   332
menuMessage:aSymbol
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   333
    "set the menu message in the column view too
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   334
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   335
    super menuMessage:aSymbol.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   336
    columnView menuMessage:aSymbol.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   337
    labelView  menuMessage:aSymbol.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   338
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   339
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   340
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   341
menuPerformer:anObject
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   342
    "set the performer in the column view too
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   343
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   344
    super menuPerformer:anObject.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   345
    columnView menuPerformer:anObject.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   346
    labelView  menuPerformer:anObject.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   347
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   348
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   349
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   350
!DataSetView methodsFor:'accessing visibility'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   351
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   352
font:aFont
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   353
    columnView font:aFont
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   354
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   355
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   356
horizontalMini:aBool
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   357
    ^ columnView superView horizontalMini:aBool
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   358
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   359
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   360
horizontalScrollable:aBool
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   361
    ^ columnView superView horizontalScrollable:aBool
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   362
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   363
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   364
isHorizontalScrollable
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   365
    ^ columnView superView isHorizontalScrollable
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   366
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   367
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   368
isVerticalScrollable
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   369
    ^ columnView superView isVerticalScrollable
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   370
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   371
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   372
verticalMini:aBool
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   373
    columnView superView verticalMini:aBool.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   374
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   375
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   376
verticalScrollable:aBool
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   377
    columnView superView verticalScrollable:aBool.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   378
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   379
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   380
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   381
viewBackground
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   382
    "get the background color of the rows
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   383
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   384
    ^ columnView backgroundColor.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   385
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   386
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   387
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   388
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   389
viewBackground:aColor
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   390
    "set the background color of the rows
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   391
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   392
    ^ columnView backgroundColor:aColor.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   393
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   394
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   395
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   396
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   397
!DataSetView methodsFor:'adding & removing rows'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   398
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   399
add:aRow
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   400
    "add a row; reimplemented caused by add in base class
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   401
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   402
    ^ columnView add:aRow
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   403
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   404
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   405
!DataSetView methodsFor:'change & update'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   406
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   407
listHolder:aListHolder
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   408
    "set listholder and update list.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   409
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   410
    |list|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   411
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   412
    listHolder notNil ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   413
        listHolder removeDependent:self
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   414
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   415
    (listHolder := aListHolder) notNil ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   416
        listHolder addDependent:self
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   417
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   418
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   419
    (list := listHolder value) notNil ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   420
        columnView list:(list collect:[:el| el ])
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   421
    ] ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   422
        columnView list:nil.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   423
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   424
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   425
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   426
model:aModel
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   427
    "update model and list holder (derived from model).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   428
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   429
    (model respondsTo:#list) ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   430
        (model list == listHolder) ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   431
            self listHolder:nil
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   432
        ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   433
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   434
    super model:aModel.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   435
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   436
    aModel notNil ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   437
        (aModel respondsTo:#list) ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   438
            self listHolder:model list
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   439
        ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   440
    ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   441
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   442
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   443
update:what with:aPara from:chgObj
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   444
    "one of my models changed
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   445
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   446
    |val|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   447
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   448
    chgObj == columnView ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   449
        chgObj == model ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   450
            (what == #selectionIndex or:[what == #selection]) ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   451
                ^ columnView selectRowIndex:(model selectionIndex)
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   452
            ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   453
            what == #list ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   454
                ^ self listHolder:model list
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   455
            ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   456
            model == listHolder ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   457
                what == #value ifTrue:[
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 570
diff changeset
   458
                    columnView selectRowIndex:model value
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   459
                ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   460
                ^ self
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   461
            ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   462
        ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   463
        "/ listHolder and model could be the same
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   464
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   465
        chgObj == listHolder ifTrue:[
564
fa7bb887b4fa recompute column height done in DSVLabelView now
ca
parents: 542
diff changeset
   466
            what == #at: ifTrue:[
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   467
                columnView at:aPara put:(listHolder at:aPara)
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   468
            ] ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   469
                self perform:what with:aPara
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   470
            ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   471
        ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   472
        ^ self
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   473
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   474
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   475
    what == #selection ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   476
        model notNil ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   477
            val := columnView selectedRowIndex.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   478
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   479
            (model respondsTo:#selectionIndex:) ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   480
                model selectionIndex:val
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   481
            ] ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   482
                useIndex ifFalse:[val := columnView selectedRow].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   483
                model value:val
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   484
            ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   485
        ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   486
        ^ self
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   487
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   488
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   489
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   490
!DataSetView methodsFor:'change & update model'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   491
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   492
insert:anIndex
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   493
    "raised from listHolder: insert row derived from listHolder at anIndex
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   494
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   495
    |list|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   496
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   497
    list := listHolder value.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   498
    columnView add:(list at:anIndex) beforeIndex:anIndex
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   499
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   500
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   501
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   502
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   503
insertCollection:anArray
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   504
    "raised from listHolder: insert collection of rows derived from listHolder
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   505
     from start (anArray at:1) to stop (anArray at:2).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   506
    "
570
ca
parents: 564
diff changeset
   507
    |start stop size list|
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   508
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   509
    list  := listHolder value.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   510
    start := anArray first.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   511
    size  := anArray last.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   512
570
ca
parents: 564
diff changeset
   513
    size == 0 ifTrue:[
ca
parents: 564
diff changeset
   514
        ^ self
ca
parents: 564
diff changeset
   515
    ].
ca
parents: 564
diff changeset
   516
    stop := start + size - 1.
ca
parents: 564
diff changeset
   517
    columnView addAll:(list copyFrom:start to:stop) beforeIndex:start
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   518
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   519
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   520
remove:anIndex
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   521
    "raised from listHolder: remove row at anIndex
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   522
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   523
    columnView removeIndex:anIndex
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   524
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   525
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   526
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   527
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   528
removeFrom:anArray
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   529
    "raised from listHolder: remove rows from start (anArray at:1) 
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   530
     to stop (anArray at:2).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   531
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   532
    |start stop|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   533
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   534
    start := anArray first.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   535
    stop  := anArray last.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   536
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   537
    (start == 1 and:[stop == columnView size]) ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   538
        columnView list:nil
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   539
    ] ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   540
        (stop - start + 1) timesRepeat:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   541
            columnView removeIndex:start
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   542
        ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   543
    ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   544
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   545
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   546
replace:anArray
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   547
    "raised from listHolder: replace collection of rows derived from listHolder
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   548
     from start (anArray at:1) to stop (anArray at:2).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   549
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   550
    |start stop list|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   551
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   552
    start := anArray first.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   553
    stop  := anArray last.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   554
    list  := listHolder value.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   555
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   556
    start to:stop do:[:anIndex|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   557
        columnView at:anIndex put:(list at:anIndex)
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   558
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   559
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   560
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   561
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   562
!DataSetView methodsFor:'error handling'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   563
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   564
doesNotUnderstand:aMessage
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   565
    ^ aMessage sendTo:columnView
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   566
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   567
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   568
!DataSetView methodsFor:'initialize'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   569
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   570
destroy
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   571
    "remove dependencies
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   572
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   573
    listHolder notNil ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   574
        listHolder removeDependent:self
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   575
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   576
    super destroy
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   577
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   578
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   579
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   580
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   581
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   582
initialize
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   583
    "set column area
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   584
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   585
    super initialize.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   586
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   587
    columnView := HVScrollableView for:DSVColumnView 
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   588
                         miniScrollerH:true
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   589
                         miniScrollerV:false
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   590
                                origin:(0.0 @ 0.0)
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   591
                                corner:(1.0 @ 1.0)
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   592
                                     in:self.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   593
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   594
    labelView := DSVLabelView origin:(0.0 @ 0.0)
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   595
                              corner:(1.0 @ 0.0)
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   596
                                  in:self.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   597
    useIndex := true.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   598
    columnView := columnView scrolledView.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   599
    labelView columnView:columnView.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   600
    columnView borderWidth:0.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   601
    columnView addDependent:self.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   602
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   603
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   604
realize
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   605
    super realize.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   606
    self bitGravity:#NorthWest.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   607
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   608
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   609
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   610
!DataSetView methodsFor:'queries'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   611
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   612
specClass
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   613
    ^ DataSetSpec
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   614
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   615
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   616
!DataSetView class methodsFor:'documentation'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   617
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   618
version
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 570
diff changeset
   619
    ^ '$Header: /cvs/stx/stx/libwidg2/DataSetView.st,v 1.4 1997-11-07 13:27:53 ca Exp $'
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   620
! !