DataSetView.st
author Claus Gittinger <cg@exept.de>
Sat, 19 Jun 2004 16:42:52 +0200
changeset 2720 c2781a99aa15
parent 2500 1477b0a5a918
child 2721 5d00500ffc3e
permissions -rw-r--r--
do not ignore sizechange while being invisible
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
2090
af478f964ac0 avoid overhead in scrollbar creation.
Claus Gittinger <cg@exept.de>
parents: 1495
diff changeset
    16
"{ Package: 'stx:libwidg2' }"
af478f964ac0 avoid overhead in scrollbar creation.
Claus Gittinger <cg@exept.de>
parents: 1495
diff changeset
    17
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
    18
ScrollableView subclass:#DataSetView
2146
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
    19
	instanceVariableNames:'labelView rememberedTopOffsetOfScrolledView'
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    20
	classVariableNames:''
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    21
	poolDictionaries:''
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    22
	category:'Views-DataSet'
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    23
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    24
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    25
!DataSetView class methodsFor:'documentation'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    26
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    27
copyright
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    28
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    29
 COPYRIGHT (c) 1997 by Claus Gittinger / eXept Software AG
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    30
              All Rights Reserved
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    31
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    32
 This software is furnished under a license and may be used
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    33
 only in accordance with the terms of that license and with the
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    34
 inclusion of the above copyright notice.   This software may not
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    35
 be provided or otherwise made available to, or used by, any
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    36
 other person.  No title to or ownership of the software is
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    37
 hereby transferred.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    38
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    39
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    40
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    41
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    42
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    43
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    44
documentation
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    45
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    46
    This class implements a selection list view based on rows and columns.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    47
    It allows for the dynamic editing of this information.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    48
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    49
    [author:]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    50
        Claus Atzkern
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    51
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    52
    [see also:]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    53
        DataSetColumnSpec
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    54
        DataSetColumn
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    55
        DSVColumnView
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    56
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    57
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    58
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    59
examples
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    60
"
619
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
    61
    example 1: list with valid rows of type Array
611
7fb299f3f542 implement writeSelector
ca
parents: 607
diff changeset
    62
                                                                                [exBegin]
7fb299f3f542 implement writeSelector
ca
parents: 607
diff changeset
    63
    |top scr columns rows bool rdWtSel|
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    64
1495
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
    65
    top  := StandardSystemView new label:'Simple Test'; extent:700@440.
611
7fb299f3f542 implement writeSelector
ca
parents: 607
diff changeset
    66
    scr  := DataSetView origin:(0.0 @ 0.0) corner:(1.0 @ 1.0) in:top.
7fb299f3f542 implement writeSelector
ca
parents: 607
diff changeset
    67
7fb299f3f542 implement writeSelector
ca
parents: 607
diff changeset
    68
    columns := OrderedCollection new.
7fb299f3f542 implement writeSelector
ca
parents: 607
diff changeset
    69
    rows    := OrderedCollection new.
7fb299f3f542 implement writeSelector
ca
parents: 607
diff changeset
    70
    bool    := true.
7fb299f3f542 implement writeSelector
ca
parents: 607
diff changeset
    71
    rdWtSel := #( #at: #at:put: ).
7fb299f3f542 implement writeSelector
ca
parents: 607
diff changeset
    72
7fb299f3f542 implement writeSelector
ca
parents: 607
diff changeset
    73
    1 to:1000 do:[:i||n|
7fb299f3f542 implement writeSelector
ca
parents: 607
diff changeset
    74
        n := i printString.
7fb299f3f542 implement writeSelector
ca
parents: 607
diff changeset
    75
        rows add:(Array with:('text: ', n) with:('input: ', n) with:bool).
7fb299f3f542 implement writeSelector
ca
parents: 607
diff changeset
    76
        bool := bool not.
7fb299f3f542 implement writeSelector
ca
parents: 607
diff changeset
    77
    ].
7fb299f3f542 implement writeSelector
ca
parents: 607
diff changeset
    78
7fb299f3f542 implement writeSelector
ca
parents: 607
diff changeset
    79
    columns add:(DataSetColumnSpec label:'Text'   editorType:#None        selector:rdWtSel).
7fb299f3f542 implement writeSelector
ca
parents: 607
diff changeset
    80
    columns add:(DataSetColumnSpec label:'Input'  editorType:#InputField  selector:rdWtSel).
7fb299f3f542 implement writeSelector
ca
parents: 607
diff changeset
    81
    columns add:(DataSetColumnSpec label:'Toggle' editorType:#CheckToggle selector:rdWtSel).
7fb299f3f542 implement writeSelector
ca
parents: 607
diff changeset
    82
7fb299f3f542 implement writeSelector
ca
parents: 607
diff changeset
    83
    scr columnDescriptors:columns.
7fb299f3f542 implement writeSelector
ca
parents: 607
diff changeset
    84
    scr list:rows.
7fb299f3f542 implement writeSelector
ca
parents: 607
diff changeset
    85
    top open.
7fb299f3f542 implement writeSelector
ca
parents: 607
diff changeset
    86
                                                                                [exEnd]
7fb299f3f542 implement writeSelector
ca
parents: 607
diff changeset
    87
7fb299f3f542 implement writeSelector
ca
parents: 607
diff changeset
    88
619
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
    89
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
    90
    example 2: list with none valid rows; defining #rowIfAbsent: block
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
    91
                                                                                [exBegin]
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
    92
    |top scr columns bool rdWtSel|
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
    93
1495
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
    94
    top  := StandardSystemView new label:'Row Is Absent'; extent:700@440.
619
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
    95
    scr  := DataSetView origin:(0.0 @ 0.0) corner:(1.0 @ 1.0) in:top.
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
    96
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
    97
    columns := OrderedCollection new.
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
    98
    bool    := true.
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
    99
    rdWtSel := #( #at: #at:put: ).
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
   100
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
   101
    columns add:(DataSetColumnSpec label:'Text'   editorType:#None        selector:rdWtSel).
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
   102
    columns add:(DataSetColumnSpec label:'Input'  editorType:#InputField  selector:rdWtSel).
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
   103
    columns add:(DataSetColumnSpec label:'Toggle' editorType:#CheckToggle selector:rdWtSel).
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
   104
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
   105
    scr rowIfAbsent:[:i|
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
   106
        bool := bool not.
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
   107
        Array with:('text: ', i printString) with:('input: ') with:bool
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
   108
    ].
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
   109
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
   110
    scr columnDescriptors:columns.
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
   111
    scr list:(Array new:1000).
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
   112
    top open.
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
   113
                                                                                [exEnd]
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
   114
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
   115
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
   116
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
   117
    example 3: list with valid rows of type Structure
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   118
                                                                                [exBegin]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   119
    |top scr clDc rows slct list idx bool|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   120
1495
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   121
    top  := StandardSystemView new label:'Editors'; extent:700@440.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   122
    scr  := DataSetView origin:(0.0 @ 0.0) corner:(1.0 @ 1.0) in:top.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   123
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   124
    clDc := OrderedCollection new.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   125
    rows := OrderedCollection new.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   126
    list := #( 'Text ' 'Field ' 'C-Box ' 'C-List ' true    #( 'foo' 'bar' 'baz' ) ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   127
    slct := #( #text   #field   #cbox    #clist    #toggle #choices               ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   128
    idx  := 11.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   129
    bool := true.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   130
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   131
    20 timesRepeat:[ |values|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   132
        values := list collect:[:n|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   133
            n isString ifTrue:[n, idx printString]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   134
                      ifFalse:[n == true ifTrue:[bool] ifFalse:[n]]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   135
        ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   136
        rows add:(Structure newWith:slct values:values).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   137
        bool := bool not.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   138
        idx  := idx + 1.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   139
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   140
    clDc add:( DataSetColumnSpec label:'Text'   editorType:#None        selector:#text ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   141
    clDc add:( DataSetColumnSpec label:'Text'   editorType:#None        selector:#text ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   142
    clDc add:( DataSetColumnSpec label:'Field'  editorType:#InputField  selector:#field ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   143
    clDc add:( DataSetColumnSpec label:'C-Box'  editorType:#ComboBox    selector:#cbox ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   144
    clDc last choices:#choices.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   145
    clDc add:( DataSetColumnSpec label:'C-List' editorType:#ComboList   selector:#clist ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   146
    clDc last choices:#choices.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   147
    clDc add:( DataSetColumnSpec label:'Toggle' editorType:#CheckToggle selector:#toggle ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   148
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 570
diff changeset
   149
    scr has3Dseparators:true.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   150
    scr columnDescriptors:clDc.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   151
    scr list:rows.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   152
    top open.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   153
                                                                                [exEnd]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   154
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   155
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   156
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   157
619
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
   158
    example 4: table includes a row selector and multiple select is enabled
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   159
                                                                                [exBegin]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   160
    |top scr clDc rows slct list idx bool|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   161
1495
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   162
    top  := StandardSystemView new label:'Multiple Select'; extent:700@440.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   163
    scr  := DataSetView origin:(0.0 @ 0.0) corner:(1.0 @ 1.0) in:top.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   164
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   165
    clDc := OrderedCollection new.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   166
    rows := OrderedCollection new.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   167
    list := #( 'Text ' 'Field ' 'C-Box ' 'C-List ' true    #( 'foo' 'bar' 'baz' ) ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   168
    slct := #( #text   #field   #cbox    #clist    #toggle #choices               ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   169
    idx  := 11.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   170
    bool := true.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   171
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   172
    20 timesRepeat:[ |values|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   173
        values := list collect:[:n|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   174
            n isString ifTrue:[n, idx printString]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   175
                      ifFalse:[n == true ifTrue:[bool] ifFalse:[n]]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   176
        ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   177
        rows add:(Structure newWith:slct values:values).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   178
        bool := bool not.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   179
        idx  := idx + 1.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   180
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   181
    clDc add:( DataSetColumnSpec rowSelector ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   182
    clDc add:( DataSetColumnSpec label:'Text'   editorType:#None        selector:#text ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   183
    clDc add:( DataSetColumnSpec label:'Text'   editorType:#None        selector:#text ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   184
    clDc add:( DataSetColumnSpec label:'Field'  editorType:#InputField  selector:#field ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   185
    clDc add:( DataSetColumnSpec label:'C-Box'  editorType:#ComboBox    selector:#cbox ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   186
    clDc last choices:#choices.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   187
    clDc add:( DataSetColumnSpec label:'C-List' editorType:#ComboList   selector:#clist ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   188
    clDc last choices:#choices.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   189
    clDc add:( DataSetColumnSpec label:'Toggle' editorType:#CheckToggle selector:#toggle ).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   190
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 570
diff changeset
   191
    scr has3Dseparators:true.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   192
    scr columnDescriptors:clDc.
619
4a919c3f5f04 add examples
ca
parents: 611
diff changeset
   193
    scr multipleSelectOk:true.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   194
    scr list:rows.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   195
    top open.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   196
                                                                                [exEnd]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   197
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   198
1495
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   199
    example 5: Images and Layout
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   200
                                                                                [exBegin]
1495
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   201
    |top scr columns rows colDesc image text|
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   202
1495
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   203
    text := 'Text'.
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   204
    rows := Array new:1000.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   205
1495
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   206
    1 to:(rows size) do:[:i|
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   207
        rows at:i put:(Array with:('Id: ', i printString) with:text with:text)
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   208
    ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   209
1495
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   210
    columns := OrderedCollection new.
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   211
    image   := Image fromFile:('xpmBitmaps/misc_tools/box_full.xpm' ).
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   212
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   213
    colDesc := DataSetColumnSpec label:(LabelAndIcon icon:image string:'Left') selector:#at:.
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   214
    colDesc labelAlignment:#left.
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   215
    colDesc columnAlignment:#left.
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   216
    columns add:colDesc.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   217
1495
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   218
    colDesc := DataSetColumnSpec label:(LabelAndIcon icon:image string:'Right') selector:#at:.
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   219
    colDesc labelAlignment:#right.
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   220
    colDesc columnAlignment:#right.
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   221
    columns add:colDesc.
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   222
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   223
    colDesc := DataSetColumnSpec label:(LabelAndIcon icon:image string:'Center') selector:#at:.
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   224
    colDesc labelAlignment:#center.
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   225
    colDesc columnAlignment:#center.
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   226
    columns add:colDesc.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   227
1495
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   228
    columns do:[:el|el labelActionSelector:#dummy].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   229
1495
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   230
    top := StandardSystemView new label:'Layout'; extent:500@500.
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   231
    scr := DataSetView origin:(0.0 @ 0.0) corner:(1.0 @ 1.0) in:top.
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   232
    scr has3Dseparators:true.
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   233
    scr columnDescriptors:columns.
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   234
    scr list:rows.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   235
1495
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   236
    top open
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   237
                                                                                [exEnd]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   238
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   239
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   240
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   241
    example 6: adding and removing
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   242
                                                                                [exBegin]
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   243
    |top scr list|
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   244
1495
edd56c071260 update examples
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
   245
    top  := StandardSystemView new label:'Adding & Removing'; extent:600@440.
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   246
    scr  := DataSetView origin:(0.0 @ 0.0) corner:(1.0 @ 1.0) in:top.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   247
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   248
    scr columnDescriptors:( Array with:(DataSetColumnSpec label:'FOO' selector:#at:)
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   249
                                  with:(DataSetColumnSpec label:'BAR' selector:#at:)
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   250
                                  with:(DataSetColumnSpec label:'BAZ' selector:#at:)
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   251
                          ).
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   252
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   253
    scr has3Dseparators:true.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   254
    scr listHolder:(list := List new).
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   255
    top openAndWait.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   256
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   257
    1 to:32 do:[:i| |pid|
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   258
        pid := i printString.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   259
        list add:(Array with:('foo: ', pid) with:('bar: ', pid) with:('baz: ', pid)).
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   260
        i even ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   261
            list removeFirst
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   262
        ].       
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   263
        Delay waitForSeconds:0.1.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   264
    ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   265
                                                                                [exEnd]
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   266
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   267
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   268
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   269
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   270
2146
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   271
!DataSetView methodsFor:'change & update'!
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   272
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   273
update:something with:aParameter from:changedObject
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   274
    changedObject == labelView ifTrue:[
2153
0e2bc053f48a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   275
        ((something == #columnLayout) 
0e2bc053f48a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   276
        or:[something == #visibility]) ifTrue:[
2146
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   277
            self recomputeLayouts.
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   278
            ^ self
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   279
        ].
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   280
    ].
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   281
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   282
    super update:something with:aParameter from:changedObject
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   283
! !
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   284
2500
1477b0a5a918 method category rename
Claus Gittinger <cg@exept.de>
parents: 2153
diff changeset
   285
!DataSetView methodsFor:'initialization & release'!
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   286
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   287
initialize
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   288
    "set column area
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   289
    "
2146
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   290
    |columnView|
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   291
2090
af478f964ac0 avoid overhead in scrollbar creation.
Claus Gittinger <cg@exept.de>
parents: 1495
diff changeset
   292
    "/ preset flags to avoid creation and later destruction of scrollBars ...
af478f964ac0 avoid overhead in scrollbar creation.
Claus Gittinger <cg@exept.de>
parents: 1495
diff changeset
   293
    self setVertical:true mini:false horizontal:true mini:true.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   294
    super initialize.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   295
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   296
    self setupVertical:true mini:false horizontal:true mini:true.
2146
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   297
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   298
    labelView := DSVLabelView in:self.
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   299
    columnView := DSVColumnView new.
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   300
    columnView labelView:labelView.
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   301
2150
5184a8b92c2a better look
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
   302
    "/ columnView addDependent:self.
2146
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   303
    labelView addDependent:self.
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   304
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   305
    self scrolledView:columnView.
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   306
! !
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   307
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   308
!DataSetView methodsFor:'layout computation'!
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   309
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   310
recomputeLayouts
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   311
    |columnView columnViewLayout newOffset|
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   312
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   313
    columnView := self scrolledView.
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   314
    columnView isNil ifTrue:[^ self].
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   315
    (columnViewLayout := columnView layout) isNil ifTrue:[^ self].
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   316
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   317
    labelView isVisible ifFalse:[
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   318
        newOffset := scrolledViewLayout topOffset.
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   319
    ] ifTrue:[
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   320
        newOffset := scrolledViewLayout topOffset + (columnView preferredLabelViewHeight).
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   321
    ].
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   322
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   323
    newOffset ~~ columnViewLayout topOffset ifTrue:[
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   324
        columnViewLayout topOffset:newOffset.
2720
c2781a99aa15 do not ignore sizechange while being invisible
Claus Gittinger <cg@exept.de>
parents: 2500
diff changeset
   325
        columnView realized ifTrue:[
2146
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   326
            columnView containerChangedSize.
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   327
        ]
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   328
    ].
2153
0e2bc053f48a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   329
    labelView containerChangedSize.
2146
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   330
!
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   331
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   332
scrolledViewLayout:aLayout
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   333
    "invoked by superclasses setLayout method, whenever the scrolled views
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   334
     layout changes (due to added/removed scrollbars)."
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   335
2150
5184a8b92c2a better look
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
   336
    |modifiedLayout originalTopOffset labelViewLayout newLeft newRight|
2146
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   337
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   338
    "/ always copy - since layout it destructively modified in #recomputeLayouts
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   339
    modifiedLayout := aLayout copy.    
2153
0e2bc053f48a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   340
0e2bc053f48a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   341
    originalTopOffset := scrolledViewLayout topOffset.
2146
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   342
    labelView isVisible ifTrue:[
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   343
        modifiedLayout topOffset:(originalTopOffset + labelView height).
2153
0e2bc053f48a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   344
    ].
2150
5184a8b92c2a better look
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
   345
2153
0e2bc053f48a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   346
    newLeft := aLayout leftOffset.
0e2bc053f48a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   347
    newRight := aLayout rightOffset.
2151
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   348
2153
0e2bc053f48a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   349
    (scrolledView level == 0
0e2bc053f48a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   350
    and:[self level < 0 
0e2bc053f48a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   351
    and:[labelView level == 0]]) ifTrue:[
0e2bc053f48a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   352
        newRight := (newRight + 1) min:0.
0e2bc053f48a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   353
        modifiedLayout rightOffset:newRight.
0e2bc053f48a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   354
    ].
2150
5184a8b92c2a better look
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
   355
2153
0e2bc053f48a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   356
    labelViewLayout := labelView layout.
0e2bc053f48a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   357
    labelViewLayout topOffset:originalTopOffset.
0e2bc053f48a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   358
    labelViewLayout 
0e2bc053f48a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   359
        leftOffset:newLeft 
0e2bc053f48a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   360
        rightOffset:newRight.
0e2bc053f48a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   361
0e2bc053f48a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   362
    labelView isVisible ifTrue:[
2150
5184a8b92c2a better look
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
   363
        labelView containerChangedSize.
2146
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   364
    ].
4ae1ec9f5307 level fixes;
penk
parents: 2090
diff changeset
   365
    super scrolledViewLayout:modifiedLayout
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   366
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   367
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   368
!DataSetView methodsFor:'queries'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   369
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   370
specClass
637
e56ec99923ae VW compatible
ca
parents: 619
diff changeset
   371
    "returns my spec class
e56ec99923ae VW compatible
ca
parents: 619
diff changeset
   372
    "
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   373
    ^ DataSetSpec
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   374
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   375
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   376
!DataSetView class methodsFor:'documentation'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   377
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   378
version
2720
c2781a99aa15 do not ignore sizechange while being invisible
Claus Gittinger <cg@exept.de>
parents: 2500
diff changeset
   379
    ^ '$Header: /cvs/stx/stx/libwidg2/DataSetView.st,v 1.38 2004-06-19 14:42:52 cg Exp $'
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   380
! !