DSVColumnView.st
author Claus Gittinger <cg@exept.de>
Thu, 04 Mar 2004 10:33:47 +0100
changeset 2670 27dacfff1d6d
parent 2637 d563163414b8
child 2695 02d2039ec6a6
permissions -rw-r--r--
autoScroll: let timedBlock push an event which performs the scroll (instead of scrolling from the timedBlock). This lets the scroll operate synchronously and correctly stops when the mouse reenters the view or is released
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2670
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
     1
"{ Encoding: utf8 }"
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
     2
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     3
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     4
 COPYRIGHT (c) 1997 by Claus Gittinger / eXept Software AG
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     5
              All Rights Reserved
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     6
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     7
 This software is furnished under a license and may be used
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     8
 only in accordance with the terms of that license and with the
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     9
 inclusion of the above copyright notice.   This software may not
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    10
 be provided or otherwise made available to, or used by, any
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    11
 other person.  No title to or ownership of the software is
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    12
 hereby transferred.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    13
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    14
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    15
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    16
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    17
1754
4dea21fbacee #buttonMotion:x:y: -- with autoScroll support
ca
parents: 1749
diff changeset
    18
"{ Package: 'stx:libwidg2' }"
4dea21fbacee #buttonMotion:x:y: -- with autoScroll support
ca
parents: 1749
diff changeset
    19
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    20
View subclass:#DSVColumnView
2482
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    21
	instanceVariableNames:'labelView listHolder editValue editView multipleSelectOk useIndex
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    22
		selectedColIndex selectedRowIndex selectRowOnDefault
2592
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
    23
		buttonMotionAction buttonReleaseAction rowHeight minRowHeight
2482
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    24
		columnDescriptors viewOrigin colorMap rowFontAscent lockRowIndex
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    25
		rowIfAbsentBlock columnHolder registererImages list fgColor
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    26
		separatorSize catchChangeEvents beDependentOfRows bgColor
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    27
		actionBlock builder tabIntern doubleClickActionBlock
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    28
		verticalSpacing horizontalSpacing rowSelectorForm
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    29
		buttonLightColor buttonShadowColor buttonHalfLightColor
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    30
		buttonHalfShadowColor checkToggleExtent checkToggleForm
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    31
		checkToggleActiveImage checkTogglePassiveImage checkToggleLevel
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    32
		comboButtonExtent comboButtonForm comboButtonLevel dropTarget
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    33
		dropSource columnAdaptor tabAtEndAction tabAtStartAction
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    34
		modifiedChannel autoScroll autoScrollBlock needFitColumns
2637
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
    35
		scrollWhenUpdating separatorOneDColor selectionForegroundColor
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
    36
		selectionBackgroundColor previousExtent selectConditionBlock'
2482
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    37
	classVariableNames:'DefaultForegroundColor DefaultBackgroundColor
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    38
		DefaultHilightForegroundColor DefaultHilightBackgroundColor
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    39
		ButtonLightColor ButtonShadowColor CheckToggleActiveImage
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    40
		CheckTogglePassiveImage ButtonHalfLightColor
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    41
		ButtonHalfShadowColor ButtonEdgeStyle CheckToggleForm
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    42
		CheckToggleLevel CheckToggleExtent ComboButtonForm
2592
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
    43
		ComboButtonLevel ComboButtonExtent StopRedrawSignal'
2482
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    44
	poolDictionaries:''
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    45
	category:'Views-DataSet'
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    46
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    47
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    48
!DSVColumnView class methodsFor:'documentation'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    49
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    50
copyright
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    51
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    52
 COPYRIGHT (c) 1997 by Claus Gittinger / eXept Software AG
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    53
              All Rights Reserved
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    54
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    55
 This software is furnished under a license and may be used
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    56
 only in accordance with the terms of that license and with the
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    57
 inclusion of the above copyright notice.   This software may not
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    58
 be provided or otherwise made available to, or used by, any
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    59
 other person.  No title to or ownership of the software is
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    60
 hereby transferred.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    61
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    62
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    63
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    64
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    65
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    66
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    67
documentation
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    68
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    69
    implements a scrollable selection view based on rows and columns
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    70
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    71
    [Instance variables:]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    72
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    73
        editValue               <Model>                 current editing model
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    74
        editView                <View>                  current editing component
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
    75
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
    76
        buttonReleaseAction     <Action or nil>         called if the mouse button is released
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
    77
        buttonMotionAction      <Action or nil>         called during mouse motion with one
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
    78
                                                        argument the point under the mouse.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
    79
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
    80
        multipleSelectOk        <Boolean>               multiple selection enabled/disabled
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
    81
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    82
        selectedColIndex        <Integer>               selected column index or 0
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
    83
        selectedRowIndex        <Integer>               selected row    index or 0
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
    84
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    85
        rowHeight               <Integer>               maximum height of any row
2592
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
    86
        minRowHeight            <Integer>               minimum height of all displayed labels
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
    87
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    88
        columnDescriptors       <SequancableCollection> list of column descriptors
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
    89
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
    90
        viewOrigin              <Point>                 current view origin
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
    91
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
    92
        colorMap                <Dictionary>            store and register used colors on device
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
    93
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
    94
        rowFontAscent           <SmallInteger>          inset of a printable text in a row
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
    95
                                                        including separator and font ascent.
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
    96
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
    97
        lockRowIndex            <SmallInteger>          internal used to indicate a row which has
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
    98
                                                        changed its contents but no redraw should be
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
    99
                                                        done( at:put: ).
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   100
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   101
        columnHolder            <ValueHolder>           holder which keeps the list of column descriptors.
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   102
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   103
        registererImages        <IdentityDictionary>    list of images registered on the device
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   104
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   105
        list                    <SequancableCollection> list of rows
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   106
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   107
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   108
        catchChangeEvents       <Boolean>               internal used to discard change notifications
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   109
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   110
        beDependentOfRows       <Boolean>               keep rows dependent; on default is disabled.
567
01083cbb4bae checkin from browser
ca
parents: 563
diff changeset
   111
                                                        in case of enabled a row can raise a change
01083cbb4bae checkin from browser
ca
parents: 563
diff changeset
   112
                                                        notification whithout a parameter which
01083cbb4bae checkin from browser
ca
parents: 563
diff changeset
   113
                                                        will force a redraw of the row or the
01083cbb4bae checkin from browser
ca
parents: 563
diff changeset
   114
                                                        readSelector of the column which will
01083cbb4bae checkin from browser
ca
parents: 563
diff changeset
   115
                                                        redraw the cell in the row only.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   116
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   117
        fgColor                 <Color>                 foreground color
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   118
        bgColor                 <Color>                 background color
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   119
        hgLgFgColor             <Color>                 highlight foreground color (selected)
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   120
        hgLgBgColor             <Color>                 highlight background color (selected)
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   121
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   122
        buttonLightColor        <Color>                 LightColor      ( drawing the edge of a button )
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   123
        buttonShadowColor       <Color>                 ShadowColor     ( drawing the edge of a button )
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   124
        buttonHalfLightColor    <Color>                 HalfLightColor  ( drawing the edge of a button )
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   125
        buttonHalfShadowColor   <Color>                 HalfShadowColor ( drawing the edge of a button )
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   126
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   127
        actionBlock             <a OneArgBlock>         action block performed on select
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   128
        doubleClickActionBlock  <a OneArgBlock>         action block performed on double click
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   129
        rowIfAbsentBlock        <a OneArgBlock>         this block is performed on an emty list entry
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   130
                                                        to retrive the item from the application. The
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   131
                                                        argument to the block is the index into the list.
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   132
                                                        The block should return the row instance which
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   133
                                                        is put to the list under the index.
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   134
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   135
        builder                 <UIBuilder>             builder set by application
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   136
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   137
        verticalSpacing         <SmallInteger>          vertical   row spacing( top  & bottom )
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   138
        horizontalSpacing       <SmallInteger>          horizontal row spacing( left & right )
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   139
        separatorSize           <SmallInteger>          line width of a vertical or horizontal separator
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   140
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   141
        rowSelectorForm         <Form>                  form used by a row selector
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   142
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   143
        checkToggleForm         <Form>                  form used by a checkToggle
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   144
        checkToggleExtent       <Point>                 extent of a checkToggle
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   145
        checkToggleLevel        <SmallInteger>          level used to draw a check toggle
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   146
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   147
        comboButtonForm         <Form>                  form used by a comboList or -Box
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   148
        comboButtonExtent       <Point>                 extent of a comboList or -Box
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   149
        comboButtonLevel        <SmallInteger>          level used to draw a comboList or -Box
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   150
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   151
        dropTarget              <DropTarget>            drag & drop target
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   152
        dropSource              <DropSource>            drag & drop source
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   153
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   154
    [author:]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   155
        Claus Atzkern
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   156
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   157
    [see also:]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   158
        DataSetColumnSpec
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   159
        DataSetColumn
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   160
        DataSetView
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   161
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   162
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   163
647
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
   164
!DSVColumnView class methodsFor:'accessing forms'!
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
   165
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
   166
rowSelector
989
70fd16dd0085 rowSelector changed
tz
parents: 988
diff changeset
   167
    "This resource specification was automatically generated
70fd16dd0085 rowSelector changed
tz
parents: 988
diff changeset
   168
     by the ImageEditor of ST/X."
70fd16dd0085 rowSelector changed
tz
parents: 988
diff changeset
   169
70fd16dd0085 rowSelector changed
tz
parents: 988
diff changeset
   170
    "Do not manually edit this!! If it is corrupted,
70fd16dd0085 rowSelector changed
tz
parents: 988
diff changeset
   171
     the ImageEditor may not be able to read the specification."
70fd16dd0085 rowSelector changed
tz
parents: 988
diff changeset
   172
70fd16dd0085 rowSelector changed
tz
parents: 988
diff changeset
   173
    "
70fd16dd0085 rowSelector changed
tz
parents: 988
diff changeset
   174
     self rowSelector inspect
70fd16dd0085 rowSelector changed
tz
parents: 988
diff changeset
   175
     ImageEditor openOnClass:self andSelector:#rowSelector
70fd16dd0085 rowSelector changed
tz
parents: 988
diff changeset
   176
    "
70fd16dd0085 rowSelector changed
tz
parents: 988
diff changeset
   177
70fd16dd0085 rowSelector changed
tz
parents: 988
diff changeset
   178
    <resource: #image>
70fd16dd0085 rowSelector changed
tz
parents: 988
diff changeset
   179
70fd16dd0085 rowSelector changed
tz
parents: 988
diff changeset
   180
    ^Icon
70fd16dd0085 rowSelector changed
tz
parents: 988
diff changeset
   181
        constantNamed:#'DSVColumnView rowSelector'
1129
3b9e0fd31971 rowSelector icon restyled
tz
parents: 1123
diff changeset
   182
        ifAbsentPut:[(Depth2Image new) width: 11; height: 11; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@A@@@AP@@A4@EW=@G?? O?:@@C(@@B @@B@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 127 127 127 170 170 170]; mask:((Depth1Image new) width: 11; height: 11; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'C@@N@@<@?8C?0O? ?<C? @<@C @L@@@a') ; yourself); yourself]
3b9e0fd31971 rowSelector icon restyled
tz
parents: 1123
diff changeset
   183
3b9e0fd31971 rowSelector icon restyled
tz
parents: 1123
diff changeset
   184
3b9e0fd31971 rowSelector icon restyled
tz
parents: 1123
diff changeset
   185
! !
647
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
   186
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
   187
!DSVColumnView class methodsFor:'defaults'!
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
   188
1844
05a9cb2fc86f default font
martin
parents: 1842
diff changeset
   189
defaultFont
05a9cb2fc86f default font
martin
parents: 1842
diff changeset
   190
    ^ SelectionInListView defaultFont
05a9cb2fc86f default font
martin
parents: 1842
diff changeset
   191
!
05a9cb2fc86f default font
martin
parents: 1842
diff changeset
   192
563
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
   193
horizontalSpacing
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   194
    "returns the default horizontal space between rows
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   195
    "
563
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
   196
    ^ 4
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
   197
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
   198
!
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
   199
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   200
updateStyleCache
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   201
    "extract values from the styleSheet and cache them in class variables
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   202
    "
2146
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
   203
    <resource: #style (#textForegroundColor 
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
   204
                       #'scrollableView.backgroundColor'
582
222fc7c63af0 new resource naming
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   205
                       #'selection.hilightForegroundColor'
222fc7c63af0 new resource naming
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   206
                       #'selection.hilightBackgroundColor'   )>
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   207
1333
011e6414dae5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1326
diff changeset
   208
    DefaultForegroundColor        := StyleSheet colorAt:#'textForegroundColor' default:(Color black).
011e6414dae5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1326
diff changeset
   209
    DefaultBackgroundColor        := StyleSheet colorAt:#'scrollableView.backgroundColor' default:DefaultViewBackgroundColor.
011e6414dae5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1326
diff changeset
   210
011e6414dae5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1326
diff changeset
   211
    DefaultHilightForegroundColor := StyleSheet colorAt:#'selection.hilightForegroundColor' default:DefaultBackgroundColor.
011e6414dae5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1326
diff changeset
   212
    DefaultHilightBackgroundColor := StyleSheet colorAt:#'selection.hilightBackgroundColor' default:DefaultForegroundColor.
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
   213
647
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
   214
    DefaultHilightForegroundColor = DefaultHilightBackgroundColor ifTrue:[
988
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   215
        DefaultHilightBackgroundColor := Color black
647
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
   216
    ].
1333
011e6414dae5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1326
diff changeset
   217
    ButtonLightColor       := StyleSheet colorAt:#'button.lightColor'.
011e6414dae5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1326
diff changeset
   218
    ButtonShadowColor      := StyleSheet colorAt:#'button.shadowColor'.
011e6414dae5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1326
diff changeset
   219
    ButtonHalfLightColor   := StyleSheet colorAt:#'button.halfLightColor'.
011e6414dae5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1326
diff changeset
   220
    ButtonHalfShadowColor  := StyleSheet colorAt:#'button.halfShadowColor'.
011e6414dae5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1326
diff changeset
   221
    ButtonEdgeStyle        := StyleSheet at:#'button.edgeStyle'.
011e6414dae5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1326
diff changeset
   222
    CheckToggleActiveImage := StyleSheet at:#'checkToggle.activeImage'.
1100
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   223
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   224
    CheckToggleActiveImage isNil ifTrue:[
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   225
        CheckTogglePassiveImage := nil
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   226
    ] ifFalse:[
1333
011e6414dae5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1326
diff changeset
   227
        CheckTogglePassiveImage := StyleSheet at:#'checkToggle.passiveImage'.
1100
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   228
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   229
        CheckTogglePassiveImage isNil ifTrue:[
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   230
            CheckToggleActiveImage := nil
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   231
        ]
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   232
    ].
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   233
    ComboButtonForm   := nil.
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   234
    ComboButtonLevel  := nil.
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   235
    ComboButtonExtent := nil.
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   236
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   237
    CheckToggleForm   := nil.
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   238
    CheckToggleLevel  := nil.
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   239
    CheckToggleExtent := nil.
647
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
   240
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   241
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   242
self updateStyleCache.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   243
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   244
582
222fc7c63af0 new resource naming
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   245
    "Modified: / 26.10.1997 / 17:09:07 / cg"
563
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
   246
!
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
   247
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
   248
verticalSpacing
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   249
    "returns the default vertical space between rows
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   250
    "
563
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
   251
    ^ 2
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
   252
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   253
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   254
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   255
!DSVColumnView class methodsFor:'resources'!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   256
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   257
dragIconMulti
988
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   258
    "This resource specification was automatically generated
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   259
     by the ImageEditor of ST/X."
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   260
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   261
    "Do not manually edit this!! If it is corrupted,
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   262
     the ImageEditor may not be able to read the specification."
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   263
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   264
    "
988
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   265
     self dragIconMulti inspect
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   266
     ImageEditor openOnClass:self andSelector:#dragIconMulti
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   267
    "
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   268
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   269
    <resource: #image>
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   270
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   271
    ^Icon
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   272
        constantNamed:#'DSVColumnView dragIconMulti'
1926
9bcb6b59ea37 if never set, the default menuPerformer is
Claus Gittinger <cg@exept.de>
parents: 1844
diff changeset
   273
        ifAbsentPut:[(Depth1Image new) width: 32; height: 32; photometric:(#palette); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@O?<0@C??L@@<@@@@O@@@@C3??L@<??3@OO?<<C3??O@<??0@OO?<@C3???0<???<OO???C3???0<???<OO???@C???0@???<@O???@C???0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 255 255]; mask:((ImageMask new) width: 32; height: 32; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@O??<@C???@@???<@O???@C????@????0O????C????0?????O????3?????????????????????????????????????????????????????@????0O???<C????@????0@@@@@@@@@@@@@@@@@@@@@b') ; yourself); yourself]
9bcb6b59ea37 if never set, the default menuPerformer is
Claus Gittinger <cg@exept.de>
parents: 1844
diff changeset
   274
!
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   275
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   276
dragIconSingle
988
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   277
    "This resource specification was automatically generated
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   278
     by the ImageEditor of ST/X."
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   279
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   280
    "Do not manually edit this!! If it is corrupted,
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   281
     the ImageEditor may not be able to read the specification."
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   282
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   283
    "
988
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   284
     self dragIconSingle inspect
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   285
     ImageEditor openOnClass:self andSelector:#dragIconSingle
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   286
    "
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   287
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   288
    <resource: #image>
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   289
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   290
    ^Icon
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   291
        constantNamed:#'DSVColumnView dragIconSingle'
1926
9bcb6b59ea37 if never set, the default menuPerformer is
Claus Gittinger <cg@exept.de>
parents: 1844
diff changeset
   292
        ifAbsentPut:[(Depth1Image new) width: 32; height: 32; photometric:(#palette); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@O?<0@C??L@@??30@O?<<@C??@@@??0@@O???@C???0@???<@O???@C???0@???<@O???@C???0@???<@O???@C???0@???<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 255 255]; mask:((ImageMask new) width: 32; height: 32; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@O??<@C???@@???<@O???@C???<@????@O???<C????@????0O???<C????@????0O???<C????@????0O???<C????@????0O???<C????@????0O???<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b') ; yourself); yourself]
9bcb6b59ea37 if never set, the default menuPerformer is
Claus Gittinger <cg@exept.de>
parents: 1844
diff changeset
   293
! !
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   294
2592
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
   295
!DSVColumnView class methodsFor:'signal constants'!
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
   296
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
   297
stopRedrawSignal
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
   298
    "returns the signal which is raised during drawing if the
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
   299
     required label height is less than the current rowHeight
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
   300
    "
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
   301
    StopRedrawSignal isNil ifTrue:[
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
   302
        StopRedrawSignal := Notification newSignalMayProceed:true.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
   303
        StopRedrawSignal nameClass:self message:#stopRedrawSignal.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
   304
    ].
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
   305
    ^ StopRedrawSignal
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
   306
! !
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
   307
886
57bd1eddba23 catch empty line in redraw
ca
parents: 874
diff changeset
   308
!DSVColumnView methodsFor:'accessing'!
57bd1eddba23 catch empty line in redraw
ca
parents: 874
diff changeset
   309
1042
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
   310
builder
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   311
    "get the builder (UIBuilder or nil)
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   312
    "
1042
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
   313
    ^ builder
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
   314
!
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
   315
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
   316
builder:aBuilder
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   317
    "set the builder (UIBuilder or nil)
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   318
    "
1042
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
   319
    builder := aBuilder
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
   320
!
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
   321
886
57bd1eddba23 catch empty line in redraw
ca
parents: 874
diff changeset
   322
columnView
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   323
    "returns self
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   324
    "
886
57bd1eddba23 catch empty line in redraw
ca
parents: 874
diff changeset
   325
    ^ self
1067
c66188014600 keep a reference to my dataSetView.
Claus Gittinger <cg@exept.de>
parents: 1042
diff changeset
   326
!
c66188014600 keep a reference to my dataSetView.
Claus Gittinger <cg@exept.de>
parents: 1042
diff changeset
   327
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   328
labelView:aView
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   329
    labelView := aView for:self.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   330
2146
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
   331
    labelView layout:(LayoutFrame
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
   332
                        leftFraction:0 offset:0 
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
   333
                        rightFraction:1 offset:0 
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
   334
                        topFraction:0 offset:0 
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
   335
                        bottomFraction:0 offset:[self preferredLabelViewHeight]).
1067
c66188014600 keep a reference to my dataSetView.
Claus Gittinger <cg@exept.de>
parents: 1042
diff changeset
   336
!
c66188014600 keep a reference to my dataSetView.
Claus Gittinger <cg@exept.de>
parents: 1042
diff changeset
   337
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   338
level:aLevel
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   339
    "change the level and thus the level of the labelView
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   340
    "
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   341
    aLevel ~~ level ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   342
        super level:aLevel.
2146
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
   343
"/        labelView level:aLevel.
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   344
    ]
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   345
!
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   346
1661
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
   347
modifiedChannel
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
   348
    ^ modifiedChannel
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
   349
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
   350
    "Created: / 30.1.2000 / 12:10:57 / cg"
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
   351
!
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
   352
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
   353
modifiedChannel:something
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
   354
    modifiedChannel := something.
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
   355
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
   356
    "Created: / 30.1.2000 / 12:10:57 / cg"
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
   357
!
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
   358
2146
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
   359
preferredLabelViewHeight
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
   360
    ^ labelView preferredHeight + (labelView margin + self verticalSpacing * 2).
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
   361
!
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
   362
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   363
rowFontAscent
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   364
    "returns the inset of a printable text in a row
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   365
    "
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   366
    ^ rowFontAscent
886
57bd1eddba23 catch empty line in redraw
ca
parents: 874
diff changeset
   367
! !
57bd1eddba23 catch empty line in redraw
ca
parents: 874
diff changeset
   368
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1809
diff changeset
   369
!DSVColumnView methodsFor:'accessing-actions'!
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   370
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   371
action:aOneArgAction
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
   372
    "set the action block to be performed on select
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
   373
    "
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   374
    actionBlock := aOneArgAction
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   375
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   376
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   377
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   378
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   379
doubleClickAction:aOneArgAction
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   380
    "set the action block to be performed on doubleclick
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   381
    "
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   382
    doubleClickActionBlock := aOneArgAction
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   383
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   384
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   385
!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   386
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   387
rowIfAbsent:aOneArgAction
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   388
    "set the action block to be performed on each 'nil' entry into the
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   389
     list. The argument to the block is the index into the list. The
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   390
     block returns the row which is put to the list
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   391
    "
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   392
    rowIfAbsentBlock := aOneArgAction
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   393
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   394
1416
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
   395
!
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
   396
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
   397
selectConditionBlock
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
   398
    "get the select-conditionBlock; this block is evaluated before 
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
   399
     any selection change is performed (passing the to-be-changed row number
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
   400
     index as arg).
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
   401
     The change will not be done, if the block returns false. 
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
   402
    "
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
   403
    ^ selectConditionBlock
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
   404
!
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
   405
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
   406
selectConditionBlock:aOneArgBlockOrNil
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
   407
    "set the select-conditionBlock; this block is evaluated before 
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
   408
     any selection change is performed (passing the to-be-changed row number
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
   409
     index as arg).
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
   410
     The change will not be done, if the block returns false. 
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
   411
    "
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
   412
    selectConditionBlock := aOneArgBlockOrNil.
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
   413
!
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
   414
1416
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
   415
tabAtEndAction:aNoneArgAction
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
   416
    "set the action, called without any argument at end of the list entering
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
   417
     tab next.
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
   418
     The default is to give the focus to the view after self in the focusSequence
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
   419
    "
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
   420
    tabAtEndAction := aNoneArgAction
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
   421
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
   422
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
   423
!
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
   424
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
   425
tabAtStartAction:aNoneArgAction
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
   426
    "set the action, called without any argument at start of the list entering
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
   427
     tab previous.
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
   428
     The default is to give the focus to the view before self in the focusSequence
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
   429
    "
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
   430
    tabAtStartAction := aNoneArgAction
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
   431
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
   432
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   433
! !
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   434
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1809
diff changeset
   435
!DSVColumnView methodsFor:'accessing-behavior'!
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   436
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   437
beDependentOfRows
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   438
    "make myself dependent of any row; in this case any change notification
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   439
     raised by a row is catched and the cell identified by the 'readSelector'
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   440
     is redrawn. In case of a nil readSelector, the whole raw is redrawn.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   441
        -> row changed:'what'
1953
9190339e9fad lost dependents in row bug fix (when changing lists contents with #contents:)
Claus Gittinger <cg@exept.de>
parents: 1952
diff changeset
   442
     On default the attribute is set to false (disabled).
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   443
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   444
    ^ beDependentOfRows
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   445
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   446
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   447
beDependentOfRows:aBool
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   448
    "make myself dependent of any row; in this case any change notification
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   449
     raised by a row is catched and the cell identified by the 'readSelector'
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   450
     is redrawn. In case of a nil readSelector, the whole raw is redrawn.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   451
        -> row changed:'what'
1953
9190339e9fad lost dependents in row bug fix (when changing lists contents with #contents:)
Claus Gittinger <cg@exept.de>
parents: 1952
diff changeset
   452
     On default the attribute is set to false (disabled).
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   453
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   454
    aBool ~~ beDependentOfRows ifTrue:[
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   455
        beDependentOfRows := aBool.
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   456
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
   457
        list size ~~ 0 ifTrue:[
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   458
            list do:[:aRow| aRow notNil ifTrue:[
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   459
                beDependentOfRows ifTrue:[aRow addDependent:self]
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   460
                                 ifFalse:[aRow removeDependent:self]
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   461
                ]
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   462
            ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   463
        ]
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   464
    ]
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
   465
!
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
   466
1805
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
   467
enableChannel:aChannel
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
   468
    enableChannel notNil ifTrue:[
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
   469
        enableChannel removeDependent:self
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
   470
    ].
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
   471
    (enableChannel := aChannel) notNil ifTrue:[
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
   472
        enableChannel addDependent:self
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
   473
    ].
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
   474
!
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
   475
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
   476
multipleSelectOk
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
   477
    "allow/disallow multiple row selections; the default is false
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
   478
    "
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
   479
    ^ multipleSelectOk
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
   480
!
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
   481
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
   482
multipleSelectOk:aState
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
   483
    "allow/disallow multiple row selections; the default is false
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
   484
    "
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
   485
    aState == multipleSelectOk ifFalse:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
   486
        multipleSelectOk := aState.
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
   487
        self deselect
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
   488
    ]
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
   489
!
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
   490
1938
079c19d965c8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1934
diff changeset
   491
opaqueColumnResize
079c19d965c8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1934
diff changeset
   492
    ^ labelView opaqueColumnResize
079c19d965c8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1934
diff changeset
   493
!
079c19d965c8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1934
diff changeset
   494
079c19d965c8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1934
diff changeset
   495
opaqueColumnResize:aBoolean
079c19d965c8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1934
diff changeset
   496
    labelView opaqueColumnResize:aBoolean
079c19d965c8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1934
diff changeset
   497
!
079c19d965c8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1934
diff changeset
   498
1946
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   499
scrollWhenUpdating
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   500
    "return the scroll behavior, when I get a new text 
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   501
     (via the model or the #contents/#list)
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   502
     Possible returnValues are:
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   503
        #keep / nil     -> no change
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   504
        #endOfText      -> scroll to the end
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   505
        #beginOfText    -> scroll to the top
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   506
     The default is #beginOfText.
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   507
     This may be useful for fields which get new values assigned from
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   508
     the program (i.e. not from the user)"
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   509
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   510
    ^ scrollWhenUpdating
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   511
!
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   512
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   513
scrollWhenUpdating:aSymbolOrNil
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   514
    "define how to scroll, when I get a new text 
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   515
     (via the model or the #contents/#list)
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   516
     Allowed arguments are:
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   517
        #keep / nil     -> no change
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   518
        #endOfText      -> scroll to the end
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   519
        #beginOfText    -> scroll to the top
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   520
     The default is #beginOfText.
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   521
     This may be useful for fields which get new values assigned from
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   522
     the program (i.e. not from the user)"
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   523
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   524
    scrollWhenUpdating := aSymbolOrNil
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   525
!
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   526
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
   527
selectRowOnDefault
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
   528
    "in case of selecting a none selectable cell, the row is selected
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
   529
    "
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
   530
    ^ selectRowOnDefault
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
   531
!
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
   532
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
   533
selectRowOnDefault:aBool
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
   534
    "in case of selecting a none selectable cell, the row is selected
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
   535
    "
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
   536
    selectRowOnDefault := aBool
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   537
!
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   538
1668
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
   539
tabIntern
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
   540
    "returns true if tabing is supported in the widget
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
   541
    "
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
   542
    ^ tabIntern
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
   543
!
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
   544
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
   545
tabIntern:aBool
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
   546
    "returns true if tabing is supported in the widget
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
   547
    "
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
   548
    tabIntern := aBool ? true
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
   549
!
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
   550
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   551
useIndex
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   552
    "specify, if the selected components value or its index in the
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   553
     list should be sent to the model. The default is its index.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   554
    "
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   555
    ^ useIndex
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   556
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   557
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   558
!
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   559
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   560
useIndex:aBool
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   561
    "specify, if the selected components value or its index in the
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   562
     list should be sent to the model. The default is its index.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   563
    "
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   564
    useIndex := aBool
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   565
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   566
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   567
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1809
diff changeset
   568
!DSVColumnView methodsFor:'accessing-colors'!
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   569
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   570
backgroundColor
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   571
    "get the background color of the rows
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   572
    "
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   573
    ^ bgColor
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   574
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   575
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   576
!
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   577
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   578
backgroundColor:aColor
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   579
    "set the background color of the rows
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   580
    "
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   581
    bgColor ~~ aColor ifTrue:[
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   582
        super viewBackground:bgColor.
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   583
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   584
        self realized ifTrue:[
1480
51dd0cc6ea11 #on: -> #onDevice:
Claus Gittinger <cg@exept.de>
parents: 1461
diff changeset
   585
            bgColor := aColor onDevice:device.
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   586
            self invalidate
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   587
        ] ifFalse:[
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   588
            bgColor := aColor
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   589
        ]
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   590
    ]
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   591
!
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   592
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   593
foregroundColor
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   594
    "return the foreground color of the rows
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   595
    "
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   596
    ^ fgColor
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   597
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   598
!
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   599
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   600
foregroundColor:aColor
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   601
    "set the foreground color of the rows
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   602
    "
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   603
    fgColor ~~ aColor ifTrue:[
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   604
        self realized ifTrue:[
1480
51dd0cc6ea11 #on: -> #onDevice:
Claus Gittinger <cg@exept.de>
parents: 1461
diff changeset
   605
            fgColor := aColor onDevice:device.
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   606
            self invalidate
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   607
        ] ifFalse:[
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   608
            fgColor := aColor
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   609
        ]
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   610
    ]
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   611
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   612
!
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   613
2151
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
   614
selectionBackgroundColor
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   615
    "returns the background color of a selected row
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   616
    "
2151
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
   617
    ^ selectionBackgroundColor
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   618
!
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   619
2151
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
   620
selectionForegroundColor
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   621
    "returns the foreground color of a selected row
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   622
    "
2151
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
   623
    ^ selectionForegroundColor
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   624
!
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   625
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   626
separatorDarkColor
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   627
    "returns the dark color used for drawing a shadowed separator (3D)
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   628
    "
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   629
    ^ shadowColor
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   630
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   631
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   632
!
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   633
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   634
separatorLightColor
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   635
    "returns the light color used for drawing a shadowed separator (3D)
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   636
    "
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   637
    ^ lightColor
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   638
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   639
2637
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   640
!
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   641
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   642
separatorOneDColor
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   643
    "returns the color used for drawing a oneD separator
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   644
    "
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   645
    separatorOneDColor isNil ifTrue:[^ fgColor].
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   646
    ^ separatorOneDColor
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   647
!
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   648
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   649
separatorOneDColor:aColorOrNil
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   650
    "set the color used for drawing a oneD separator; if the color
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   651
     is nil, the current forgroundColor is used
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   652
    "
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   653
    separatorOneDColor = aColorOrNil ifTrue:[^ self].
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   654
    separatorOneDColor := aColorOrNil.
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   655
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   656
    self realized ifTrue:[
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   657
        separatorOneDColor notNil ifTrue:[
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   658
            separatorOneDColor := separatorOneDColor onDevice:device.
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   659
        ].
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   660
        self invalidate.
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   661
    ].
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   662
! !
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   663
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1809
diff changeset
   664
!DSVColumnView methodsFor:'accessing-columns'!
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   665
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   666
columnAt:anIndex
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
   667
    "returns the column at an index
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   668
    "
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
   669
    ^ columnDescriptors at:anIndex ifAbsent:nil
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   670
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   671
886
57bd1eddba23 catch empty line in redraw
ca
parents: 874
diff changeset
   672
columnDescriptors
57bd1eddba23 catch empty line in redraw
ca
parents: 874
diff changeset
   673
    "returns list of column descriptors
57bd1eddba23 catch empty line in redraw
ca
parents: 874
diff changeset
   674
    "
57bd1eddba23 catch empty line in redraw
ca
parents: 874
diff changeset
   675
    ^ columnDescriptors collect:[:aCol| aCol description ]
57bd1eddba23 catch empty line in redraw
ca
parents: 874
diff changeset
   676
!
57bd1eddba23 catch empty line in redraw
ca
parents: 874
diff changeset
   677
57bd1eddba23 catch empty line in redraw
ca
parents: 874
diff changeset
   678
columnDescriptors:aColumnDescriptionList
2154
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   679
    "set the columnDescriptors; scroll to top and deselect
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   680
    "
2154
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   681
    | delta|
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   682
886
57bd1eddba23 catch empty line in redraw
ca
parents: 874
diff changeset
   683
    self deselect.
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   684
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   685
    (viewOrigin x ~~ 0 or:[viewOrigin y ~~ 0]) ifTrue:[
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   686
        delta := viewOrigin negated.
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   687
        viewOrigin := 0@0.
2154
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   688
        self originChanged:delta
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   689
    ].
2154
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   690
    self setColumnDescriptors:aColumnDescriptionList
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   691
!
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   692
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   693
firstColumn
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   694
    "returns the first column
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   695
    "
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   696
    ^ columnDescriptors at:1
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   697
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   698
!
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   699
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   700
lastColumn
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   701
    "returns the last column
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   702
    "
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   703
    ^ columnDescriptors last
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   704
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   705
!
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   706
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   707
setColumnDescriptors:aColumnDescriptionList
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   708
    "set the columnDescriptors; dont deselect and do not scroll to top
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   709
    "
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   710
    |cid|
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   711
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   712
    cid := 0.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   713
    columnDescriptors := aColumnDescriptionList ? #().
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   714
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   715
    columnDescriptors := columnDescriptors collect:[:el||dsc lbl|
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   716
        dsc := el isSequenceable ifTrue:[DataSetColumnSpec new fromLiteralArrayEncoding:el]
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   717
                                ifFalse:[el].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   718
        cid := cid + 1.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   719
        lbl := DataSetLabel new description:dsc builder:builder on:labelView.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   720
        DataSetColumn new on:self description:dsc columnNumber:cid label:lbl
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   721
    ].
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   722
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   723
    preferredExtent := nil.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   724
    labelView columns:columnDescriptors.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   725
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   726
    shown ifTrue:[
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   727
        self fitColumns.
563
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
   728
    ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   729
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   730
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1809
diff changeset
   731
!DSVColumnView methodsFor:'accessing-interactors'!
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   732
1100
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   733
checkToggleActiveImage
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   734
    ^ checkToggleActiveImage
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   735
!
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   736
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   737
checkToggleExtent
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   738
    "returns the extent of a checkToggle
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   739
    "
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   740
    ^ checkToggleExtent
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   741
!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   742
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   743
checkToggleForm
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   744
    "returns the form of a checkToggle
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   745
    "
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   746
    ^ checkToggleForm
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   747
!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   748
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   749
checkToggleLevel
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   750
    "returns the level of a checkToggle button
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   751
    "
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   752
    ^ checkToggleLevel
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   753
!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   754
1100
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   755
checkTogglePassiveImage
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   756
    ^ checkTogglePassiveImage
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   757
!
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   758
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   759
comboButtonExtent
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   760
    "returns the extent of a comboList or -Box
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   761
    "
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   762
    ^ comboButtonExtent
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   763
!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   764
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   765
comboButtonForm
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   766
    "returns the form of a comboList or -Box
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   767
    "
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   768
    ^ comboButtonForm
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   769
!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   770
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   771
comboButtonLevel
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   772
    "returns the level of a comboList or -Box button
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   773
    "
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   774
    ^ comboButtonLevel
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   775
!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   776
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   777
rowSelectorExtent
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   778
    "returns the bitmap of a selected row
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   779
    "
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   780
    ^ rowSelectorForm extent
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   781
!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   782
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   783
rowSelectorForm
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   784
    "returns the bitmap of a selected row
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   785
    "
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   786
    ^ rowSelectorForm
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   787
! !
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   788
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1809
diff changeset
   789
!DSVColumnView methodsFor:'accessing-mvc'!
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   790
1008
7874385db982 changes to support columnAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   791
columnAdaptor
7874385db982 changes to support columnAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   792
    "return the value of the instance variable 'columnAdaptor' (automatically generated)"
7874385db982 changes to support columnAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   793
1711
97e1fd579b89 columnAdapter can now be a valueHolder
ca
parents: 1673
diff changeset
   794
    columnAdaptor isValueModel ifTrue:[^ columnAdaptor value].
97e1fd579b89 columnAdapter can now be a valueHolder
ca
parents: 1673
diff changeset
   795
  ^ columnAdaptor
97e1fd579b89 columnAdapter can now be a valueHolder
ca
parents: 1673
diff changeset
   796
!
1008
7874385db982 changes to support columnAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   797
7874385db982 changes to support columnAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   798
columnAdaptor:something
7874385db982 changes to support columnAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   799
    "set the value of the instance variable 'columnAdaptor' (automatically generated)"
7874385db982 changes to support columnAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   800
1711
97e1fd579b89 columnAdapter can now be a valueHolder
ca
parents: 1673
diff changeset
   801
    columnAdaptor isValueModel ifTrue:[
97e1fd579b89 columnAdapter can now be a valueHolder
ca
parents: 1673
diff changeset
   802
        columnAdaptor removeDependent:self
97e1fd579b89 columnAdapter can now be a valueHolder
ca
parents: 1673
diff changeset
   803
    ].
97e1fd579b89 columnAdapter can now be a valueHolder
ca
parents: 1673
diff changeset
   804
    (columnAdaptor := something) isValueModel ifTrue:[
97e1fd579b89 columnAdapter can now be a valueHolder
ca
parents: 1673
diff changeset
   805
        columnAdaptor addDependent:self
97e1fd579b89 columnAdapter can now be a valueHolder
ca
parents: 1673
diff changeset
   806
    ].
97e1fd579b89 columnAdapter can now be a valueHolder
ca
parents: 1673
diff changeset
   807
!
1008
7874385db982 changes to support columnAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
   808
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   809
columnHolder
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   810
    "get the valueHolder, which keeps the list of column descriptions
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   811
    "
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   812
    ^ columnHolder
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   813
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   814
!
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   815
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   816
columnHolder:aValueHolder
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   817
    "set the valueHolder, which keeps the list of column descriptions
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   818
    "
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   819
    |columns|
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   820
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   821
    columnHolder notNil ifTrue:[
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   822
        columnHolder removeDependent:self
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   823
    ].
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   824
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   825
    (columnHolder := aValueHolder) notNil ifTrue:[
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   826
        columnHolder addDependent:self.
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   827
        columns := columnHolder value.
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   828
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   829
        columns notNil ifTrue:[
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   830
            self columnDescriptors:columns
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   831
        ]
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   832
    ].
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   833
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   834
!
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   835
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   836
listAt:index put:newElement
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   837
    "kludge callback, when an element hs to be replaced
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   838
     due to a col-adaptor returning a new row element
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   839
    "
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   840
    |list|
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   841
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   842
    (list := listHolder value) notNil ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   843
        list at:index put:newElement
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   844
    ]
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   845
!
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   846
2318
41a4297a87af access method for the listHolder
ca
parents: 2276
diff changeset
   847
listHolder
41a4297a87af access method for the listHolder
ca
parents: 2276
diff changeset
   848
    "get the valueHolder which holds the list of rows
41a4297a87af access method for the listHolder
ca
parents: 2276
diff changeset
   849
    "
41a4297a87af access method for the listHolder
ca
parents: 2276
diff changeset
   850
    ^ listHolder
41a4297a87af access method for the listHolder
ca
parents: 2276
diff changeset
   851
!
41a4297a87af access method for the listHolder
ca
parents: 2276
diff changeset
   852
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   853
listHolder:aListHolder
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   854
    "set the valueHolder which holds the list of rows
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   855
    "
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   856
    listHolder ~~ aListHolder ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   857
        listHolder notNil ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   858
            listHolder removeDependent:self
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   859
        ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   860
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   861
        (listHolder := aListHolder) notNil ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   862
            listHolder addDependent:self
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   863
        ]
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   864
    ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   865
    self pushEvent:#list: with:(listHolder value).
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   866
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   867
!
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   868
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   869
model:aModel
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   870
    "set the valueHolder which holds the selection and maybe the list of rows
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   871
    "
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   872
    model notNil ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   873
        model removeDependent:self.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   874
        (model respondsTo:#list) ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   875
            (model list == listHolder) ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   876
                self listHolder:nil
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   877
            ]
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   878
        ]
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   879
    ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   880
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   881
    (model := aModel) notNil ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   882
        model addDependent:self.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   883
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   884
        (aModel respondsTo:#list) ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   885
            self listHolder:model list
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   886
        ]
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   887
    ]
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   888
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   889
! !
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   890
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1809
diff changeset
   891
!DSVColumnView methodsFor:'accessing-rows'!
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   892
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   893
at:aRowNr
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   894
    "return the row at an index, aRowNr
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   895
    "
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   896
    |row|
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   897
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   898
    (row := list at:aRowNr) isNil ifTrue:[
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   899
        lockRowIndex := aRowNr.
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   900
1034
bd02c4cd7582 care for nonexisting rowIfAbsentBlock when a nil-row is encountered.
Claus Gittinger <cg@exept.de>
parents: 1023
diff changeset
   901
        (rowIfAbsentBlock notNil
bd02c4cd7582 care for nonexisting rowIfAbsentBlock when a nil-row is encountered.
Claus Gittinger <cg@exept.de>
parents: 1023
diff changeset
   902
        and:[(row := rowIfAbsentBlock value:aRowNr) notNil]) ifTrue:[
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   903
            list at:aRowNr put:row.
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   904
            beDependentOfRows ifTrue:[row addDependent:self].
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   905
        ].
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   906
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   907
        lockRowIndex := 0
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   908
    ].
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   909
    ^ row
1034
bd02c4cd7582 care for nonexisting rowIfAbsentBlock when a nil-row is encountered.
Claus Gittinger <cg@exept.de>
parents: 1023
diff changeset
   910
bd02c4cd7582 care for nonexisting rowIfAbsentBlock when a nil-row is encountered.
Claus Gittinger <cg@exept.de>
parents: 1023
diff changeset
   911
    "Modified: / 31.7.1998 / 01:07:46 / cg"
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   912
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   913
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   914
at:aRowNr ifAbsent:exceptionBlock
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
   915
    "return the row at a aRowNr. If the index is invalid, return the
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   916
     result of evaluating the exceptionblock
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   917
    "
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
   918
    (aRowNr between:1 and:list size) ifTrue:[
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   919
        ^ self at:aRowNr
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   920
    ].
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   921
    ^ exceptionBlock value
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   922
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   923
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   924
at:aRowNr put:aRow
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   925
    "change the row at an index. The added row is returned
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   926
    "
1956
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
   927
    lockRowIndex ~~ aRowNr ifTrue:[
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
   928
        (aRowNr <= list size and:[(list at:aRowNr) == aRow]) ifTrue:[
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
   929
            self invalidateRowAt:aRowNr
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
   930
        ] ifFalse:[
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
   931
            self replaceFrom:aRowNr to:aRowNr with:(Array with:aRow) startingAt:1.
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   932
        ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   933
    ].
1956
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
   934
  ^ aRow
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   935
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   936
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   937
first
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   938
    "return the first row
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   939
    "
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   940
    ^ self at:1
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   941
!
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   942
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   943
identityIndexOfRow:aRow
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   944
    "returns index of a row or 0
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   945
    "
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   946
    (list size ~~ 0 and:[aRow notNil]) ifTrue:[
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   947
        ^ list identityIndexOf:aRow
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   948
    ].
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   949
    ^ 0
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   950
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   951
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   952
last
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   953
    "return the last row
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   954
    "
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
   955
    ^ self at:(list size)
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   956
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   957
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   958
list
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   959
    "get the list of rows
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   960
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   961
    ^ list
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   962
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   963
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   964
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   965
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   966
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   967
list:aList
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   968
    "set the list of rows
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   969
    "
1259
be271bf31e4b raise selectionChanged notification in case that
tm
parents: 1258
diff changeset
   970
    |makeDependent selectionHasChanged|
656
96a9b94e5472 bugfix:
ca
parents: 649
diff changeset
   971
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   972
    "/ remove selection without redraw
622
2588f809445d update:with:from:
ca
parents: 618
diff changeset
   973
1259
be271bf31e4b raise selectionChanged notification in case that
tm
parents: 1258
diff changeset
   974
    selectionHasChanged := self hasSelection.
be271bf31e4b raise selectionChanged notification in case that
tm
parents: 1258
diff changeset
   975
622
2588f809445d update:with:from:
ca
parents: 618
diff changeset
   976
    editValue notNil ifTrue:[
2588f809445d update:with:from:
ca
parents: 618
diff changeset
   977
        editValue removeDependent:self.
2588f809445d update:with:from:
ca
parents: 618
diff changeset
   978
        editValue := nil
2588f809445d update:with:from:
ca
parents: 618
diff changeset
   979
    ].
1111
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
   980
    self destroyEditView.
622
2588f809445d update:with:from:
ca
parents: 618
diff changeset
   981
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   982
    selectedColIndex := 0.
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   983
    selectedRowIndex := multipleSelectOk ifTrue:[nil] ifFalse:[0].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   984
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   985
    shown ifFalse:[
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   986
        preferredExtent := nil
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   987
    ] ifTrue:[
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   988
        aList size ~~ 0 ifTrue:[  "/ otherwise keep old values
2524
a41c43dba6c9 care for nil colDescr.
Claus Gittinger <cg@exept.de>
parents: 2523
diff changeset
   989
            columnDescriptors notNil ifTrue:[
a41c43dba6c9 care for nil colDescr.
Claus Gittinger <cg@exept.de>
parents: 2523
diff changeset
   990
                columnDescriptors do:[:aCol| aCol invalidate ].
a41c43dba6c9 care for nil colDescr.
Claus Gittinger <cg@exept.de>
parents: 2523
diff changeset
   991
            ].
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   992
            preferredExtent := nil.
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   993
        ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   994
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   995
656
96a9b94e5472 bugfix:
ca
parents: 649
diff changeset
   996
    (makeDependent := beDependentOfRows) ifTrue:[
96a9b94e5472 bugfix:
ca
parents: 649
diff changeset
   997
        self beDependentOfRows:false.
96a9b94e5472 bugfix:
ca
parents: 649
diff changeset
   998
    ].
643
bfd44867347f adding: bug fix
ca
parents: 642
diff changeset
   999
bfd44867347f adding: bug fix
ca
parents: 642
diff changeset
  1000
    aList size ~~ 0 ifTrue:[
bfd44867347f adding: bug fix
ca
parents: 642
diff changeset
  1001
        list := OrderedCollection new:(aList size).
645
53c78cc2ee08 redraw twice in case of expose event during adding a new entry
ca
parents: 643
diff changeset
  1002
        aList do:[:el| list add:el ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1003
    ] ifFalse:[
1948
9ed8131d94bb viewOrigin fix (when list is set to nil while not shown);
Claus Gittinger <cg@exept.de>
parents: 1947
diff changeset
  1004
        list := nil.
9ed8131d94bb viewOrigin fix (when list is set to nil while not shown);
Claus Gittinger <cg@exept.de>
parents: 1947
diff changeset
  1005
        viewOrigin := 0 @ 0.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1006
    ].
656
96a9b94e5472 bugfix:
ca
parents: 649
diff changeset
  1007
    self beDependentOfRows:makeDependent.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1008
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  1009
    shown ifTrue:[
1484
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
  1010
        self fitColumns
1949
0d9451776275 delayed fitColumns if not shown while list is changed.
ps
parents: 1948
diff changeset
  1011
    ] ifFalse:[
0d9451776275 delayed fitColumns if not shown while list is changed.
ps
parents: 1948
diff changeset
  1012
        needFitColumns := true
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1013
    ].
1259
be271bf31e4b raise selectionChanged notification in case that
tm
parents: 1258
diff changeset
  1014
    selectionHasChanged ifTrue:[
be271bf31e4b raise selectionChanged notification in case that
tm
parents: 1258
diff changeset
  1015
        self selectionChanged.
be271bf31e4b raise selectionChanged notification in case that
tm
parents: 1258
diff changeset
  1016
    ].
2044
8e36106065f0 fixed: click on a checkToggle (buttonPress event)
Claus Gittinger <cg@exept.de>
parents: 2032
diff changeset
  1017
    self contentsChanged.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1018
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1019
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1809
diff changeset
  1020
!DSVColumnView methodsFor:'accessing-visibility'!
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1021
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1022
font:aFont
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1023
    "set the font for all shown rows.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1024
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1025
    (aFont notNil and:[aFont ~~ font]) ifTrue:[
1480
51dd0cc6ea11 #on: -> #onDevice:
Claus Gittinger <cg@exept.de>
parents: 1461
diff changeset
  1026
        super font:(aFont onDevice:device).
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1027
        realized ifTrue:[
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1028
            columnDescriptors do:[:aCol| aCol invalidate ].
1149
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  1029
            self preferredExtentChanged.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1030
            self invalidate.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1031
            self contentsChanged
1842
402a364ee001 delegate font to labelView
martin
parents: 1818
diff changeset
  1032
        ].
402a364ee001 delegate font to labelView
martin
parents: 1818
diff changeset
  1033
        labelView notNil ifTrue:[
402a364ee001 delegate font to labelView
martin
parents: 1818
diff changeset
  1034
            labelView font:font
402a364ee001 delegate font to labelView
martin
parents: 1818
diff changeset
  1035
        ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1036
    ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1037
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1038
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  1039
has3Dseparators
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  1040
    "returns true if shown in 3D mode
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  1041
    "
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  1042
    ^ separatorSize ~~ 1
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1043
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1044
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  1045
has3Dseparators:aBool
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  1046
    "enable or disable 3D mode
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  1047
    "
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  1048
    |newSepSize|
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1049
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1050
    newSepSize := aBool ifTrue:[2] ifFalse:[1].
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  1051
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  1052
    newSepSize ~~ separatorSize ifTrue:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  1053
        separatorSize := newSepSize.
1149
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  1054
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  1055
        realized ifTrue:[
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1056
            columnDescriptors do:[:aCol| aCol invalidate ].
1136
4a9d9db81422 set bg/fg color when drawing an interactor
ca
parents: 1134
diff changeset
  1057
            self preferredExtentChanged.
1149
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  1058
            self invalidate.
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  1059
            self contentsChanged
647
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  1060
        ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1061
    ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1062
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1063
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1064
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1065
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1066
horizontalSpacing
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1067
    "horizontal spacing used by columns
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1068
    "
563
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1069
    ^ horizontalSpacing
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1070
!
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1071
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1072
horizontalSpacing:aNumber
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1073
    "horizontal spacing used by columns
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1074
    "
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1075
    horizontalSpacing ~~ aNumber ifTrue:[
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1076
        horizontalSpacing := aNumber.
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1077
        self preferredExtentChanged.
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1078
    ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1079
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1080
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1081
showLabels
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1082
    "control the labels view to be visible or unvisible
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1083
    "
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1084
    ^ labelView isVisible
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1085
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1086
!
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1087
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1088
showLabels:aState
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1089
    "control the labels view to be visible or unvisible
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1090
    "
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1091
    labelView isVisible:aState
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1092
!
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1093
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1094
verticalSpacing
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1095
    "vertical spacing used by columns
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1096
    "
563
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1097
    ^ verticalSpacing
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1098
!
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1099
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1100
verticalSpacing:aNumber
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1101
    "vertical spacing used by columns
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1102
    "
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1103
    verticalSpacing ~~ aNumber ifTrue:[
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1104
        verticalSpacing := aNumber.
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1105
        self preferredExtentChanged.
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1106
    ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1107
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1108
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1109
!DSVColumnView methodsFor:'adding & removing rows'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1110
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1111
add:aRow
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1112
    "insert row at end
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1113
    "
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1114
    ^ self add:aRow beforeIndex:(1 + list size)
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1115
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1116
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1117
add:aRow afterIndex:aRowNr
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1118
    "add a new row after slot aRowNr and redisplay; returns nil in case
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1119
     of an invalid index or the row
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1120
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1121
    ^ self add:aRow beforeIndex:(aRowNr + 1)
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1122
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1123
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1124
add:aRow beforeIndex:aRowNr
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1125
    "add a new row before slot aRowNr and redisplay; returns nil in case
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1126
     of an invalid index or the row
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1127
    "
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1128
    self addAll:(Array with:aRow) beforeIndex:aRowNr.
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1129
    ^ aRow.
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1130
!
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1131
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1132
addAll:aList beforeIndex:start
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1133
    "add a collection of rows before slot start and redisplay
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1134
    "
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1135
    |y0 y1 yD h dH size noSel|
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1136
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1137
    (size := aList size) == 0 ifTrue:[
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1138
        ^ self
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1139
    ].
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1140
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1141
    list size == 0 ifTrue:[
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1142
        ^ self list:aList
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1143
    ].
643
bfd44867347f adding: bug fix
ca
parents: 642
diff changeset
  1144
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1145
    beDependentOfRows ifTrue:[
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1146
        aList do:[:aRow| aRow notNil ifTrue:[aRow addDependent:self]]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1147
    ].
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1148
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1149
    noSel := self numberOfSelections.
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1150
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1151
    noSel ~~ 0 ifTrue:[
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1152
        multipleSelectOk ifFalse:[
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1153
            selectedRowIndex >= start ifTrue:[
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1154
                selectedRowIndex := selectedRowIndex + size
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1155
            ]
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1156
        ] ifTrue:[
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1157
            1 to:noSel do:[:i||v|
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1158
                (v := selectedRowIndex at:i) >= start ifTrue:[
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1159
                    selectedRowIndex at:i put:(v + size)
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  1160
                ]
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  1161
            ]
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  1162
        ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1163
    ].
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1164
    list addAll:aList beforeIndex:start.
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1165
    self recomputeHeightOfContents.
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1166
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1167
    y0 := (start - 1) * rowHeight.
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1168
    yD := size * rowHeight.
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1169
    y1 := y0 + yD.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1170
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1171
    y0 < viewOrigin y ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1172
        self originWillChange.
1948
9ed8131d94bb viewOrigin fix (when list is set to nil while not shown);
Claus Gittinger <cg@exept.de>
parents: 1947
diff changeset
  1173
        viewOrigin := viewOrigin x @ (yD + viewOrigin y).
9ed8131d94bb viewOrigin fix (when list is set to nil while not shown);
Claus Gittinger <cg@exept.de>
parents: 1947
diff changeset
  1174
        "/ viewOrigin y:(yD + viewOrigin y).
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1175
        self originChanged:(0 @ yD).
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1176
    ].
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1177
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1178
    (shown not or:[self sensor hasDamageFor:self]) ifTrue:[
2044
8e36106065f0 fixed: click on a checkToggle (buttonPress event)
Claus Gittinger <cg@exept.de>
parents: 2032
diff changeset
  1179
        self invalidate.
8e36106065f0 fixed: click on a checkToggle (buttonPress event)
Claus Gittinger <cg@exept.de>
parents: 2032
diff changeset
  1180
        self contentsChanged.
8e36106065f0 fixed: click on a checkToggle (buttonPress event)
Claus Gittinger <cg@exept.de>
parents: 2032
diff changeset
  1181
        ^ self
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1182
    ].
645
53c78cc2ee08 redraw twice in case of expose event during adding a new entry
ca
parents: 643
diff changeset
  1183
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1184
    y0 := self yVisibleOfRowNr:start.
1258
d41cbd2c3dc8 addAll:...
tm
parents: 1227
diff changeset
  1185
    h  := height - margin.
d41cbd2c3dc8 addAll:...
tm
parents: 1227
diff changeset
  1186
    y1 := y0 + yD min:h.
d41cbd2c3dc8 addAll:...
tm
parents: 1227
diff changeset
  1187
d41cbd2c3dc8 addAll:...
tm
parents: 1227
diff changeset
  1188
    (y1 > margin and:[y0 < h]) ifTrue:[
1952
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1189
        "/ cg: if I have a non-solid background color,
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1190
        "/ or individual items have a bgColor selector,
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1191
        "/ invalidate the area (and readraw) instead of a scroll.
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1192
        (viewBackground isImageOrForm 
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1193
        or:[ self anyColumnHasPotentialNonConstantBackground ])
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1194
        ifTrue:[
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1195
            "/ do not scroll but invalidate ...
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1196
            self invalidateX:margin y:y0 width:width - margin - margin height:(height - y0).
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1197
        ] ifFalse:[
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1198
            h  := h - y1.
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1199
            y0 := y0 max:margin.
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1200
            dH := y1 - y0.
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1201
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1202
            start == list size ifFalse:[
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1203
                self copyFrom:self x:0 y:y0 toX:0 y:y1 width:width height:h async:false
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1204
            ].
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1205
            self invalidateX:margin y:y0 width:width - margin - margin height:dH.
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1206
        ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1207
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1208
    self contentsChanged.
567
01083cbb4bae checkin from browser
ca
parents: 563
diff changeset
  1209
!
01083cbb4bae checkin from browser
ca
parents: 563
diff changeset
  1210
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1211
addFirst:aRow
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1212
    "insert a row at start
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1213
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1214
    ^ self add:aRow beforeIndex:1
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1215
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1216
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1217
remove:aRow
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1218
    "remove a row
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1219
    "
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1220
    |idx|
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1221
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1222
    idx := list identityIndexOf:aRow.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1223
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1224
    idx ~~ 0 ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1225
        self removeFrom:idx to:idx.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1226
    ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1227
    ^ aRow
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1228
!
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1229
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1230
removeFirst
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1231
    "remove first row; returns the removed row
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1232
    "
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1233
    ^ self removeIndex:1
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1234
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1235
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1236
removeFrom:startIndex to:stopIndex
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1237
    "remove rows from start to stop
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1238
    "
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1239
    |coll noRedraw
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1240
     noSel "{ Class: SmallInteger }"
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1241
     size  "{ Class: SmallInteger }"
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1242
     start "{ Class: SmallInteger }"
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1243
     stop  "{ Class: SmallInteger }"
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1244
     y0    "{ Class: SmallInteger }"
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1245
     y1    "{ Class: SmallInteger }"
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1246
     oY    "{ Class: SmallInteger }"
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1247
     dY    "{ Class: SmallInteger }"
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1248
     yB    "{ Class: SmallInteger }"
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1249
     h     "{ Class: SmallInteger }"
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1250
    |
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1251
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1252
    (    (start := startIndex) < 1
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1253
     or:[(stop := stopIndex) > list size]
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1254
    ) ifTrue:[
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1255
        ^ self subscriptBoundsError:start
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1256
    ].
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1257
    size := stop - start + 1.
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1258
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1259
    beDependentOfRows ifTrue:[
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1260
        list from:start to:stop do:[:r| r notNil ifTrue:[r removeDependent:self]].
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1261
    ].
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1262
    noSel := self numberOfSelections.
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1263
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1264
    noSel ~~ 0 ifTrue:[
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1265
        noSel == 1 ifTrue:[
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1266
            noSel := self firstIndexSelected.
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1267
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1268
            noSel < start ifFalse:[
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1269
                noSel > stop ifTrue:[
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1270
                    noSel := noSel - size.
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1271
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1272
                    multipleSelectOk ifFalse:[selectedRowIndex := noSel]
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1273
                                      ifTrue:[selectedRowIndex at:1 put:noSel]
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1274
                ] ifFalse:[
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1275
                    editValue notNil ifTrue:[
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1276
                        editValue removeDependent:self.
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1277
                        editValue := nil.
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1278
                    ].
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1279
                    self deselect.
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1280
                ]
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  1281
            ]
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  1282
        ] ifFalse:[
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1283
            coll := OrderedCollection new:noSel.
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1284
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1285
            selectedRowIndex do:[:i|
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1286
                i < start ifTrue:[
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1287
                    coll add:i
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1288
                ] ifFalse:[
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1289
                    i > stop ifTrue:[
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1290
                        coll add:(i - size)
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1291
                    ]
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1292
                ]
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1293
            ].
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1294
            coll size == 0 ifTrue:[
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1295
                self deselect
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1296
            ] ifFalse:[
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1297
                selectedRowIndex := coll
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1298
            ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1299
        ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1300
    ].
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1301
    list removeFrom:start to:stop.
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1302
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1303
    y0 := start - 1 * rowHeight.
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1304
    dY := size * rowHeight.
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1305
    y1 := dY + y0.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1306
    yB := y1 + margin - viewOrigin y.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1307
    self recomputeHeightOfContents.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1308
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1309
    y0 < (oY := viewOrigin y) ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1310
        (noRedraw := y1 <= oY) ifFalse:[dY := y0 - oY]
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1311
                                ifTrue:[dY := dY negated].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1312
        self originWillChange.
1948
9ed8131d94bb viewOrigin fix (when list is set to nil while not shown);
Claus Gittinger <cg@exept.de>
parents: 1947
diff changeset
  1313
        viewOrigin := viewOrigin x @ (dY + oY).
9ed8131d94bb viewOrigin fix (when list is set to nil while not shown);
Claus Gittinger <cg@exept.de>
parents: 1947
diff changeset
  1314
        "/ viewOrigin y:(dY + oY).
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1315
        self originChanged:(0 @ dY).        
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1316
    ] ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1317
        noRedraw := y0 > (height + viewOrigin y)
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1318
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1319
1483
c9fd1b1d775d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1480
diff changeset
  1320
    (shown not or:[self sensor hasDamageFor:self]) ifTrue:[
c9fd1b1d775d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1480
diff changeset
  1321
          self invalidate.
c9fd1b1d775d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1480
diff changeset
  1322
        ^ self contentsChanged.
c9fd1b1d775d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1480
diff changeset
  1323
    ].
c9fd1b1d775d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1480
diff changeset
  1324
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1325
    (noRedraw or:[shown not]) ifFalse:[
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1326
        y0 := self yVisibleOfRowNr:start.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1327
        y0 := y0 max:margin.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1328
1951
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  1329
        "/ cg: if I have a non-solid background color,
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  1330
        "/ or individual items have a bgColor selector,
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  1331
        "/ invalidate the area (and readraw) instead of a scroll.
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  1332
        (viewBackground isImageOrForm 
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  1333
        or:[ self anyColumnHasPotentialNonConstantBackground ])
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  1334
        ifTrue:[
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  1335
            "/ do not scroll but invalidate ...
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  1336
        ] ifFalse:[
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  1337
            y1 := yB.
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  1338
            h  := height - margin - yB.
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  1339
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  1340
            h > 0 ifTrue:[
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  1341
                self copyFrom:self x:0 y:yB toX:0 y:y0 width:width height:h async:false
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  1342
            ].
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  1343
            y0 := y0 + h.
561
43b62e424d52 check height is positive before copy
ca
parents: 556
diff changeset
  1344
        ].
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  1345
        self invalidateX:margin y:y0 width:width - margin - margin height:(height - y0).
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1346
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1347
    self contentsChanged.
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1348
!
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1349
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1350
removeIndex:aRowNr
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1351
    "remove row at an index; returns the removed row
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1352
    "
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1353
    |row|
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1354
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1355
    row := list at:aRowNr ifAbsent:nil.
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1356
    self removeFrom:aRowNr to:aRowNr.
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1357
  ^ row
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1358
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1359
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1360
removeLast
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1361
    "remove last row; the row is returned
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1362
    "
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1363
    ^ self removeIndex:(list size)
1956
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1364
!
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1365
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1366
replaceFrom:start to:stop with:aCollection startingAt:repStart
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1367
    "replace elements in the receiver between index start and stop,
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1368
     with elements  taken from replacementCollection starting at repStart.
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1369
     Return the receiver.
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1370
    "
2032
6eb610caad85 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2031
diff changeset
  1371
    |inSelList listSize repStop run|
1956
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1372
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1373
    inSelList := OrderedCollection new.
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1374
    listSize  := list size.
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1375
    repStop   := repStart + (stop - start).
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1376
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1377
    list isNil ifTrue:[
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1378
        list := OrderedCollection new
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1379
    ].
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1380
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1381
    [listSize < stop] whileTrue:[ list add:nil. listSize := listSize + 1 ].
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1382
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1383
    start to:stop do:[:i| |aRow|
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1384
        aRow := list at:i ifAbsent:nil.
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1385
    
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1386
        aRow notNil ifTrue:[
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1387
            beDependentOfRows ifTrue:[aRow removeDependent:self].
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1388
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1389
            (self isInSelection:i) ifTrue:[
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1390
                inSelList add:i
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1391
            ].
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1392
            list at:i put:nil.
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1393
        ]
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1394
    ].
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1395
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1396
    beDependentOfRows ifTrue:[
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1397
        aCollection from:repStart to:repStop do:[:aRow|
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1398
            aRow notNil ifTrue:[aRow addDependent:self]
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1399
        ]
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1400
    ].
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1401
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1402
    run := start.
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1403
    aCollection from:repStart to:repStop do:[:aRow|
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1404
        list at:run put:aRow.
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1405
        run := run + 1.
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1406
    ].
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1407
    self invalidateRowsFrom:start to:stop.
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1408
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1409
    inSelList size ~~ 0 ifTrue:[
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1410
        self numberOfSelections == inSelList size ifTrue:[
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1411
            self deselect
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1412
        ] ifFalse:[
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1413
            selectedRowIndex := selectedRowIndex select:[:i| (inSelList identityIndexOf:i) == 0 ].
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1414
            self selectionChanged.
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1415
        ]
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1416
    ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1417
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1418
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1419
!DSVColumnView methodsFor:'change & update'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1420
1492
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
  1421
changeWidthOfColumn:aColumn deltaX:aDeltaX
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
  1422
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
  1423
    aColumn setDescWidth:(aColumn width + aDeltaX).
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
  1424
    preferredExtent notNil ifTrue:[self fitColumns]
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
  1425
!
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
  1426
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1427
update:what with:aPara from:chgObj
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1428
    "one of my rows/cells changed its value
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1429
    "
1953
9190339e9fad lost dependents in row bug fix (when changing lists contents with #contents:)
Claus Gittinger <cg@exept.de>
parents: 1952
diff changeset
  1430
    |row newValue realValue listHoldersList arg1 arg2 col idx|
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1431
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1432
    chgObj == columnHolder ifTrue:[
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  1433
        ^ self columnDescriptors:(columnHolder value)
622
2588f809445d update:with:from:
ca
parents: 618
diff changeset
  1434
    ].
1711
97e1fd579b89 columnAdapter can now be a valueHolder
ca
parents: 1673
diff changeset
  1435
97e1fd579b89 columnAdapter can now be a valueHolder
ca
parents: 1673
diff changeset
  1436
    chgObj == columnAdaptor ifTrue:[
97e1fd579b89 columnAdapter can now be a valueHolder
ca
parents: 1673
diff changeset
  1437
        col := columnAdaptor value.
97e1fd579b89 columnAdapter can now be a valueHolder
ca
parents: 1673
diff changeset
  1438
        columnDescriptors do:[:aCol| aCol columnAdaptor:col].
97e1fd579b89 columnAdapter can now be a valueHolder
ca
parents: 1673
diff changeset
  1439
      ^ self invalidate
97e1fd579b89 columnAdapter can now be a valueHolder
ca
parents: 1673
diff changeset
  1440
    ].
97e1fd579b89 columnAdapter can now be a valueHolder
ca
parents: 1673
diff changeset
  1441
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1442
    chgObj == editValue ifTrue:[
1227
2dd18061afc5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1223
diff changeset
  1443
        newValue := editValue value.
1673
67898506ba03 bug fix in update:with:from: model can changed during setting
ca
parents: 1668
diff changeset
  1444
        col := self selectedColumn.
67898506ba03 bug fix in update:with:from: model can changed during setting
ca
parents: 1668
diff changeset
  1445
        idx := self firstIndexSelected.
67898506ba03 bug fix in update:with:from: model can changed during setting
ca
parents: 1668
diff changeset
  1446
67898506ba03 bug fix in update:with:from: model can changed during setting
ca
parents: 1668
diff changeset
  1447
        col at:idx put:newValue.
67898506ba03 bug fix in update:with:from: model can changed during setting
ca
parents: 1668
diff changeset
  1448
        realValue := col at:idx.
67898506ba03 bug fix in update:with:from: model can changed during setting
ca
parents: 1668
diff changeset
  1449
67898506ba03 bug fix in update:with:from: model can changed during setting
ca
parents: 1668
diff changeset
  1450
        "/ !!!! editValue could be changed before set !!!! therefore: chgObj == editValue
67898506ba03 bug fix in update:with:from: model can changed during setting
ca
parents: 1668
diff changeset
  1451
67898506ba03 bug fix in update:with:from: model can changed during setting
ca
parents: 1668
diff changeset
  1452
        (chgObj == editValue and:[realValue ~= newValue]) ifTrue:[
1227
2dd18061afc5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1223
diff changeset
  1453
            "/ some validation by the row-object; the stored value
2dd18061afc5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1223
diff changeset
  1454
            "/ is different from what I think.
2dd18061afc5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1223
diff changeset
  1455
            "/ update my input fields modelValue
2dd18061afc5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1223
diff changeset
  1456
            editValue value:realValue.
2dd18061afc5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1223
diff changeset
  1457
        ].
1673
67898506ba03 bug fix in update:with:from: model can changed during setting
ca
parents: 1668
diff changeset
  1458
1661
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
  1459
        modifiedChannel notNil ifTrue:[
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
  1460
            modifiedChannel value:true.
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
  1461
        ].
1227
2dd18061afc5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1223
diff changeset
  1462
        ^ self
622
2588f809445d update:with:from:
ca
parents: 618
diff changeset
  1463
    ].
2588f809445d update:with:from:
ca
parents: 618
diff changeset
  1464
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1465
    chgObj == model ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1466
        (what == #selectionIndex or:[what == #selection]) ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1467
            ^ self selectRowIndex:(model selectionIndex copy)
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1468
        ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1469
        what == #list ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1470
            ^ self listHolder:model list
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1471
        ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1472
        what == #value ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1473
            model == listHolder ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1474
                self list:(listHolder value)
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1475
            ] ifFalse:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1476
                self selectRowIndex:model value
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1477
            ]
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1478
        ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1479
        ^ self
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1480
    ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1481
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1482
    chgObj == listHolder ifTrue:[
1953
9190339e9fad lost dependents in row bug fix (when changing lists contents with #contents:)
Claus Gittinger <cg@exept.de>
parents: 1952
diff changeset
  1483
        listHoldersList := listHolder value.
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1484
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1485
        what == #value ifTrue:[
1953
9190339e9fad lost dependents in row bug fix (when changing lists contents with #contents:)
Claus Gittinger <cg@exept.de>
parents: 1952
diff changeset
  1486
            ^ self list:listHoldersList
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1487
        ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1488
        aPara isCollection ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1489
            arg1 := aPara at:1.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1490
            arg2 := aPara at:2.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1491
        ] ifFalse:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1492
            arg1 := arg2 := aPara
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1493
        ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1494
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1495
        what == #at: ifTrue:[
1953
9190339e9fad lost dependents in row bug fix (when changing lists contents with #contents:)
Claus Gittinger <cg@exept.de>
parents: 1952
diff changeset
  1496
            ^ self at:arg1 put:(listHoldersList at:arg1)
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1497
        ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1498
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1499
        what == #insert: ifTrue:[
1953
9190339e9fad lost dependents in row bug fix (when changing lists contents with #contents:)
Claus Gittinger <cg@exept.de>
parents: 1952
diff changeset
  1500
            ^ self add:(listHoldersList at:arg1) beforeIndex:arg1
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1501
        ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1502
        
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1503
        what == #remove: ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1504
            ^ self removeFrom:arg1 to:arg1
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1505
        ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1506
        what == #removeFrom: ifTrue:[
1954
Claus Gittinger <cg@exept.de>
parents: 1953
diff changeset
  1507
            listHoldersList size == 0 ifTrue:[self list:nil]
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1508
                          ifFalse:[self removeFrom:arg1 to:arg2].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1509
            ^ self
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1510
        ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1511
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1512
        what == #insertCollection: ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1513
            arg2 ~~ 0 ifTrue:[
1953
9190339e9fad lost dependents in row bug fix (when changing lists contents with #contents:)
Claus Gittinger <cg@exept.de>
parents: 1952
diff changeset
  1514
                self addAll:(listHoldersList copyFrom:arg1 to:(arg1 + arg2 - 1)) beforeIndex:arg1
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1515
            ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1516
            ^ self.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1517
        ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1518
        what == #replace: ifTrue:[
1956
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1519
            self replaceFrom:arg1 to:arg2 with:listHoldersList startingAt:arg1.
2537
cf1b9b6eeb41 change update:with:from: - ask cg
penk
parents: 2535
diff changeset
  1520
            ^ self
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1521
        ].
2537
cf1b9b6eeb41 change update:with:from: - ask cg
penk
parents: 2535
diff changeset
  1522
        self list:listHoldersList.
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1523
        ^ self
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1524
    ].
1593
2188ae28557e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1565
diff changeset
  1525
    arg1 := aPara ? what.
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1526
    row := (what isNumber) ifTrue:[what] ifFalse:[chgObj].
2190
9c7777ad9594 bad names: redraw vs. invalidate
penk
parents: 2157
diff changeset
  1527
    self invalidateVisibleRow:row readSelector:arg1.
1593
2188ae28557e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1565
diff changeset
  1528
1661
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
  1529
    "Modified: / 30.1.2000 / 12:16:49 / cg"
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1530
! !
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1531
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1532
!DSVColumnView methodsFor:'drag & drop'!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1533
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1534
canDrag
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1535
    "returns true if dragging is enabled
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1536
    "
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1537
    ^ dropSource notNil
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1538
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1539
!
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1540
2575
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1541
dragAutoScroll:aContext
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1542
    "called by the DragAndDropManager to scroll during a drag/drop operation
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1543
     if necassery (decided by the widget itself); If a scroll is done return
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1544
     true otherwise false (used to restore the background)
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1545
    "
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1546
    |yInset absLnNr y|
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1547
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1548
    y := aContext targetPoint y.
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1549
    yInset := margin + rowHeight.
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1550
    y > yInset ifTrue:[
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1551
        y >= (height - yInset) ifFalse:[^ false].
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1552
    ].
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1553
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1554
    absLnNr := self yVisibleToRowNr:y.
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1555
    absLnNr isNil ifTrue:[^ false].
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1556
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1557
    (absLnNr > 1 and:[absLnNr < self size]) ifFalse:[
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1558
        ^ false
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1559
    ].
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1560
    aContext contentsWillChange.
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1561
2580
aea885fae0de checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2575
diff changeset
  1562
    y > yInset 
aea885fae0de checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2575
diff changeset
  1563
        ifTrue:[self scrollDown:rowHeight]
aea885fae0de checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2575
diff changeset
  1564
        ifFalse:[self scrollUp:rowHeight].
2575
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1565
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1566
    ^ true
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1567
!
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1568
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1569
dropSource
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1570
    "returns the dropSource or nil
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1571
    "
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1572
    ^ dropSource
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1573
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1574
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1575
!
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1576
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1577
dropSource:aDropSourceOrNil
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1578
    "set the dropSource or nil
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1579
    "
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1580
    dropSource := aDropSourceOrNil.
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1581
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1582
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1583
!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1584
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1585
dropTarget
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1586
    "returns the dropTarget or nil
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1587
    "
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1588
    ^ dropTarget
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1589
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1590
!
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1591
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1592
dropTarget:aDropTragetOrNil
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1593
    "set the dropTarget or nil
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1594
    "
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1595
    dropTarget := aDropTragetOrNil.
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1596
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1597
!
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1598
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1599
startDragAt:aPoint
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  1600
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  1601
    dropSource notNil ifTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  1602
        dropSource startDragIn:self at:aPoint.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  1603
        buttonReleaseAction := buttonMotionAction := nil.
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1604
    ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1605
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1606
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1607
!DSVColumnView methodsFor:'drawing'!
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1608
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1609
colorOnDevice:aColor
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1610
    "returns color on device
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1611
    "
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1612
    |col|
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1613
641
tz
parents: 637
diff changeset
  1614
    aColor = Color noColor ifFalse:[
tz
parents: 637
diff changeset
  1615
        col := colorMap at:aColor ifAbsent:nil.
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1616
641
tz
parents: 637
diff changeset
  1617
        col isNil ifTrue:[
1480
51dd0cc6ea11 #on: -> #onDevice:
Claus Gittinger <cg@exept.de>
parents: 1461
diff changeset
  1618
            colorMap at:aColor put:(col := aColor onDevice:device)
641
tz
parents: 637
diff changeset
  1619
        ].
tz
parents: 637
diff changeset
  1620
        ^ col
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1621
    ].
641
tz
parents: 637
diff changeset
  1622
    ^ bgColor
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1623
!
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1624
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1625
forceRedraw
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1626
    "a redraw forced by any other component
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1627
    "
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  1628
    shown ifTrue:[
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  1629
        self invalidate
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  1630
    ]
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1631
!
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1632
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1633
invalidate
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1634
    "recompute extent before repair range
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1635
    "
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1636
    self  recomputeHeightOfContents.
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1637
    super invalidate.
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1638
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1639
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1640
!
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1641
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  1642
invalidateRowAt:aRowNr
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1643
    "redraw total row at an index
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1644
    "
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  1645
    self invalidateRowAt:aRowNr colAt:0
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1646
!
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1647
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  1648
invalidateRowAt:aRowNr colAt:aColNr
2151
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  1649
    "redraw either a single column in a row,
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  1650
     or the complete visible row (in case of aColNr == 0).
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  1651
     If the row/column is hidden, no redraw is done
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1652
    "
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1653
    |x "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1654
     y "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1655
     h "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1656
     w "{ Class:SmallInteger }"
2523
a7d71e57632f care for non-existing column
Claus Gittinger <cg@exept.de>
parents: 2500
diff changeset
  1657
     col|
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1658
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1659
    (shown and:[aRowNr notNil and:[aRowNr between:1 and:list size]]) ifTrue:[
1131
ef8f528399aa clear background under button
ca
parents: 1129
diff changeset
  1660
        h := rowHeight.
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1661
        y := self yVisibleOfRowNr:aRowNr.
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1662
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1663
        y < margin ifTrue:[
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1664
            (h := h + y) <= margin ifTrue:[
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1665
                ^ self
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1666
            ].                                                  "/ row not visible
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1667
            h := h - margin.
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1668
            y := margin.
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1669
        ] ifFalse:[
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1670
            y >= height ifTrue:[^ self].
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1671
        ].
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1672
        aColNr ~~ 0 ifTrue:[                                    "/ redraw column in row
2523
a7d71e57632f care for non-existing column
Claus Gittinger <cg@exept.de>
parents: 2500
diff changeset
  1673
            col := (self columnAt:aColNr).
a7d71e57632f care for non-existing column
Claus Gittinger <cg@exept.de>
parents: 2500
diff changeset
  1674
            w := col isNil ifTrue:0 ifFalse:[col width].
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1675
            x := self xVisibleOfColNr:aColNr.
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1676
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1677
            x < margin ifTrue:[
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1678
                (w := w + x) <= margin ifTrue:[
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1679
                    ^ self
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1680
                ].                                              "/ column not visible
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1681
                w := w - margin.
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1682
                x := margin.
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1683
            ] ifFalse:[
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1684
                x >= width ifTrue:[^ self].
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1685
            ]
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1686
        ] ifFalse:[                                             "/ redraw whole row
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1687
            x := margin.
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1688
            w := width.
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1689
        ].
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  1690
        self invalidateX:x y:y width:w height:h
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  1691
    ]
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  1692
!
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  1693
2469
a6e3ffd6df94 Avoid duplicate computations (sv, cg)
Stefan Vogel <sv@exept.de>
parents: 2458
diff changeset
  1694
invalidateRows:aCollection
a6e3ffd6df94 Avoid duplicate computations (sv, cg)
Stefan Vogel <sv@exept.de>
parents: 2458
diff changeset
  1695
    "redraw some visible rows"
a6e3ffd6df94 Avoid duplicate computations (sv, cg)
Stefan Vogel <sv@exept.de>
parents: 2458
diff changeset
  1696
a6e3ffd6df94 Avoid duplicate computations (sv, cg)
Stefan Vogel <sv@exept.de>
parents: 2458
diff changeset
  1697
    shown ifTrue:[
a6e3ffd6df94 Avoid duplicate computations (sv, cg)
Stefan Vogel <sv@exept.de>
parents: 2458
diff changeset
  1698
        aCollection do:[:rowIndex |
a6e3ffd6df94 Avoid duplicate computations (sv, cg)
Stefan Vogel <sv@exept.de>
parents: 2458
diff changeset
  1699
            self invalidateRowAt:rowIndex
a6e3ffd6df94 Avoid duplicate computations (sv, cg)
Stefan Vogel <sv@exept.de>
parents: 2458
diff changeset
  1700
        ]
a6e3ffd6df94 Avoid duplicate computations (sv, cg)
Stefan Vogel <sv@exept.de>
parents: 2458
diff changeset
  1701
    ]
a6e3ffd6df94 Avoid duplicate computations (sv, cg)
Stefan Vogel <sv@exept.de>
parents: 2458
diff changeset
  1702
!
a6e3ffd6df94 Avoid duplicate computations (sv, cg)
Stefan Vogel <sv@exept.de>
parents: 2458
diff changeset
  1703
1956
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1704
invalidateRowsFrom:aStart to:aStop
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1705
    "redraw visible row from start to stop
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1706
    "
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1707
    |size start stop y0 y1|
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1708
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1709
    shown ifTrue:[
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1710
        size  := list size.
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1711
        start := aStart notNil ifTrue:[aStart max:1]    ifFalse:[1].
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1712
        stop  := aStop  notNil ifTrue:[aStop  min:size] ifFalse:[size].
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1713
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1714
        start <= stop ifTrue:[
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1715
            y0 := (self yVisibleOfRowNr:start)              max:margin.
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1716
            y1 := ((self yVisibleOfRowNr:stop) + rowHeight) min:height.
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1717
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1718
            y0 < y1 ifTrue:[
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1719
                self invalidateX:margin y:y0 width:width height:(y1 - y0)
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1720
            ]
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1721
        ]
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1722
    ]
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1723
!
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1724
2190
9c7777ad9594 bad names: redraw vs. invalidate
penk
parents: 2157
diff changeset
  1725
invalidateVisibleRow:aRow
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1726
    "redraw row if visible
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1727
    "
2190
9c7777ad9594 bad names: redraw vs. invalidate
penk
parents: 2157
diff changeset
  1728
    self invalidateVisibleRow:aRow colAt:0
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1729
!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1730
2190
9c7777ad9594 bad names: redraw vs. invalidate
penk
parents: 2157
diff changeset
  1731
invalidateVisibleRow:aRow colAt:aColNr
2151
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  1732
    "redraw either a single column in a row,
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  1733
     or the complete visible row (in case of aColNr == 0).
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  1734
     If the row/column is hidden, no redraw is done
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1735
    "
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1736
    |start "{ Class:SmallInteger }"
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1737
     stop  "{ Class:SmallInteger }"
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1738
    |
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1739
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1740
    (start := self indexOfFirstRowShown) ~~ 0 ifTrue:[
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1741
        stop := (start + (height // rowHeight)) min:(list size).
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1742
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1743
        aRow isNumber ifTrue:[
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1744
            (aRow between:start and:stop) ifTrue:[
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  1745
                self invalidateRowAt:aRow colAt:aColNr
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1746
            ]
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1747
        ] ifFalse:[
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1748
            start to:stop do:[:i|
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1749
                (self at:i) == aRow ifTrue:[
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  1750
                    ^ self invalidateRowAt:i colAt:aColNr
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1751
                ]
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1752
            ]
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1753
        ]
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1754
    ]
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1755
!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1756
2190
9c7777ad9594 bad names: redraw vs. invalidate
penk
parents: 2157
diff changeset
  1757
invalidateVisibleRow:aRow readSelector:aSelector
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1758
    "redraw a column identified by its read selector; if no column with
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1759
     the specified read selector is detected, the whole line is drawn.
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1760
    "
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1761
    |row idx|
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1762
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1763
    aSelector isNil ifTrue:[
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1764
        idx := 0
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1765
    ] ifFalse:[
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1766
        (row := aRow) isNumber ifTrue:[
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1767
            (row := self at:aRow) isNil ifTrue:[ ^ self ]
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1768
        ].
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1769
        idx := columnDescriptors findFirst:[:aCol||desc|
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1770
            aCol description readSelector == aSelector
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1771
        ]
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1772
    ].
2190
9c7777ad9594 bad names: redraw vs. invalidate
penk
parents: 2157
diff changeset
  1773
    self invalidateVisibleRow:aRow colAt:idx
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1774
!
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1775
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1776
redrawX:x y:y width:w height:h
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1777
    "redraw part of myself immediately, given logical coordinates 
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1778
    "
2592
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1779
    |c0 savClip stopRedraw
1149
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  1780
     start "{ Class:SmallInteger }"
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  1781
     stop  "{ Class:SmallInteger }"
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  1782
     x0    "{ Class:SmallInteger }"
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  1783
     x1    "{ Class:SmallInteger }"
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  1784
     maxX  "{ Class:SmallInteger }"
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  1785
     yTop  "{ Class:SmallInteger }"
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  1786
     yBot  "{ Class:SmallInteger }"
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  1787
     clHg  "{ Class:SmallInteger }"
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  1788
     size  "{ Class:SmallInteger }"
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1789
    |
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1790
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1791
    shown ifFalse:[^ self].
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1792
    self paint:bgColor.
1115
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  1793
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  1794
    columnDescriptors isEmpty ifTrue:[
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  1795
        ^ self fillRectangleX:x y:y width:w height:h
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  1796
    ].
1131
ef8f528399aa clear background under button
ca
parents: 1129
diff changeset
  1797
    size  := list size.
1115
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  1798
    yTop  := margin - viewOrigin y.                   
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  1799
    c0    := y - yTop max:0.
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  1800
    start := (c0 // rowHeight) + 1.
1131
ef8f528399aa clear background under button
ca
parents: 1129
diff changeset
  1801
    stop  := (c0 + h - 1 // rowHeight + 1) min:size.
1115
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  1802
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  1803
    stop < start ifTrue:[
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  1804
        ^ self fillRectangleX:x y:y width:w height:h
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  1805
    ].
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  1806
    savClip := clipRect.
1149
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  1807
1115
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  1808
    maxX := (x + w) min:(width - margin).
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  1809
    x0   := margin - viewOrigin x.
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  1810
    yTop := yTop + ((start - 1) * rowHeight).
1131
ef8f528399aa clear background under button
ca
parents: 1129
diff changeset
  1811
    clHg := (stop - start + 1) * rowHeight.
ef8f528399aa clear background under button
ca
parents: 1129
diff changeset
  1812
    yBot := yTop + clHg.
ef8f528399aa clear background under button
ca
parents: 1129
diff changeset
  1813
2592
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1814
    stopRedraw := false.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1815
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1816
    self class stopRedrawSignal handle:[:ex|
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1817
        stopRedraw := true.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1818
    ] do:[
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1819
        columnDescriptors do:[:aCol| |cw|
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1820
            x1 := x0 + aCol width.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1821
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1822
            (x1 > x and:[x0 < maxX]) ifTrue:[
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1823
                |left right rect|
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1824
                left  := x0 max:x.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1825
                right := x1 min:maxX.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1826
                rect  := Rectangle left:left top:y width:(right - left) height:h.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1827
            
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1828
                clipRect := nil.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1829
                self clippingRectangle:rect.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1830
                aCol redrawX:x0 y:yTop h:clHg  from:start to:stop.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1831
            ].
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1832
            x0 := x1
1115
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  1833
        ].
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  1834
    ].
1131
ef8f528399aa clear background under button
ca
parents: 1129
diff changeset
  1835
2151
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  1836
    "/ restore old clipping rectangle
1115
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  1837
    self clippingRectangle:savClip.
1131
ef8f528399aa clear background under button
ca
parents: 1129
diff changeset
  1838
2592
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1839
    stopRedraw ifTrue:[
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1840
        self invalidate.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1841
        self makeSelectionVisible.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1842
        ^ self
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1843
    ].
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1844
1131
ef8f528399aa clear background under button
ca
parents: 1129
diff changeset
  1845
    stop == size ifTrue:[
1115
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  1846
        yTop := y + h.
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  1847
        yBot < (yTop - margin) ifTrue:[
2151
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  1848
            "/ clear to bottom of screen
1115
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  1849
            self paint:bgColor.
1149
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  1850
            self fillRectangleX:x y:yBot width:w height:(yTop - yBot).
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1851
        ]
1136
4a9d9db81422 set bg/fg color when drawing an interactor
ca
parents: 1134
diff changeset
  1852
    ].
4a9d9db81422 set bg/fg color when drawing an interactor
ca
parents: 1134
diff changeset
  1853
1149
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  1854
    (c0 := w + x- x1) > 0 ifTrue:[
2151
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  1855
        "/ clear to right of screen
1136
4a9d9db81422 set bg/fg color when drawing an interactor
ca
parents: 1134
diff changeset
  1856
        self paint:bgColor.
4a9d9db81422 set bg/fg color when drawing an interactor
ca
parents: 1134
diff changeset
  1857
        self fillRectangleX:x1 y:y width:c0 height:h.
4a9d9db81422 set bg/fg color when drawing an interactor
ca
parents: 1134
diff changeset
  1858
    ].
2151
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  1859
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  1860
    "/ draw the selection in the right part, after the last column
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  1861
    x1 < (width-margin) ifTrue:[
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  1862
        self hasRowSelection ifTrue:[
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  1863
            self selectionIndicesDo:[:selIdx |
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  1864
                |y|
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  1865
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  1866
                y := self yVisibleOfRowNr:selIdx.
2154
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
  1867
                self paint:selectionBackgroundColor.
2151
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  1868
                self 
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  1869
                    fillRectangleX:x1 y:y 
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  1870
                    width:(width-margin-x1) height:rowHeight.
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  1871
            ].
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  1872
        ].
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  1873
    ].
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1874
! !
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1875
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1876
!DSVColumnView methodsFor:'drawing interactors'!
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1877
2592
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1878
displayLabel:aLabel x:xLeft y:yTop
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1879
    "display the label at x y; test whether the height of the label matches to the current
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1880
     rowHeight. If not, an exception is raised and the rowHeight is recomputed
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1881
    "
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1882
    |y h |
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1883
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1884
    aLabel notNil ifTrue:[
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1885
        aLabel isString ifTrue:[
2593
24ddc48c5ad4 bugfix: recomputation of rowHeight if label is heigher than current rowHeight
ca
parents: 2592
diff changeset
  1886
            y := yTop + self rowFontAscent.
2592
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1887
        ] ifFalse:[
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1888
            h := aLabel heightOn:self.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1889
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1890
            h > minRowHeight ifTrue:[
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1891
                minRowHeight := h.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1892
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1893
                preferredExtent notNil ifTrue:[
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1894
                    rowHeight := (minRowHeight + separatorSize + verticalSpacing + verticalSpacing + 1) // 2 * 2.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1895
                    preferredExtent := preferredExtent copy.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1896
                    preferredExtent y: (list size * rowHeight).
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1897
                    self contentsChanged.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1898
                ].
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1899
                self class stopRedrawSignal raiseRequest.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1900
            ].
2593
24ddc48c5ad4 bugfix: recomputation of rowHeight if label is heigher than current rowHeight
ca
parents: 2592
diff changeset
  1901
            y := yTop + (aLabel ascentOn:self).
2592
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1902
        ].
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1903
        aLabel displayOn:self x:xLeft y:y.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1904
    ].
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1905
!
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  1906
1131
ef8f528399aa clear background under button
ca
parents: 1129
diff changeset
  1907
drawCheckToggleAtX:xTop y:yTop w:rowWidth state:aState
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1908
    "draw a check toggle button
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1909
    "
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1910
    |e form
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1911
     y "{ Class:SmallInteger }"
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1912
     x "{ Class:SmallInteger }"
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1913
     h "{ Class:SmallInteger }"
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1914
     w "{ Class:SmallInteger }"
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1915
    |
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1916
    w := checkToggleExtent x.
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1917
    h := checkToggleExtent y.
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1918
    y := yTop + (rowHeight - h // 2).
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1919
    x := xTop + (rowWidth  - w // 2).
1529
aa5e8fae6f23 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1521
diff changeset
  1920
    h odd ifTrue:[y := y + 1].
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1921
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1922
    (form := checkToggleActiveImage) isNil ifTrue:[
1131
ef8f528399aa clear background under button
ca
parents: 1129
diff changeset
  1923
        self paint:bgColor.
ef8f528399aa clear background under button
ca
parents: 1129
diff changeset
  1924
        self fillRectangleX:x y:y width:w height:h.
ef8f528399aa clear background under button
ca
parents: 1129
diff changeset
  1925
        self drawEdgesAtX:x   y:y width:w height:h level:checkToggleLevel on:self.
ef8f528399aa clear background under button
ca
parents: 1129
diff changeset
  1926
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1927
        aState ifFalse:[
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1928
            ^ self
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1929
        ].
1149
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  1930
        self paint:fgColor on:bgColor.
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1931
        form := checkToggleForm
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1932
    ] ifFalse:[
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1933
        aState ifFalse:[form := checkTogglePassiveImage]
859
e63eb6f321e1 support List for columns
ca
parents: 833
diff changeset
  1934
    ].
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1935
    e := (checkToggleExtent - form extent) // 2.
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1936
    self displayForm:form x:(x + e x) y:(y + e y).
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1937
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1938
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1939
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1940
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1941
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1942
!
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1943
1131
ef8f528399aa clear background under button
ca
parents: 1129
diff changeset
  1944
drawComboButtonAtX:xTop y:yTop w:rowWidth
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1945
    "draw a combo button
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1946
    "
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1947
    |e
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1948
     x "{ Class:SmallInteger }"
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1949
     y "{ Class:SmallInteger }"
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1950
     h "{ Class:SmallInteger }"
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1951
     w "{ Class:SmallInteger }"
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1952
    |
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1953
    w := comboButtonExtent x.
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1954
    h := comboButtonExtent y.
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1955
    y := yTop + (rowHeight - h // 2).
1149
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  1956
    x := xTop + (rowWidth  - w - separatorSize - 1).
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1957
    e := (comboButtonExtent - comboButtonForm extent) // 2.
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1958
1131
ef8f528399aa clear background under button
ca
parents: 1129
diff changeset
  1959
    self paint:bgColor.
ef8f528399aa clear background under button
ca
parents: 1129
diff changeset
  1960
    self fillRectangleX:x y:y width:w height:h.
ef8f528399aa clear background under button
ca
parents: 1129
diff changeset
  1961
    self drawEdgesAtX:x   y:y width:w height:h level:comboButtonLevel on:self.
1136
4a9d9db81422 set bg/fg color when drawing an interactor
ca
parents: 1134
diff changeset
  1962
    self paint:fgColor on:bgColor.
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1963
    self displayForm:comboButtonForm x:(x + e x) y:(y + e y)
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1964
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1965
!
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1966
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1967
drawEdgesAtX:x y:y width:w height:h level:aLevel on:aGC
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1968
    "draw edges for a cell or label
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1969
    "
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1970
    aGC  drawEdgesForX:x
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1971
                     y:y 
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1972
                 width:w
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1973
                height:h
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1974
                 level:aLevel 
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1975
                shadow:buttonShadowColor 
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1976
                 light:buttonLightColor
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1977
            halfShadow:buttonHalfShadowColor 
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1978
             halfLight:buttonHalfLightColor
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1979
                 style:ButtonEdgeStyle.
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1980
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1981
! !
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1982
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1983
!DSVColumnView methodsFor:'enumerating columns'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1984
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1985
columnsDo:aOneArgBlock
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1986
    "evaluate the argument, aOneArgBlock for every column
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1987
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1988
    columnDescriptors do:aOneArgBlock
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1989
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1990
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1991
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1992
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1993
columnsFrom:start to:stop do:aOneArgBlock
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1994
    "evaluate the argument, aOneArgBlock for the columns with index start to
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1995
     stop in the collection of column descriptors
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1996
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1997
    columnDescriptors from:start to:stop do:aOneArgBlock
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1998
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1999
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2000
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2001
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2002
!DSVColumnView methodsFor:'event handling'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2003
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2004
buttonControlPressAtRowNr:aStartRow
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2005
    |isSelected prvRow doAdd chgSet|
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2006
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2007
    buttonMotionAction := nil.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2008
    isSelected         := self isInSelection:aStartRow.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2009
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2010
    isSelected ifTrue:[ self removeRowFromSelection:aStartRow ]
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2011
              ifFalse:[ self addRowToSelection:aStartRow ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2012
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2013
    multipleSelectOk ifFalse:[ ^ self ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2014
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2015
    prvRow := aStartRow.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2016
    chgSet := IdentitySet new.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2017
    doAdd  := isSelected not.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2018
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2019
    buttonMotionAction := [:p| |rowNr mustRestore step f|
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2020
        rowNr := self yVisibleToRowNr:(p y).
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2021
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2022
        (rowNr notNil and:[rowNr ~~ prvRow]) ifTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2023
            rowNr == aStartRow ifTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2024
                mustRestore := true
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2025
            ] ifFalse:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2026
                rowNr > aStartRow ifTrue:[ mustRestore := (rowNr < prvRow) ]
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2027
                                 ifFalse:[ mustRestore := (rowNr > prvRow) ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2028
            ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2029
            prvRow > rowNr ifTrue:[ step := -1 ]
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2030
                          ifFalse:[ step :=  1 ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2031
            mustRestore ifTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2032
                [ prvRow ~~ rowNr ] whileTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2033
                    (chgSet removeIdentical:prvRow ifAbsent:nil) notNil ifTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2034
                        doAdd ifFalse:[ self addRowToSelection:prvRow ]
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2035
                               ifTrue:[ self removeRowFromSelection:prvRow ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2036
                    ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2037
                    prvRow := prvRow + step.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2038
                ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2039
            ] ifFalse:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2040
                [ prvRow ~~ rowNr ] whileTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2041
                    prvRow := prvRow + step.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2042
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2043
                    doAdd ~~ (self isInSelection:rowNr) ifTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2044
                        chgSet add:prvRow.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2045
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2046
                        doAdd ifTrue:[ self addRowToSelection:prvRow ]
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2047
                             ifFalse:[ self removeRowFromSelection:prvRow ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2048
                    ]
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2049
                ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2050
            ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2051
        ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2052
    ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2053
!
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2054
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2055
buttonMotion:buttonMask x:x y:y
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2056
    "mouse-move while button was pressed - handle multiple selection changes
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2057
    "
1809
021aaf4e6006 added: enable-query in buttonMotion
tm
parents: 1807
diff changeset
  2058
    self isEnabled ifFalse:[^ self].
021aaf4e6006 added: enable-query in buttonMotion
tm
parents: 1807
diff changeset
  2059
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2060
    buttonMotionAction notNil ifTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2061
        buttonMotionAction value:(x@y).
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2062
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2063
        buttonMotionAction notNil ifTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2064
            autoScroll ifTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2065
                "/ if moved outside of view, start autoscroll
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2066
                (y < 0) ifTrue:[
2670
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  2067
                    ^ self startAutoScroll:#scrollUp distance:y.
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2068
                ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2069
                (y > height) ifTrue:[
2670
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  2070
                    ^ self startAutoScroll:#scrollDown distance:(y - height).
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2071
                ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2072
            ]
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2073
        ]
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2074
    ].
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2075
    self stopAutoScroll.
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2076
!
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2077
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2078
buttonMultiPress:button x:x y:y
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2079
    "a button was pressed twice - handle doubleclick here
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2080
    "
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2081
    buttonMotionAction := buttonReleaseAction := nil.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2082
1805
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
  2083
    self isEnabled ifFalse:[^ self].
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
  2084
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2085
    ((button == 1) or:[button == #select]) ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2086
        ^ super buttonMultiPress:button x:x y:y
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2087
    ].
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2088
    self numberOfSelections == 1 ifTrue:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2089
        self firstIndexSelected == (self yVisibleToRowNr:y) ifTrue:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2090
            (     selectedColIndex == 0
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2091
              or:[selectedColIndex == (self xVisibleToColNr:x)]
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2092
            ) ifTrue:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2093
                self doubleClicked
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2094
            ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2095
        ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2096
    ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2097
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2098
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2099
buttonPress:button x:x y:y
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2100
    "a button was pressed - handle selection here
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2101
    "
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2102
    |rowNr colNr menu sensor clickPoint|
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2103
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2104
    buttonMotionAction := buttonReleaseAction := nil.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2105
1805
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
  2106
    self isEnabled ifFalse:[^ self].
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
  2107
1947
1e11b36633b2 added selectAllRows (Alt-Shift-A) key function
Claus Gittinger <cg@exept.de>
parents: 1946
diff changeset
  2108
    sensor := self sensor.
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2109
667
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2110
    ((button == 2) or:[button == #menu]) ifTrue:[
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2111
        menu := self findMenuForSelection.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2112
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2113
        menu notNil ifTrue:[ self startUpMenu:menu ]
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2114
                   ifFalse:[ super buttonPress:button x:x y:y ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2115
        ^ self
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2116
    ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2117
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2118
    (     (rowNr := self yVisibleToRowNr:y) notNil
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2119
     and:[(colNr := self xVisibleToColNr:x) notNil]
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2120
    ) ifFalse:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2121
        super buttonPress:button x:x y:y.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2122
        ^ self
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2123
    ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2124
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2125
    (self isRowSelectable:rowNr) ifFalse:[^ self ].
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2126
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2127
    sensor ctrlDown ifTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2128
        self buttonControlPressAtRowNr:rowNr.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2129
        ^ self
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2130
    ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2131
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2132
    sensor shiftDown ifTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2133
        (multipleSelectOk and:[selectedRowIndex size ~~ 0]) ifTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2134
            self selectRowFrom:(selectedRowIndex min min:rowNr)
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2135
                            to:(selectedRowIndex max max:rowNr).
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2136
        ] ifFalse:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2137
            self selectColIndex:0 rowIndex:rowNr.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2138
        ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2139
        ^ self
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2140
    ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2141
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2142
    (self canDrag and:[self isSelected:rowNr inColumn:colNr]) ifTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2143
        clickPoint := x @ y.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2144
        buttonReleaseAction := [ self selectRowAt:rowNr colAt:colNr atPoint:(x @ y) ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2145
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2146
        buttonMotionAction := [:aPoint|
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2147
            (clickPoint dist:aPoint) > 5.0 ifTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2148
                buttonReleaseAction := buttonMotionAction := nil.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2149
                self startDragAt:aPoint.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2150
            ]
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2151
        ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2152
        ^ self.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2153
    ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2154
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2155
    self withWaitCursorDo:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2156
        self selectRowAt:rowNr colAt:colNr atPoint:(x @ y)
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2157
    ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2158
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2159
    (multipleSelectOk and:[selectedColIndex == 0 and:[selectedRowIndex size == 1]]) ifTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2160
        buttonMotionAction := [:p| |r|
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2161
            r := self yVisibleToRowNr:(p y).
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2162
            r notNil ifTrue:[ self selectRowFrom:rowNr to:r ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2163
        ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2164
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2165
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2166
643
bfd44867347f adding: bug fix
ca
parents: 642
diff changeset
  2167
buttonRelease:button x:x y:y
bfd44867347f adding: bug fix
ca
parents: 642
diff changeset
  2168
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2169
    buttonMotionAction := nil.
1749
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  2170
    self stopAutoScroll.
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  2171
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2172
    buttonReleaseAction notNil ifTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2173
        buttonReleaseAction value.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2174
        buttonReleaseAction := nil.
643
bfd44867347f adding: bug fix
ca
parents: 642
diff changeset
  2175
    ].
bfd44867347f adding: bug fix
ca
parents: 642
diff changeset
  2176
    super buttonRelease:button x:x y:y
bfd44867347f adding: bug fix
ca
parents: 642
diff changeset
  2177
!
bfd44867347f adding: bug fix
ca
parents: 642
diff changeset
  2178
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2179
characterPress:aChar x:x y:y
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2180
    "search row in column at x/y starting its printable label with cahracter.
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2181
    "
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2182
    |colNr rowNr lsize found column|
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2183
2445
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2184
    lsize  := list size.
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2185
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2186
"/    (rowIfAbsentBlock notNil 
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2187
"/     or:[x isNil
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2188
"/     or:[(colNr := self xVisibleToColNr:x) isNil]]) ifTrue:[
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2189
"/        ^ self
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2190
"/    ].
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2191
    colNr := self findFirstColumnWithStringFrom:1 to:lsize.
2535
4df3f0a09b83 fixed: characterPressed: ... on non editable column
tm
parents: 2524
diff changeset
  2192
    colNr isNil ifTrue:[ ^ self ].
4df3f0a09b83 fixed: characterPressed: ... on non editable column
tm
parents: 2524
diff changeset
  2193
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2194
    rowNr  := self lastIndexSelected.
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2195
    column := self columnAt:colNr.
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2196
    found  := 0.
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2197
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2198
    lsize > rowNr ifTrue:[
2445
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2199
        "/ search to end
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2200
        found := column findRowNrStartingWithChar:aChar start:(rowNr + 1) stop:lsize.
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2201
    ].
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2202
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2203
    (found == 0 and:[rowNr > 1]) ifTrue:[
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2204
     "/ search from begin
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2205
        found := column findRowNrStartingWithChar:aChar start:1 stop:(rowNr - 1)
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2206
    ].
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2207
    found ~~ 0 ifTrue:[
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2208
        self selectColIndex:colNr rowIndex:found.
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2209
    ].
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2210
896
aa07612a7c04 care for redirected messages in characterPress:
Claus Gittinger <cg@exept.de>
parents: 892
diff changeset
  2211
    "Modified: / 21.5.1998 / 03:30:22 / cg"
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2212
!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2213
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2214
contentsChanged
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2215
    "contents changed - move origin up if possible
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2216
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2217
    |y|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2218
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2219
    shown ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2220
        self recomputeHeightOfContents.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2221
        y := self maxViewOriginY.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2222
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2223
        viewOrigin y > y ifTrue:[
1948
9ed8131d94bb viewOrigin fix (when list is set to nil while not shown);
Claus Gittinger <cg@exept.de>
parents: 1947
diff changeset
  2224
            scrollWhenUpdating ~~ false ifTrue:[
9ed8131d94bb viewOrigin fix (when list is set to nil while not shown);
Claus Gittinger <cg@exept.de>
parents: 1947
diff changeset
  2225
                self scrollTo:(viewOrigin x @ y)
9ed8131d94bb viewOrigin fix (when list is set to nil while not shown);
Claus Gittinger <cg@exept.de>
parents: 1947
diff changeset
  2226
            ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2227
        ] ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2228
            self updateEditViewOrigin.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2229
        ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2230
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2231
    super contentsChanged
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2232
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2233
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2234
doubleClicked
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2235
    "handle a double click
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2236
    "
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2237
    |col sel idx|
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2238
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2239
    self hasSelection ifTrue:[
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2240
        idx := self firstIndexSelected.
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2241
        col := self selectedColumn.
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2242
        (col notNil and:[(sel := col doubleClickedSelector) notNil]) ifTrue:[
2074
89565d366510 doubleClick and menu via columnAdaptor
martin
parents: 2044
diff changeset
  2243
            col doubleClickOn:idx
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2244
        ] ifFalse:[
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2245
            doubleClickActionBlock notNil ifTrue:[
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2246
                doubleClickActionBlock value:idx
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2247
            ]
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2248
        ]
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2249
    ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2250
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2251
2445
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2252
findFirstColumnWithStringFrom:start to:stop
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2253
    start to:stop do:[:eachNr| 
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2254
        |row lbl|
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2255
        row := self at:eachNr.
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2256
        columnDescriptors keysAndValuesDo:[:colNr :col |    
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2257
            lbl := col shownValueForRow:row rowNr:eachNr.
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2258
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2259
            (lbl isSequenceable and:[lbl isString not]) ifTrue:[
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2260
                lbl := lbl at:1 ifAbsent:nil
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2261
            ].
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2262
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2263
            (lbl respondsTo:#string) ifTrue:[
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2264
                lbl := lbl string.
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2265
            ].
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2266
            (lbl size > 0 and:[(lbl at:1) isCharacter]) ifTrue:[
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2267
                ^ colNr
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2268
            ]
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2269
        ]
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2270
    ].
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2271
    ^ nil
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2272
!
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2273
667
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2274
findMenuForSelection
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2275
    "find the middle button menu for the current selection; returns the menu or nil
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2276
    "
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2277
    |col row menu|
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2278
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2279
    self numberOfSelections == 1 ifTrue:[
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2280
        row := self at:(self firstIndexSelected).
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2281
        col := self selectedColumn.
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2282
2074
89565d366510 doubleClick and menu via columnAdaptor
martin
parents: 2044
diff changeset
  2283
        (col notNil and:[(menu := col menuForRow:row orAdaptor:columnAdaptor) notNil]) ifTrue:[
667
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2284
            ^ menu
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2285
        ].
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2286
        col := columnDescriptors detect:[:c| c rendererType == #rowSelector]
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2287
                                 ifNone:[nil].
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2288
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2289
        col notNil ifTrue:[
1223
176702811314 kludge: when asking for an itemMenu, pass application to
tm
parents: 1215
diff changeset
  2290
            ^ col menuForRow:row inApplication:(self application)
667
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2291
        ]
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2292
    ].
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2293
    ^ nil
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2294
!
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2295
1111
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2296
keyPress:aKey x:x y:y
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2297
    "a key was pressed - handle page-keys here
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2298
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2299
    <resource: #keyboard (#PreviousPage #NextPage #HalfPageUp #HalfPageDown
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2300
                          #BeginOfText #EndOfText #ScrollUp #ScrollDown
1947
1e11b36633b2 added selectAllRows (Alt-Shift-A) key function
Claus Gittinger <cg@exept.de>
parents: 1946
diff changeset
  2301
                          #CursorUp #CursorDown #CursorRight #CursorLeft #SelectAll)>
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2302
2482
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
  2303
    |maxColNr firstSelRowNr minSelRowNr maxSelRowNr selRowNr selColNr 
2470
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  2304
     key column isTab listSize hasSelectables rawKey|
1111
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2305
1805
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
  2306
    self isEnabled ifFalse:[^ self].
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
  2307
1416
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
  2308
    (listSize := list size) == 0 ifTrue:[
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
  2309
        ^ super keyPress:aKey x:x y:y
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
  2310
    ].
1776
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2311
    aKey isCharacter ifTrue:[
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2312
        ^ self characterPress:aKey x:x y:y
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2313
    ].
1111
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2314
1947
1e11b36633b2 added selectAllRows (Alt-Shift-A) key function
Claus Gittinger <cg@exept.de>
parents: 1946
diff changeset
  2315
    (aKey == #SelectAll) ifTrue:[
1e11b36633b2 added selectAllRows (Alt-Shift-A) key function
Claus Gittinger <cg@exept.de>
parents: 1946
diff changeset
  2316
        multipleSelectOk ifTrue:[
1e11b36633b2 added selectAllRows (Alt-Shift-A) key function
Claus Gittinger <cg@exept.de>
parents: 1946
diff changeset
  2317
            self selectAllRows. 
1e11b36633b2 added selectAllRows (Alt-Shift-A) key function
Claus Gittinger <cg@exept.de>
parents: 1946
diff changeset
  2318
        ].
1e11b36633b2 added selectAllRows (Alt-Shift-A) key function
Claus Gittinger <cg@exept.de>
parents: 1946
diff changeset
  2319
        ^ self
1e11b36633b2 added selectAllRows (Alt-Shift-A) key function
Claus Gittinger <cg@exept.de>
parents: 1946
diff changeset
  2320
    ].
1e11b36633b2 added selectAllRows (Alt-Shift-A) key function
Claus Gittinger <cg@exept.de>
parents: 1946
diff changeset
  2321
1776
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2322
    aKey == #PreviousPage ifTrue:[^ self pageUp].
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2323
    aKey == #NextPage     ifTrue:[^ self pageDown].
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2324
    aKey == #HalfPageUp   ifTrue:[^ self halfPageUp].
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2325
    aKey == #HalfPageDown ifTrue:[^ self halfPageDown].
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2326
    aKey == #BeginOfText  ifTrue:[^ self scrollToTop].
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2327
    aKey == #EndOfText    ifTrue:[^ self scrollToBottom].
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2328
    aKey == #ScrollUp     ifTrue:[^ self scrollUp]. 
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2329
    aKey == #ScrollDown   ifTrue:[^ self scrollDown]. 
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2330
1111
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2331
    aKey == #Return ifTrue:[
1416
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
  2332
        self numberOfSelections == 1 ifTrue:[self doubleClicked].
2363
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2333
        ^ self
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2334
    ].
1111
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2335
1668
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
  2336
    hasSelectables := false.
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
  2337
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
  2338
    columnDescriptors do:[:aCol|
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
  2339
        (hasSelectables or:[aCol rendererType == #rowSelector]) ifFalse:[
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
  2340
            hasSelectables := aCol description canSelect
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
  2341
        ]
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
  2342
    ].
2470
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  2343
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  2344
    rawKey := (WindowGroup lastEventQuerySignal query) rawKey.
2363
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2345
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2346
    (aKey == #CursorUp 
2470
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  2347
        or:[aKey == #CursorDown
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  2348
        or:[rawKey == #Home
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  2349
        or:[rawKey == #End] 
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  2350
    ]]) ifTrue:[
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2351
        (hasSelectables or:[selectRowOnDefault]) ifTrue:[ |step start|
2470
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  2352
            minSelRowNr := self minIndexSelected.
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  2353
            maxSelRowNr := self maxIndexSelected.
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  2354
1776
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2355
            selColNr := hasSelectables ifFalse:[0]
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2356
                                        ifTrue:[selectedColIndex].
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2357
1776
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2358
            aKey == #CursorUp ifTrue:[
2363
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2359
                selRowNr := minSelRowNr > 1 ifTrue:[minSelRowNr - 1] ifFalse:[listSize].
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2360
                step := -1.
1776
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2361
            ] ifFalse:[
2363
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2362
                aKey == #CursorDown ifTrue:[
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2363
                    selRowNr := maxSelRowNr < listSize ifTrue:[maxSelRowNr + 1] ifFalse:[1].
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2364
                    step := 1.
2363
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2365
                ] ifFalse:[
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2366
                    aKey == #BeginOfLine ifTrue:[
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2367
                        selRowNr := 1.
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2368
                        step := 1.
2363
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2369
                    ] ifFalse:[
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2370
                        selRowNr := listSize.
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2371
                        step := -1.
2363
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2372
                    ]
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2373
                ]
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2374
            ].
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2375
            start := selRowNr.
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2376
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2377
            [ self isRowSelectable:selRowNr ] whileFalse:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2378
                selRowNr := selRowNr + step.
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2379
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2380
                selRowNr == 0 ifTrue:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2381
                    selRowNr := listSize.
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2382
                ] ifFalse:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2383
                    selRowNr > listSize ifTrue:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2384
                        selRowNr := 1.
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2385
                    ].
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2386
                ].
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2387
                selRowNr == start ifTrue:[^ self ].
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2388
            ].
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2389
                                
2363
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2390
            ((aKey == #CursorUp) or:[aKey == #CursorDown]) ifTrue:[
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2391
                (multipleSelectOk and:[self sensor shiftDown]) ifTrue:[
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2392
                    self addRowToSelection:selRowNr.
2370
8d1fadf4e4f6 #addRowToSelection: omit redraws
ca
parents: 2363
diff changeset
  2393
2363
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2394
                    aKey == #CursorDown ifTrue:[
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2395
                        self makeLineVisible:((selRowNr+1) min:listSize)
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2396
                    ] ifFalse:[
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2397
                        self makeLineVisible:((selRowNr-1) max:1)
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2398
                    ].
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2399
                    ^ self
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2400
                ]
1776
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2401
            ].
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2402
            self selectColIndex:selColNr rowIndex:selRowNr
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2403
        ].
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2404
        ^ self
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2405
    ].
1668
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
  2406
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
  2407
    hasSelectables ifFalse:[
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
  2408
        ^ super keyPress:aKey x:x y:y
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
  2409
    ].
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
  2410
1776
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2411
    "/ CURSOR LEFT/RIGHT or TABING
2470
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  2412
    (aKey == #CursorLeft or:[aKey == #CursorRight]) ifTrue:[
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  2413
        isTab := false.
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  2414
        key   := aKey.
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  2415
    ] ifFalse:[
1668
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
  2416
        tabIntern ifFalse:[
1665
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2417
            ^ super keyPress:aKey x:x y:y
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2418
        ].
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2419
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2420
        (aKey includesString:'Tab') ifTrue:[
2482
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
  2421
            key := (self sensor shiftDown or:[aKey includesString:'Left']) 
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
  2422
                        ifTrue:[#CursorLeft]
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
  2423
                        ifFalse:[#CursorRight]
1416
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
  2424
        ] ifFalse:[
1665
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2425
            (aKey == #FocusPrevious or:[aKey == #FocusNext]) ifFalse:[
1416
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
  2426
                ^ super keyPress:aKey x:x y:y
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
  2427
            ].
1665
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2428
            key := aKey == #FocusPrevious ifTrue:[#CursorLeft] ifFalse:[#CursorRight].
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2429
        ].
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2430
        isTab := true.
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2431
    ].
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2432
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2433
    maxColNr := self numberOfColumns.
1776
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2434
    selColNr := selectedColIndex.
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  2435
2470
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  2436
    firstSelRowNr := self firstIndexSelected.
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  2437
1111
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2438
    key == #CursorLeft ifTrue:[
2363
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2439
        selRowNr := firstSelRowNr.
1665
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2440
        selRowNr == 0 ifTrue:[selRowNr := listSize].
1776
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2441
        selColNr == 0 ifTrue:[selColNr := maxColNr + 1].
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2442
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2443
        [true] whileTrue:[
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2444
            (selColNr := selColNr - 1) == 0 ifTrue:[
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2445
                [   selRowNr := selRowNr - 1.
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2446
                    selRowNr == 0 ifTrue:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2447
                        isTab ifTrue:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2448
                            tabAtStartAction notNil ifTrue:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2449
                                tabAtStartAction value
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2450
                            ] ifFalse:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2451
                                self deselect.
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2452
                                self windowGroup focusPreviousFrom:self
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2453
                            ]
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2454
                        ].
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2455
                        ^ self
1416
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
  2456
                    ].
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2457
                    (self isRowSelectable:selRowNr)
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2458
                ] whileFalse.
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2459
1776
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2460
                selColNr := maxColNr
1111
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2461
            ].
1776
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2462
            column := self columnAt:selColNr.
1416
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
  2463
1111
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2464
            (column rendererType ~~ #rowSelector and:[column canSelect:selRowNr]) ifTrue:[
1776
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2465
                ^ self selectColIndex:selColNr rowIndex:selRowNr.
1111
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2466
            ]
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2467
        ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2468
    ].
1776
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2469
2363
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2470
    selRowNr := firstSelRowNr.
1776
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2471
    selRowNr == 0 ifTrue:[selRowNr := 1].
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2472
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2473
    [true] whileTrue:[
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2474
        (selColNr := selColNr + 1) > maxColNr ifTrue:[
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2475
            [   selRowNr := selRowNr + 1.
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2476
                selRowNr > listSize ifTrue:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2477
                    isTab ifTrue:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2478
                        tabAtEndAction notNil ifTrue:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2479
                            tabAtEndAction value
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2480
                        ] ifFalse:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2481
                            self deselect.
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2482
                            self windowGroup focusNextFrom:self
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2483
                        ]
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2484
                    ].
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2485
                    ^ self
1776
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2486
                ].
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2487
                (self isRowSelectable:selRowNr)
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2488
            ] whileFalse.
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2489
1776
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2490
            selColNr := 1
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2491
        ].
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2492
        column := self columnAt:selColNr.
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2493
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2494
        (column rendererType ~~ #rowSelector and:[column canSelect:selRowNr]) ifTrue:[
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2495
            ^ self selectColIndex:selColNr rowIndex:selRowNr
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2496
        ]
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2497
    ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2498
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2499
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2500
originChanged:delta
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2501
    "this one is sent, after the origin of my contents has changed -
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2502
     tell dependents (i.e. scrollers) about this
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2503
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2504
    super originChanged:delta.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2505
    self updateEditViewOrigin.
2276
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  2506
!
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  2507
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  2508
sizeChanged:how
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  2509
    "size changed - move origin up if possible
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  2510
     change the layout of the labelView dependent on my layout
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  2511
    "
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  2512
    |selectionWasVisible|
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  2513
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  2514
    selectionWasVisible := self isSelectionVisibleIn:(previousExtent ? self extent).
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  2515
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  2516
    previousExtent := self extent.
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  2517
    super sizeChanged:how.
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  2518
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  2519
    "/ no - must compute even if not visible.
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  2520
    "/ (could be invisible in a notebook ...)
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  2521
    realized ifTrue:[                   "used to be: shown" 
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  2522
"/        labelView isVisible ifTrue:[
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  2523
"/            lyt := labelView layout.
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  2524
"/            lyt  leftOffset:(layout leftOffset).
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  2525
"/            lyt rightOffset:(layout rightOffset).
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  2526
"/            labelView layout:lyt.
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  2527
"/        ].
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  2528
        self fitColumns.
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  2529
        selectionWasVisible ifTrue:[
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  2530
            self makeSelectionVisible.
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  2531
        ]
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  2532
    ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2533
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2534
1665
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2535
!DSVColumnView methodsFor:'focus handling'!
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2536
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2537
canTab
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2538
    super canTab ifTrue:[
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2539
        ^ editView isNil
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2540
    ].
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2541
    ^ false
2101
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  2542
!
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  2543
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  2544
wantsFocusWithPointerEnter
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  2545
    "views which like to take the keyboard focus
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  2546
     when the pointer enters can do so by redefining this
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  2547
     to return true"
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  2548
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  2549
    |pref|
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  2550
2237
1da5501b1248 bug fix in focus handling
ca
parents: 2226
diff changeset
  2551
    editView ifNotNil:[^ false].
1da5501b1248 bug fix in focus handling
ca
parents: 2226
diff changeset
  2552
2101
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  2553
    pref := UserPreferences current focusFollowsMouse.
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  2554
    (pref ~~ false
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  2555
    and:[(styleSheet at:#'selection.requestFocusOnPointerEnter' default:true)
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  2556
    ]) ifTrue:[
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  2557
        list size > 0 ifTrue:[
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  2558
            ^ true
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  2559
        ]
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  2560
    ].
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  2561
    ^ false
1665
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2562
! !
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2563
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2564
!DSVColumnView methodsFor:'gc operations'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2565
2488
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  2566
imageOnMyDevice:anImage
1100
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
  2567
    "associate image to device and clear pixel mask; returns the new image.
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
  2568
    "
2488
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  2569
    |deviceImage|
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  2570
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  2571
    anImage isNil ifTrue:[^ anImage].
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  2572
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  2573
    deviceImage := anImage onDevice:device.
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  2574
    deviceImage isImage ifTrue:[
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  2575
        deviceImage clearMaskedPixels.
1100
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
  2576
    ].
2488
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  2577
    ^ deviceImage
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  2578
"/    |image|
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  2579
"/
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  2580
"/    (image := anImage) notNil ifTrue:[
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  2581
"/        image device ~~ device ifTrue:[
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  2582
"/            image := image copy onDevice:device.
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  2583
"/        ].
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  2584
"/        image isImage ifTrue:[
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  2585
"/            image := image clearMaskedPixels
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  2586
"/        ]
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  2587
"/    ].
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  2588
"/    ^ image
1100
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
  2589
!
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
  2590
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2591
registerImage:anImage key:aKey
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2592
    "any row can register an image with a unique identifier a key symbol
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2593
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2594
    |img|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2595
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2596
    (img := registererImages at:aKey ifAbsent:nil) notNil ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2597
        ^ img
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2598
    ].
2488
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  2599
    img := self imageOnMyDevice:anImage.
567
01083cbb4bae checkin from browser
ca
parents: 563
diff changeset
  2600
    registererImages at:aKey put:img.
01083cbb4bae checkin from browser
ca
parents: 563
diff changeset
  2601
    ^ img
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2602
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2603
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2604
registeredImageAt:aKey
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2605
    "any row can register an image with a unique identifier
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2606
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2607
    ^ registererImages at:aKey ifAbsent:nil
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2608
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2609
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2610
releaseAllRegisteredImages
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2611
    "release all registered images
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2612
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2613
    registererImages := IdentityDictionary new.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2614
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2615
2500
1477b0a5a918 method category rename
Claus Gittinger <cg@exept.de>
parents: 2488
diff changeset
  2616
!DSVColumnView methodsFor:'initialization & release'!
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2617
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2618
create
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2619
    "set color on device
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2620
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2621
    super create.
2151
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  2622
1480
51dd0cc6ea11 #on: -> #onDevice:
Claus Gittinger <cg@exept.de>
parents: 1461
diff changeset
  2623
    fgColor     := fgColor     onDevice:device.
51dd0cc6ea11 #on: -> #onDevice:
Claus Gittinger <cg@exept.de>
parents: 1461
diff changeset
  2624
    bgColor     := bgColor     onDevice:device.
2151
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  2625
    selectionForegroundColor := selectionForegroundColor onDevice:device.
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  2626
    selectionBackgroundColor := selectionBackgroundColor onDevice:device.
1480
51dd0cc6ea11 #on: -> #onDevice:
Claus Gittinger <cg@exept.de>
parents: 1461
diff changeset
  2627
51dd0cc6ea11 #on: -> #onDevice:
Claus Gittinger <cg@exept.de>
parents: 1461
diff changeset
  2628
    buttonShadowColor := buttonShadowColor onDevice:device.
51dd0cc6ea11 #on: -> #onDevice:
Claus Gittinger <cg@exept.de>
parents: 1461
diff changeset
  2629
    buttonLightColor  := buttonLightColor onDevice:device.
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2630
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2631
    buttonHalfShadowColor notNil ifTrue:[
1480
51dd0cc6ea11 #on: -> #onDevice:
Claus Gittinger <cg@exept.de>
parents: 1461
diff changeset
  2632
        buttonHalfShadowColor := buttonHalfShadowColor onDevice:device
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2633
    ].
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2634
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2635
    buttonHalfLightColor notNil ifTrue:[
1480
51dd0cc6ea11 #on: -> #onDevice:
Claus Gittinger <cg@exept.de>
parents: 1461
diff changeset
  2636
        buttonHalfLightColor := buttonHalfLightColor onDevice:device
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2637
    ].
2488
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  2638
    rowSelectorForm         := self imageOnMyDevice:rowSelectorForm.
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  2639
    checkToggleActiveImage  := self imageOnMyDevice:checkToggleActiveImage.
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  2640
    checkTogglePassiveImage := self imageOnMyDevice:checkTogglePassiveImage.
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  2641
    comboButtonForm         := self imageOnMyDevice:comboButtonForm.
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  2642
    checkToggleForm         := self imageOnMyDevice:checkToggleForm.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2643
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2644
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2645
initStyle
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2646
    "setup colors
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2647
    "
1100
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
  2648
    |button widget|
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2649
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2650
    super initStyle.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2651
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2652
    DefaultForegroundColor isNil ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2653
        self class updateStyleCache
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2654
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2655
    fgColor     := DefaultForegroundColor.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2656
    bgColor     := DefaultBackgroundColor.
2151
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  2657
    selectionForegroundColor := DefaultHilightForegroundColor.
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  2658
    selectionBackgroundColor := DefaultHilightBackgroundColor.
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2659
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2660
    shadowColor isNil ifTrue:[
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2661
        shadowColor := Color grayPercent:40.
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2662
    ].
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2663
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2664
    lightColor isNil ifTrue:[
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2665
        lightColor := Color grayPercent:75
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2666
    ].
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2667
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2668
    buttonLightColor    := ButtonLightColor  ? lightColor.
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2669
    buttonShadowColor   := ButtonShadowColor ? shadowColor.
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2670
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2671
    (ButtonEdgeStyle == #soft) ifTrue:[
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2672
        buttonHalfShadowColor := ButtonHalfShadowColor.
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2673
        buttonHalfLightColor  := ButtonHalfLightColor.
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2674
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2675
        buttonHalfShadowColor isNil ifTrue:[
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2676
            buttonHalfShadowColor := buttonShadowColor lightened
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2677
        ]
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2678
    ].
1490
9c418c3aaf49 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
  2679
9c418c3aaf49 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
  2680
    buttonHalfShadowColor isNil ifTrue:[
9c418c3aaf49 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
  2681
        buttonHalfShadowColor := Color gray
9c418c3aaf49 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
  2682
    ].
9c418c3aaf49 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
  2683
1100
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
  2684
    rowSelectorForm         := self class rowSelector.
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
  2685
    checkToggleActiveImage  := CheckToggleActiveImage.
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
  2686
    checkTogglePassiveImage := CheckTogglePassiveImage.
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
  2687
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  2688
    ComboButtonForm isNil ifTrue:[
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  2689
        widget            := ComboListView new.
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  2690
        button            := widget menuButton.
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  2691
        ComboButtonForm   := button label.
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  2692
        ComboButtonLevel  := button offLevel.
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  2693
        ComboButtonExtent := (button preferredExtent x) @ (widget preferredExtent y).
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  2694
    ].
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  2695
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  2696
    CheckToggleForm isNil ifTrue:[
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  2697
        widget            := CheckToggle new.
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  2698
        CheckToggleForm   := widget label.
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  2699
        CheckToggleLevel  := widget offLevel.
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  2700
        CheckToggleExtent := widget preferredExtent.
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  2701
    ].
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  2702
    comboButtonForm   := ComboButtonForm.
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  2703
    comboButtonLevel  := ComboButtonLevel.
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  2704
    comboButtonExtent := ComboButtonExtent.
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  2705
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  2706
    checkToggleForm   := CheckToggleForm.
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  2707
    checkToggleLevel  := CheckToggleLevel.
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  2708
    checkToggleExtent := CheckToggleExtent.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2709
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2710
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2711
initialize
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2712
    "set default attributes
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2713
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2714
    super initialize.
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  2715
    self lineWidth:0.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  2716
1668
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
  2717
    tabIntern          := true.
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  2718
    useIndex           := true.
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2719
    viewOrigin         := 0@0.
1480
51dd0cc6ea11 #on: -> #onDevice:
Claus Gittinger <cg@exept.de>
parents: 1461
diff changeset
  2720
    font               := font onDevice:device.
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2721
    rowHeight          := font height.
2592
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2722
    minRowHeight       := rowHeight.
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2723
    multipleSelectOk   := false.                        "/ multiselect disabled
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2724
    selectedRowIndex   := selectedColIndex  := 0.       "/ no selection
1778
51bbd960baf9 change registeredIcons from IdentityDictionary to Dictionary
ca
parents: 1776
diff changeset
  2725
    registererImages   := Dictionary new.
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2726
    columnDescriptors  := #().
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2727
    beDependentOfRows  := false.
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2728
    verticalSpacing    := self class verticalSpacing.
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2729
    horizontalSpacing  := self class horizontalSpacing.
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2730
    colorMap           := Dictionary new.
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2731
    catchChangeEvents  := false.
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2732
    rowFontAscent      := 1.                            "/ dummy initialization
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2733
    separatorSize      := 1.                            "/ separators mode 2D
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2734
    selectRowOnDefault := true.
1749
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  2735
    autoScroll         := true.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2736
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2737
705
d9ebfd72d506 set selection if exists after mapping
tz
parents: 667
diff changeset
  2738
mapped
d9ebfd72d506 set selection if exists after mapping
tz
parents: 667
diff changeset
  2739
    "set selection if exists after mapping
d9ebfd72d506 set selection if exists after mapping
tz
parents: 667
diff changeset
  2740
    "
2032
6eb610caad85 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2031
diff changeset
  2741
"/    |idx|
6eb610caad85 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2031
diff changeset
  2742
"/
705
d9ebfd72d506 set selection if exists after mapping
tz
parents: 667
diff changeset
  2743
    super mapped.
2011
128778a6a31d dont scroll to top on mapped
Claus Gittinger <cg@exept.de>
parents: 1971
diff changeset
  2744
"/    needFitColumns == true ifTrue:[
128778a6a31d dont scroll to top on mapped
Claus Gittinger <cg@exept.de>
parents: 1971
diff changeset
  2745
"/        self fitColumns
128778a6a31d dont scroll to top on mapped
Claus Gittinger <cg@exept.de>
parents: 1971
diff changeset
  2746
"/    ].
128778a6a31d dont scroll to top on mapped
Claus Gittinger <cg@exept.de>
parents: 1971
diff changeset
  2747
"/
128778a6a31d dont scroll to top on mapped
Claus Gittinger <cg@exept.de>
parents: 1971
diff changeset
  2748
"/    (idx := self firstIndexSelected) ~~ 0 ifTrue:[
128778a6a31d dont scroll to top on mapped
Claus Gittinger <cg@exept.de>
parents: 1971
diff changeset
  2749
"/        self scrollToRowAt:idx colAt:0.        
128778a6a31d dont scroll to top on mapped
Claus Gittinger <cg@exept.de>
parents: 1971
diff changeset
  2750
"/    ].
705
d9ebfd72d506 set selection if exists after mapping
tz
parents: 667
diff changeset
  2751
!
d9ebfd72d506 set selection if exists after mapping
tz
parents: 667
diff changeset
  2752
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2753
realize
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2754
    "recompute contents and fit columns to view
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2755
    "
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  2756
    |selection|
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  2757
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2758
    self  bitGravity:#NorthWest.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2759
    self  recomputeHeightOfContents.
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  2760
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  2761
    selection := 0.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  2762
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  2763
    model notNil ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  2764
        (model respondsTo:#selectionIndex) ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  2765
            selection := model selectionIndex
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  2766
        ] ifFalse:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  2767
            model == listHolder ifFalse:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  2768
                selection := model value
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  2769
            ]
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  2770
        ]
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  2771
    ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  2772
    self selectRowIndex:selection.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  2773
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2774
    super realize.
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2775
    self  fitColumns.
2011
128778a6a31d dont scroll to top on mapped
Claus Gittinger <cg@exept.de>
parents: 1971
diff changeset
  2776
!
128778a6a31d dont scroll to top on mapped
Claus Gittinger <cg@exept.de>
parents: 1971
diff changeset
  2777
128778a6a31d dont scroll to top on mapped
Claus Gittinger <cg@exept.de>
parents: 1971
diff changeset
  2778
realized
128778a6a31d dont scroll to top on mapped
Claus Gittinger <cg@exept.de>
parents: 1971
diff changeset
  2779
    "set selection if exists after mapping
128778a6a31d dont scroll to top on mapped
Claus Gittinger <cg@exept.de>
parents: 1971
diff changeset
  2780
    "
128778a6a31d dont scroll to top on mapped
Claus Gittinger <cg@exept.de>
parents: 1971
diff changeset
  2781
    |idx|
128778a6a31d dont scroll to top on mapped
Claus Gittinger <cg@exept.de>
parents: 1971
diff changeset
  2782
128778a6a31d dont scroll to top on mapped
Claus Gittinger <cg@exept.de>
parents: 1971
diff changeset
  2783
    super realized.
128778a6a31d dont scroll to top on mapped
Claus Gittinger <cg@exept.de>
parents: 1971
diff changeset
  2784
128778a6a31d dont scroll to top on mapped
Claus Gittinger <cg@exept.de>
parents: 1971
diff changeset
  2785
    needFitColumns == true ifTrue:[
128778a6a31d dont scroll to top on mapped
Claus Gittinger <cg@exept.de>
parents: 1971
diff changeset
  2786
        self fitColumns
128778a6a31d dont scroll to top on mapped
Claus Gittinger <cg@exept.de>
parents: 1971
diff changeset
  2787
    ].
128778a6a31d dont scroll to top on mapped
Claus Gittinger <cg@exept.de>
parents: 1971
diff changeset
  2788
128778a6a31d dont scroll to top on mapped
Claus Gittinger <cg@exept.de>
parents: 1971
diff changeset
  2789
    (idx := self firstIndexSelected) ~~ 0 ifTrue:[
128778a6a31d dont scroll to top on mapped
Claus Gittinger <cg@exept.de>
parents: 1971
diff changeset
  2790
        self scrollToRowAt:idx colAt:0.        
128778a6a31d dont scroll to top on mapped
Claus Gittinger <cg@exept.de>
parents: 1971
diff changeset
  2791
    ].
2157
6cfdf247519a destroy - release
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
  2792
!
6cfdf247519a destroy - release
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
  2793
6cfdf247519a destroy - release
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
  2794
release
6cfdf247519a destroy - release
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
  2795
    "remove dependencies
6cfdf247519a destroy - release
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
  2796
    "
6cfdf247519a destroy - release
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
  2797
    self columnHolder:nil.
6cfdf247519a destroy - release
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
  2798
6cfdf247519a destroy - release
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
  2799
    listHolder    removeDependent:self.
6cfdf247519a destroy - release
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
  2800
6cfdf247519a destroy - release
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
  2801
    columnAdaptor isValueModel ifTrue:[
6cfdf247519a destroy - release
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
  2802
        columnAdaptor removeDependent:self
6cfdf247519a destroy - release
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
  2803
    ].
6cfdf247519a destroy - release
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
  2804
6cfdf247519a destroy - release
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
  2805
    self beDependentOfRows:false.
6cfdf247519a destroy - release
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
  2806
    super release
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2807
! !
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2808
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2809
!DSVColumnView methodsFor:'obsolete'!
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2810
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2811
has3Dsepartors
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2812
    "shouldn't be used any more
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2813
    "
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2814
    ^ self has3Dseparators
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2815
!
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2816
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2817
has3Dsepartors:aBool
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2818
    "shouldn't be used any more
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2819
    "
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2820
    self has3Dseparators:aBool
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2821
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2822
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2823
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2824
!DSVColumnView methodsFor:'private'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2825
1951
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  2826
anyColumnHasBackground
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  2827
    columnDescriptors isNil ifTrue:[^ false].
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  2828
    columnDescriptors do:[:eachCol |
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  2829
        |bg|
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  2830
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  2831
        bg := eachCol backgroundColor.
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  2832
        (bg notNil and:[bg isImageOrForm]) ifTrue:[^ true].
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  2833
        eachCol bgSelector notNil ifTrue:[^ true].
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  2834
    ].
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  2835
    ^ false.
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  2836
!
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  2837
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  2838
anyColumnHasPotentialNonConstantBackground
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  2839
    columnDescriptors isNil ifTrue:[^ false].
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  2840
    columnDescriptors do:[:eachCol | eachCol hasPotentialNonConstantBackground ifTrue:[^ true]].
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  2841
    ^ false.
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  2842
!
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  2843
1111
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2844
destroyEditView
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2845
    "destroy the edit view; release KeyboardForwarder
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2846
    "
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2847
    editView notNil ifTrue:[
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2848
        editView withAllSubViewsDo:[:aView|
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2849
            aView delegate:nil
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2850
        ].
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2851
        editView destroy.
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2852
        editView := nil.
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2853
        self windowGroup focusView:nil.
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2854
    ].
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2855
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2856
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2857
!
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2858
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2859
detectViewAt:aPoint in:aView
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
  2860
    "returns the view at a point
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
  2861
    "
2031
74c383e916b8 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2019
diff changeset
  2862
    aView isNil ifTrue:[^ nil].
2019
0d2757149700 extracted common code to detectViewAt:aPoint.
Claus Gittinger <cg@exept.de>
parents: 2011
diff changeset
  2863
    ^ aView detectViewAt:aPoint.
0d2757149700 extracted common code to detectViewAt:aPoint.
Claus Gittinger <cg@exept.de>
parents: 2011
diff changeset
  2864
0d2757149700 extracted common code to detectViewAt:aPoint.
Claus Gittinger <cg@exept.de>
parents: 2011
diff changeset
  2865
"/ cg: old code was (refactored to use common code)
0d2757149700 extracted common code to detectViewAt:aPoint.
Claus Gittinger <cg@exept.de>
parents: 2011
diff changeset
  2866
"/
0d2757149700 extracted common code to detectViewAt:aPoint.
Claus Gittinger <cg@exept.de>
parents: 2011
diff changeset
  2867
"/    |p|
0d2757149700 extracted common code to detectViewAt:aPoint.
Claus Gittinger <cg@exept.de>
parents: 2011
diff changeset
  2868
"/
0d2757149700 extracted common code to detectViewAt:aPoint.
Claus Gittinger <cg@exept.de>
parents: 2011
diff changeset
  2869
"/    (aView notNil and:[aView subViews notNil]) ifTrue:[
0d2757149700 extracted common code to detectViewAt:aPoint.
Claus Gittinger <cg@exept.de>
parents: 2011
diff changeset
  2870
"/        aView subViews do:[:sv|
0d2757149700 extracted common code to detectViewAt:aPoint.
Claus Gittinger <cg@exept.de>
parents: 2011
diff changeset
  2871
"/            p := device translatePoint:aPoint fromView:self toView:sv.
0d2757149700 extracted common code to detectViewAt:aPoint.
Claus Gittinger <cg@exept.de>
parents: 2011
diff changeset
  2872
"/
0d2757149700 extracted common code to detectViewAt:aPoint.
Claus Gittinger <cg@exept.de>
parents: 2011
diff changeset
  2873
"/            (p x >= 0 and:[p y >= 0 and:[p x <= sv width and:[p y <= sv height]]]) ifTrue:[
0d2757149700 extracted common code to detectViewAt:aPoint.
Claus Gittinger <cg@exept.de>
parents: 2011
diff changeset
  2874
"/                ^ self detectViewAt:aPoint in:sv
0d2757149700 extracted common code to detectViewAt:aPoint.
Claus Gittinger <cg@exept.de>
parents: 2011
diff changeset
  2875
"/            ]
0d2757149700 extracted common code to detectViewAt:aPoint.
Claus Gittinger <cg@exept.de>
parents: 2011
diff changeset
  2876
"/        ]
0d2757149700 extracted common code to detectViewAt:aPoint.
Claus Gittinger <cg@exept.de>
parents: 2011
diff changeset
  2877
"/    ].
0d2757149700 extracted common code to detectViewAt:aPoint.
Claus Gittinger <cg@exept.de>
parents: 2011
diff changeset
  2878
"/    ^ aView
0d2757149700 extracted common code to detectViewAt:aPoint.
Claus Gittinger <cg@exept.de>
parents: 2011
diff changeset
  2879
0d2757149700 extracted common code to detectViewAt:aPoint.
Claus Gittinger <cg@exept.de>
parents: 2011
diff changeset
  2880
    "Modified: / 10.10.2001 / 13:53:24 / cg"
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2881
!
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2882
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2883
fitColumns
1484
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
  2884
    "fit columns to view; 
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2885
    "
2319
b75af47412ff bug fix; if columns extent changed, update extent of editView
ca
parents: 2318
diff changeset
  2886
    |selectedColumn list width changed dX sz oldOrgX newOrgX|
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  2887
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  2888
    preferredExtent isNil ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  2889
        self preferredExtent.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  2890
    ].
1484
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
  2891
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
  2892
    columnDescriptors isEmpty ifTrue:[
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
  2893
        ^ self
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
  2894
    ].
1492
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
  2895
    width := 0.
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
  2896
    list  := OrderedCollection new.
1484
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
  2897
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
  2898
    columnDescriptors do:[:aCol|
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
  2899
        aCol canResize ifTrue:[
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
  2900
            changed := true.
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
  2901
            aCol invalidate.
1492
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
  2902
            aCol hasRelativeWidth ifFalse:[list add:aCol].
1484
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
  2903
        ].
1492
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
  2904
        width := width + aCol minWidth.
1484
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
  2905
    ].
1492
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
  2906
    preferredExtent x:width.
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
  2907
    width := self innerWidth - width.
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
  2908
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
  2909
    (list notEmpty and:[width > 0]) ifTrue:[
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
  2910
        sz := list size.
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
  2911
        width >= sz ifTrue:[
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
  2912
            dX := width // sz.
1484
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
  2913
            list do:[:aCol|aCol growWidth:dX].
1492
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
  2914
            width := width - (dX * sz).
1484
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
  2915
        ].
1492
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
  2916
        width ~~ 0 ifTrue:[list last growWidth:width].
1484
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
  2917
    ].
1492
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
  2918
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  2919
    shown ifTrue:[
1492
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
  2920
        self      invalidate.
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  2921
        labelView invalidate.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2922
1498
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  2923
        (oldOrgX := viewOrigin x) ~~ 0 ifTrue:[
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  2924
            "/ UPDATE VIEW-ORIGIN X
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  2925
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  2926
            width   := preferredExtent x.
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  2927
            newOrgX := (width - self innerWidth) max:0.
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  2928
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  2929
            newOrgX < oldOrgX ifTrue:[
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  2930
                self originWillChange.
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  2931
                viewOrigin := newOrgX @ (viewOrigin y).
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  2932
                self originChanged:((newOrgX - oldOrgX) @ 0).
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  2933
            ]
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  2934
        ].
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  2935
1930
31274c3264d6 do not scroll to selection when a column-size is changed
Claus Gittinger <cg@exept.de>
parents: 1926
diff changeset
  2936
        "/ cg: do not scroll to selection when a column-size is changed
2319
b75af47412ff bug fix; if columns extent changed, update extent of editView
ca
parents: 2318
diff changeset
  2937
1930
31274c3264d6 do not scroll to selection when a column-size is changed
Claus Gittinger <cg@exept.de>
parents: 1926
diff changeset
  2938
"/        self hasSelection ifTrue:[
31274c3264d6 do not scroll to selection when a column-size is changed
Claus Gittinger <cg@exept.de>
parents: 1926
diff changeset
  2939
"/            editView notNil ifTrue:[
31274c3264d6 do not scroll to selection when a column-size is changed
Claus Gittinger <cg@exept.de>
parents: 1926
diff changeset
  2940
"/                editView width:(self selectedColumn width - (2 * separatorSize)).
31274c3264d6 do not scroll to selection when a column-size is changed
Claus Gittinger <cg@exept.de>
parents: 1926
diff changeset
  2941
"/            ].
31274c3264d6 do not scroll to selection when a column-size is changed
Claus Gittinger <cg@exept.de>
parents: 1926
diff changeset
  2942
"/            self scrollToSelection.
31274c3264d6 do not scroll to selection when a column-size is changed
Claus Gittinger <cg@exept.de>
parents: 1926
diff changeset
  2943
"/        ].
2319
b75af47412ff bug fix; if columns extent changed, update extent of editView
ca
parents: 2318
diff changeset
  2944
b75af47412ff bug fix; if columns extent changed, update extent of editView
ca
parents: 2318
diff changeset
  2945
        "/ ca: but resize the editView
b75af47412ff bug fix; if columns extent changed, update extent of editView
ca
parents: 2318
diff changeset
  2946
b75af47412ff bug fix; if columns extent changed, update extent of editView
ca
parents: 2318
diff changeset
  2947
        editView notNil ifTrue:[
b75af47412ff bug fix; if columns extent changed, update extent of editView
ca
parents: 2318
diff changeset
  2948
            selectedColumn := self selectedColumn.
b75af47412ff bug fix; if columns extent changed, update extent of editView
ca
parents: 2318
diff changeset
  2949
            selectedColumn notNil ifTrue:[
b75af47412ff bug fix; if columns extent changed, update extent of editView
ca
parents: 2318
diff changeset
  2950
                editView width:(selectedColumn width - (2 * separatorSize)).
b75af47412ff bug fix; if columns extent changed, update extent of editView
ca
parents: 2318
diff changeset
  2951
            ]
b75af47412ff bug fix; if columns extent changed, update extent of editView
ca
parents: 2318
diff changeset
  2952
        ].
b75af47412ff bug fix; if columns extent changed, update extent of editView
ca
parents: 2318
diff changeset
  2953
1498
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  2954
        self contentsChanged.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2955
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2956
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2957
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2958
maxViewOriginY
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2959
    "returns the maximum possible y of the view origin
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2960
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2961
    |y|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2962
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2963
    y := self heightOfContents - self innerHeight.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2964
  ^ y max:0
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2965
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2966
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2967
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2968
updateEditViewOrigin
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2969
    "update origin of the editView
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2970
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2971
    |x y|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2972
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2973
    editView notNil ifTrue:[
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2974
        y := self yVisibleOfRowNr:(self firstIndexSelected).
1498
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  2975
        x := self xVisibleOfColNr:selectedColIndex.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2976
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2977
        editView origin:(x @ y + separatorSize).
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2978
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2979
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2980
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2981
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2982
xVisibleOfColNr:aColNr
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2983
    "returns visible x assigned to a column number
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2984
    "
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  2985
    |x
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  2986
     end "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  2987
    |
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2988
    x := margin - viewOrigin x.
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  2989
1498
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  2990
    aColNr > 1 ifTrue:[
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  2991
        end := aColNr - 1.
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  2992
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  2993
        columnDescriptors from:1 to:end do:[:aCol|
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  2994
            x := x + aCol width
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  2995
        ]
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  2996
    ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2997
  ^ x
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2998
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2999
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3000
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3001
xVisibleToColNr:x
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3002
    "returns the column number assigned to a physical x or nil
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3003
    "
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3004
    |x0
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3005
     nr "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3006
    |
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3007
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3008
    x0 := x + viewOrigin x - margin.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3009
    nr := 1.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3010
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3011
    columnDescriptors do:[:aCol|
1951
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  3012
        x0 := x0 - aCol width.
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  3013
        x0 <= 0 ifTrue:[^ nr].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3014
        nr := nr + 1.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3015
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3016
    ^ nil.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3017
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3018
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3019
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3020
yVisibleOfRowNr:aRowNr
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3021
    "returns visible y assigned to the row number
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3022
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3023
    ^ (aRowNr - 1) * rowHeight + margin - viewOrigin y
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3024
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3025
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3026
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3027
yVisibleToRowNr:y
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3028
    "returns the row number assigned to a physical y or nil
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3029
    "
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3030
    |rowNr|
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3031
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3032
    rowNr := (y + viewOrigin y - margin) // rowHeight + 1.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3033
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3034
    (rowNr between:1 and:(list size)) ifTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3035
        ^ rowNr
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3036
    ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3037
    ^ nil
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3038
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3039
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3040
!DSVColumnView methodsFor:'queries'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3041
1149
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  3042
hasOpenEditor
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  3043
    ^ editView notNil
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  3044
!
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  3045
563
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  3046
indexOfFirstRowShown
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  3047
    "returns index of first row shown
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  3048
    "
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  3049
    |idx|
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  3050
1498
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  3051
    idx := (viewOrigin y // rowHeight) + 1.
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3052
  ^ (idx <= list size) ifTrue:[idx] ifFalse:[0]
563
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  3053
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  3054
!
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  3055
1805
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
  3056
isEnabled
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
  3057
    ^ enableChannel value ~~ false
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
  3058
!
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
  3059
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  3060
isRowSelectable:aRowNumber
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  3061
    "returne true if a row number is selectable
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  3062
    "
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  3063
    (aRowNumber notNil and:[aRowNumber ~~ 0]) ifTrue:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  3064
        selectConditionBlock isNil ifTrue:[^ true].
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  3065
        ^ (selectConditionBlock value:aRowNumber)
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  3066
    ].
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  3067
    ^ false
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  3068
!
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  3069
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3070
numberOfColumns
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3071
    "returns number of columns
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3072
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3073
    ^ columnDescriptors size
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3074
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3075
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3076
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3077
numberOfRows
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3078
    "returns number of raws
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3079
    "
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3080
    ^ list size
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3081
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3082
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3083
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3084
rowHeight
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3085
    "get the height of the highest row in pixels
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3086
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3087
    ^ rowHeight
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3088
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3089
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3090
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3091
separatorSize
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3092
    "returns vertical/horizontal size of a separator dependent on the
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3093
     3D effect.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3094
    "
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3095
    ^ separatorSize
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3096
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3097
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3098
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3099
size
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3100
    "returns number of raws
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3101
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3102
    ^ list size
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3103
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3104
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3105
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3106
!DSVColumnView methodsFor:'recomputation'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3107
647
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  3108
hasPreferredExtent
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  3109
    "returns true if preferred extent is accumulated
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  3110
    "
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  3111
    ^ preferredExtent notNil
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  3112
!
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  3113
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3114
preferredExtent
647
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  3115
    "recompute preferred extent; raise notification
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3116
    "
2592
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  3117
    |x|
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3118
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3119
    preferredExtent notNil ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3120
        ^ preferredExtent
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3121
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3122
    x := 3.
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3123
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3124
    columnDescriptors do:[:aCol|
2592
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  3125
        minRowHeight := (aCol heightOfHighestRow) max:minRowHeight.
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3126
        x := x + (aCol minWidth).
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3127
    ].
2592
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  3128
    rowHeight       := (minRowHeight + separatorSize + verticalSpacing + verticalSpacing + 1) // 2 * 2.
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3129
    preferredExtent := x @ (list size * rowHeight).
1201
a81cf27650bd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1187
diff changeset
  3130
    rowFontAscent   := font ascent.
a81cf27650bd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1187
diff changeset
  3131
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3132
  ^ preferredExtent
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3133
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3134
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3135
preferredExtentChanged
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
  3136
    "called if the preffered extent changed
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
  3137
    "
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3138
    |x "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3139
     y "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3140
    |
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3141
    y := viewOrigin y.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3142
    x := viewOrigin x.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3143
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3144
    (y ~~ 0 or:[x ~~ 0]) ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3145
        self originWillChange.
1948
9ed8131d94bb viewOrigin fix (when list is set to nil while not shown);
Claus Gittinger <cg@exept.de>
parents: 1947
diff changeset
  3146
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3147
        viewOrigin := 0 @ 0.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3148
        preferredExtent := nil.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3149
        self originChanged:(x negated  @ y negated).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3150
    ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3151
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3152
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3153
recomputeHeightOfContents
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
  3154
    "recompute height of contents( scrolling )
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
  3155
    "
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3156
    preferredExtent notNil ifTrue:[
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3157
        preferredExtent y:(rowHeight * list size)
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3158
    ] ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3159
        self preferredExtent
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3160
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3161
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3162
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3163
!DSVColumnView methodsFor:'scroller interface'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3164
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3165
heightOfContents
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3166
    "return the height of the contents in pixels
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3167
    "
1498
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  3168
    preferredExtent isNil ifTrue:[
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  3169
        self preferredExtent
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  3170
    ].
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  3171
    ^ preferredExtent y
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3172
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3173
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3174
innerHeight
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3175
    "returns the inner height of the contents shown
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3176
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3177
    ^ height - margin - margin
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3178
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3179
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3180
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3181
verticalScrollStep
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3182
    "return the amount to scroll when stepping up/down.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3183
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3184
    ^ rowHeight
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3185
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3186
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3187
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3188
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3189
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3190
viewOrigin
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3191
    "return the viewOrigin; thats the coordinate of the contents 
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3192
     which is shown topLeft in the view.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3193
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3194
    ^ viewOrigin
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3195
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3196
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3197
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3198
widthOfContents
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3199
    "return the width of the contents in pixels
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3200
    "
647
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  3201
    preferredExtent isNil ifTrue:[
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  3202
        self preferredExtent
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  3203
    ].
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  3204
    ^ preferredExtent x
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3205
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3206
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3207
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3208
xOriginOfContents
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3209
    "return the horizontal origin of the contents in pixels
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3210
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3211
    ^ viewOrigin x 
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3212
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3213
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3214
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3215
yOriginOfContents
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3216
    "return the vertical origin of the contents in pixels
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3217
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3218
    ^ viewOrigin y
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3219
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3220
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3221
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3222
!DSVColumnView methodsFor:'scrolling'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3223
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3224
scrollTo:anOrigin redraw:doRedraw
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3225
    "change origin to have newOrigin be visible at the top-left.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3226
    "
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3227
    |newOrg dltOrg wg
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3228
     h       "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3229
     w       "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3230
     x       "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3231
     x0      "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3232
     x1      "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3233
     y       "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3234
     y0      "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3235
     y1      "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3236
     dX      "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3237
     dY      "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3238
     innerHG "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3239
     innerWT "{ Class:SmallInteger }"
2146
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3240
     lMargin
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3241
    |
2146
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3242
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3243
    shown ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3244
        ^ self
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3245
    ].
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  3246
1448
b389b8c76479 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1416
diff changeset
  3247
    (wg := self windowGroup) notNil ifTrue:[
b389b8c76479 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1416
diff changeset
  3248
        wg processRealExposeEventsFor:self.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3249
    ].
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  3250
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3251
    innerWT := self innerWidth.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3252
    innerHG := self innerHeight.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3253
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3254
    h := viewOrigin y.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3255
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3256
    (y := anOrigin y) > h ifTrue:[              "/ end of contents
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3257
        y > (dY := self maxViewOriginY) ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3258
            y := dY max:h
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3259
        ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3260
    ] ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3261
        y := y max:0.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3262
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3263
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3264
    (x := anOrigin x) > 0 ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3265
        x := x min:(self widthOfContents - innerWT).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3266
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3267
    x      := x max:0.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3268
    newOrg := (x @ y).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3269
    dltOrg := newOrg - viewOrigin.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3270
    dX     := dltOrg x.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3271
    dY     := dltOrg y.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3272
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3273
    (dX == 0 and:[dY == 0]) ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3274
        ^ self
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3275
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3276
    self originWillChange.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3277
    viewOrigin := newOrg.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3278
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3279
    doRedraw ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3280
        ^ self originChanged:dltOrg
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3281
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3282
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3283
    dY ~~ 0 ifTrue:[                            "/ SCROLL VERTICAL
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3284
        dY := dY abs.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3285
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3286
        (dX ~~ 0 or:[innerHG - dY < 20]) ifTrue:[
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3287
            self invalidate.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3288
        ] ifFalse:[                             "/ COPY VERTICAL
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3289
            y0 := y1 := margin + dY.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3290
            h  := innerHG - dY.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3291
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3292
            dltOrg y < 0 ifTrue:[y0 := margin. y := y0]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3293
                        ifFalse:[y1 := margin. y := y1 + h].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3294
1460
2fe0ac4bc4d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1448
diff changeset
  3295
            self copyFrom:self x:margin y:y0 toX:margin y:y1 width:innerWT height:h async:false.
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3296
            self invalidateX:margin y:y width:innerWT height:(innerHG - h).
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3297
        ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3298
    ] ifFalse:[                                 "/ SCROLL HORIZONTAL
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3299
        dX := dX abs.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3300
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3301
        innerWT - dX < 20 ifTrue:[
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3302
            labelView invalidate.
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3303
            self invalidate.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3304
        ] ifFalse:[                             "/ COPY HORIZONTAL
643
bfd44867347f adding: bug fix
ca
parents: 642
diff changeset
  3305
            x0 := x1 := dX + margin.
2146
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3306
            w  := width - dX.
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3307
            lMargin := labelView margin.
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3308
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3309
            dltOrg x < 0 ifTrue:[
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3310
                " ->"
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3311
                x0 := x := margin. 
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3312
                self copyFrom:self x:margin y:margin toX:margin+dX y:margin width:innerWT-dX height:innerHG async:false.
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3313
                self invalidateX:margin y:margin width:dX height:innerHG.
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3314
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3315
                labelView notNil ifTrue:[
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3316
                    labelView copyFrom:labelView x:lMargin y:lMargin toX:lMargin+dX y:lMargin width:labelView innerWidth-dX height:labelView innerHeight async:false.
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3317
                    labelView invalidateX:lMargin y:lMargin width:dX height:labelView innerHeight.
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3318
                ].
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3319
            ] ifFalse:[
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3320
                x1 := margin. x := w.
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3321
                self copyFrom:self x:margin+dX y:margin toX:margin y:margin width:innerWT-dX height:innerHG async:false.
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3322
                self invalidateX:width-margin-dX y:margin width:dX height:innerHG.
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3323
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3324
                labelView notNil ifTrue:[
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3325
                    labelView copyFrom:labelView x:lMargin+dX y:lMargin toX:lMargin y:lMargin width:labelView innerWidth-dX height:labelView innerHeight async:false.
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3326
                    labelView invalidateX:labelView width-lMargin-dX y:lMargin width:dX height:labelView innerHeight.
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3327
                ].
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3328
            ].
2146
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3329
            labelView repairDamage.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3330
        ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3331
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3332
    self originChanged:dltOrg.
1123
ea32a2e3d44d care for sensor becoming nil while handling exposeEvents
Claus Gittinger <cg@exept.de>
parents: 1115
diff changeset
  3333
2458
0411397ef0a2 readraw after scroll: process expose events.
Claus Gittinger <cg@exept.de>
parents: 2445
diff changeset
  3334
    wg notNil ifTrue:[
0411397ef0a2 readraw after scroll: process expose events.
Claus Gittinger <cg@exept.de>
parents: 2445
diff changeset
  3335
        wg processRealExposeEventsFor:self.
0411397ef0a2 readraw after scroll: process expose events.
Claus Gittinger <cg@exept.de>
parents: 2445
diff changeset
  3336
    ].
0411397ef0a2 readraw after scroll: process expose events.
Claus Gittinger <cg@exept.de>
parents: 2445
diff changeset
  3337
1123
ea32a2e3d44d care for sensor becoming nil while handling exposeEvents
Claus Gittinger <cg@exept.de>
parents: 1115
diff changeset
  3338
    "Modified: / 7.9.1998 / 16:39:49 / cg"
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3339
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3340
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3341
scrollToRowAt:aRowNr colAt:aColNr
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3342
    "make row at a row number in column at a column number visible
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3343
    "
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3344
    |x  "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3345
     y  "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3346
     l  "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3347
     dY "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3348
     dX "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3349
    |
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3350
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3351
    (    (aRowNr between:1 and:(list size))
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3352
     and:[aColNr between:0 and:(columnDescriptors size)]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3353
    ) ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3354
        ^ self
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3355
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3356
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3357
    dY := dX := 0.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3358
    y  := self yVisibleOfRowNr:aRowNr.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3359
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3360
    y < margin ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3361
        dY := margin - y.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3362
    ] ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3363
        y := y + rowHeight.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3364
        l := height - margin.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3365
        y > l ifTrue:[dY := l - y]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3366
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3367
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3368
    aColNr == 0 ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3369
        dY == 0 ifTrue:[^ self].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3370
        dX := 0.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3371
    ] ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3372
        x  := self xVisibleOfColNr:aColNr.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3373
1163
f46f69609c53 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1149
diff changeset
  3374
        x <= margin ifTrue:[
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3375
            dX := margin - x
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3376
        ] ifFalse:[
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3377
            x := x + (columnDescriptors at:aColNr) width.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3378
            l := width - margin.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3379
            x > l ifTrue:[dX := l - x]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3380
        ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3381
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3382
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3383
    (dX == 0 and:[dY == 0]) ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3384
        self scrollTo:(viewOrigin - (dX @ dY)).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3385
    ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3386
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3387
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3388
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3389
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3390
scrollToSelection
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3391
    "make selection visible
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3392
    "
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3393
    |rowNr|
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3394
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3395
    (rowNr := self firstIndexSelected) ~~ 0 ifTrue:[
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3396
        self scrollToRowAt:rowNr colAt:selectedColIndex
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3397
    ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3398
1506
4935ddbc8f6e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1498
diff changeset
  3399
!
4935ddbc8f6e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1498
diff changeset
  3400
4935ddbc8f6e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1498
diff changeset
  3401
scrollVerticalTo:aPixelOffset
4935ddbc8f6e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1498
diff changeset
  3402
    "change origin to make aPixelOffset be the top line"
4935ddbc8f6e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1498
diff changeset
  3403
4935ddbc8f6e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1498
diff changeset
  3404
    |orgX orgY|
4935ddbc8f6e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1498
diff changeset
  3405
4935ddbc8f6e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1498
diff changeset
  3406
    orgX := viewOrigin x.
4935ddbc8f6e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1498
diff changeset
  3407
    orgY := (aPixelOffset + rowHeight - 1) // rowHeight * rowHeight.
4935ddbc8f6e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1498
diff changeset
  3408
  ^ self scrollTo:(orgX @ orgY).
4935ddbc8f6e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1498
diff changeset
  3409
1749
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  3410
!
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  3411
2670
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  3412
startAutoScroll:aSelectorOrBlock distance:aDistance
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  3413
    "setup for auto-scroll (when button-press-moving below/above view);
1749
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  3414
     - timeDelta for scroll is computed from distance
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  3415
    "
2670
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  3416
    |timeDelta scrollBlock|
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  3417
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  3418
    autoScroll ifFalse:[
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  3419
        self stopAutoScroll.
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  3420
        ^ self
1749
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  3421
    ].
2670
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  3422
1749
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  3423
    autoScrollBlock notNil ifTrue:[
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  3424
        Processor removeTimedBlock:autoScrollBlock.
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  3425
    ] ifFalse:[
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  3426
        self compressMotionEvents:false.
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  3427
    ].
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  3428
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  3429
    timeDelta := 0.5 / (aDistance abs).
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  3430
2670
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  3431
    scrollBlock := 
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  3432
        [
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  3433
            aSelectorOrBlock isSymbol ifTrue:[
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  3434
                self perform:aSelectorOrBlock.
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  3435
            ] ifFalse:[
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  3436
                aSelectorOrBlock value
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  3437
            ].
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  3438
            autoScrollBlock notNil ifTrue:[
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  3439
                Processor addTimedBlock:autoScrollBlock afterSeconds:timeDelta.
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  3440
            ]
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  3441
        ].
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  3442
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  3443
    autoScrollBlock := [self sensor pushUserEvent:#value for:scrollBlock].
1749
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  3444
    Processor addTimedBlock:autoScrollBlock afterSeconds:timeDelta.
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  3445
!
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  3446
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  3447
stopAutoScroll
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  3448
    "stop any autoScroll
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  3449
    "
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  3450
    autoScrollBlock notNil ifTrue:[
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  3451
        Processor removeTimedBlock:autoScrollBlock.
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  3452
        autoScrollBlock := nil.
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  3453
        self compressMotionEvents:true.
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  3454
    ].
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  3455
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  3456
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3457
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3458
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3459
!DSVColumnView methodsFor:'selection'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3460
2363
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3461
addRowToSelection:aRowNr
2370
8d1fadf4e4f6 #addRowToSelection: omit redraws
ca
parents: 2363
diff changeset
  3462
    "add a row to the selection
8d1fadf4e4f6 #addRowToSelection: omit redraws
ca
parents: 2363
diff changeset
  3463
     if a column is selected, the column will be closed
8d1fadf4e4f6 #addRowToSelection: omit redraws
ca
parents: 2363
diff changeset
  3464
    "
8d1fadf4e4f6 #addRowToSelection: omit redraws
ca
parents: 2363
diff changeset
  3465
    |newSelection|
8d1fadf4e4f6 #addRowToSelection: omit redraws
ca
parents: 2363
diff changeset
  3466
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  3467
    (self isRowSelectable:aRowNr) ifFalse:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  3468
        ^ self
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  3469
    ].
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  3470
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3471
    self numberOfSelections == 0 ifTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3472
        self selectColIndex:0 rowIndex:aRowNr.
2370
8d1fadf4e4f6 #addRowToSelection: omit redraws
ca
parents: 2363
diff changeset
  3473
        ^ self
2363
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3474
    ].
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3475
    (self isInSelection:aRowNr) ifTrue:[^ self].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3476
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3477
    multipleSelectOk ifFalse:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3478
        self selectColIndex:0 rowIndex:aRowNr.    
2370
8d1fadf4e4f6 #addRowToSelection: omit redraws
ca
parents: 2363
diff changeset
  3479
        ^ self
8d1fadf4e4f6 #addRowToSelection: omit redraws
ca
parents: 2363
diff changeset
  3480
    ].
2371
2bc91b1b59a5 bugfix when adding to selection
ca
parents: 2370
diff changeset
  3481
    newSelection := selectedRowIndex copyWith:aRowNr.
2370
8d1fadf4e4f6 #addRowToSelection: omit redraws
ca
parents: 2363
diff changeset
  3482
8d1fadf4e4f6 #addRowToSelection: omit redraws
ca
parents: 2363
diff changeset
  3483
    selectedColIndex ~~ 0 ifTrue:[
8d1fadf4e4f6 #addRowToSelection: omit redraws
ca
parents: 2363
diff changeset
  3484
        self selectColIndex:0 rowIndex:newSelection.
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3485
    ] ifFalse:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3486
        selectedRowIndex := selectedRowIndex copyWith:aRowNr.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3487
        self invalidateRowAt:aRowNr.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3488
        self selectionChanged.
2370
8d1fadf4e4f6 #addRowToSelection: omit redraws
ca
parents: 2363
diff changeset
  3489
    ].
2363
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3490
!
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3491
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3492
deselect
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3493
    "deselect
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3494
    "
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3495
    self selectColIndex:0 rowIndex:0
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3496
!
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3497
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3498
firstIndexSelected
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3499
    "returns index of first row selected or 0
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3500
    "
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3501
    multipleSelectOk ifFalse:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3502
        ^ selectedRowIndex
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3503
    ].
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3504
    selectedRowIndex size ~~ 0 ifTrue:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3505
        ^ selectedRowIndex at:1
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3506
    ].
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3507
    ^ 0
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3508
!
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3509
2151
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  3510
hasRowSelection
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  3511
    "returns true if a selection exists, and its a complete row
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  3512
     (as opposed to either no selection, or a columnSelection)
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  3513
    "
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  3514
    ^ self hasSelection and:[selectedColIndex == 0]
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  3515
!
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  3516
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3517
hasSelection
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3518
    "returns true if a selection exists
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3519
    "
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3520
    ^ self numberOfSelections ~~ 0
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3521
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3522
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3523
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3524
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3525
isInSelection:aRowNr
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3526
    "return true, if row, aRowNr is in the selection
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3527
    "
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3528
    aRowNr ~~ 0 ifTrue:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3529
        multipleSelectOk ifFalse:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3530
            ^ aRowNr == selectedRowIndex
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3531
        ].
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3532
        selectedRowIndex size ~~ 0 ifTrue:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3533
            ^ selectedRowIndex includes:aRowNr
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3534
        ]
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3535
    ].
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3536
    ^ false
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3537
!
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3538
647
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  3539
isRowSelected:aRowNr
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  3540
    "return true, if row is in the selection
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  3541
    "
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  3542
    selectedColIndex == 0 ifTrue:[
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  3543
        ^ self isInSelection:aRowNr
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  3544
    ].
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  3545
    ^ false
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  3546
!
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  3547
2263
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  3548
isRowVisible:aRowNr
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  3549
    |y h|
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  3550
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  3551
    h := rowHeight.
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  3552
    y := self yVisibleOfRowNr:aRowNr.
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  3553
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  3554
    y < margin ifTrue:[
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  3555
        (h := h + y) <= margin ifTrue:[
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  3556
            ^ false
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  3557
        ].                                            
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  3558
    ] ifFalse:[
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  3559
        y >= (height-margin) ifTrue:[^ false].
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  3560
    ].
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  3561
    ^ true
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  3562
!
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  3563
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3564
isSelected:aRowNr inColumn:aColNr
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  3565
    "returns true if cell in a row; a row number, in a column, a column
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  3566
     number is selected.
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  3567
    "
1042
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
  3568
    multipleSelectOk ifFalse:[
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
  3569
        aRowNr ~~ selectedRowIndex ifTrue:[
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
  3570
            ^ false
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
  3571
        ]
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
  3572
    ] ifTrue:[
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
  3573
        (selectedRowIndex size ~~ 0 and:[selectedRowIndex includes:aRowNr]) ifFalse:[
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
  3574
            ^ false
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
  3575
        ]
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3576
    ].
1042
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
  3577
    ^ (selectedColIndex == 0 or:[selectedColIndex == aColNr])
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
  3578
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3579
!
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3580
2276
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  3581
isSelectionVisibleIn:anExtentPoint
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  3582
    self selectionIndicesDo:[:selRowNr |
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  3583
        |y|
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  3584
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  3585
        y := self yVisibleOfRowNr:selRowNr.
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  3586
        (y between:margin and:(anExtentPoint y - margin)) ifTrue:[^ true].
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  3587
    ].
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  3588
    ^ false.
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  3589
!
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  3590
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3591
lastIndexSelected
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3592
    "returns index of last row selected or 0
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3593
    "
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3594
    multipleSelectOk ifFalse:[
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3595
        ^ selectedRowIndex
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3596
    ].
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3597
    selectedRowIndex size ~~ 0 ifTrue:[
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3598
        ^ selectedRowIndex last
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3599
    ].
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3600
    ^ 0
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3601
!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3602
2363
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3603
makeLineVisible:aLine
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3604
    "scroll to make aLine visible
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3605
    "
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3606
    |colNr|
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3607
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3608
    aLine == 0 ifTrue:[^ self].
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3609
    (self isRowVisible:aLine) ifTrue:[^ self].
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3610
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3611
    (selectedColIndex notNil and:[selectedColIndex ~~ 0]) ifTrue:[
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3612
        colNr := selectedColIndex
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3613
    ] ifFalse:[
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3614
        colNr := 1
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3615
    ].
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3616
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3617
    self scrollToRowAt:aLine colAt:colNr
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3618
!
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3619
2246
5d59b5e2e00c makeSelectionVisible after #sizeChanged:
ca
parents: 2237
diff changeset
  3620
makeSelectionVisible
5d59b5e2e00c makeSelectionVisible after #sizeChanged:
ca
parents: 2237
diff changeset
  3621
    "scroll to make the selection line visible
5d59b5e2e00c makeSelectionVisible after #sizeChanged:
ca
parents: 2237
diff changeset
  3622
    "
5d59b5e2e00c makeSelectionVisible after #sizeChanged:
ca
parents: 2237
diff changeset
  3623
    |rowNr colNr|
5d59b5e2e00c makeSelectionVisible after #sizeChanged:
ca
parents: 2237
diff changeset
  3624
5d59b5e2e00c makeSelectionVisible after #sizeChanged:
ca
parents: 2237
diff changeset
  3625
    rowNr := self firstIndexSelected.
5d59b5e2e00c makeSelectionVisible after #sizeChanged:
ca
parents: 2237
diff changeset
  3626
    rowNr == 0 ifTrue:[^ self].
5d59b5e2e00c makeSelectionVisible after #sizeChanged:
ca
parents: 2237
diff changeset
  3627
5d59b5e2e00c makeSelectionVisible after #sizeChanged:
ca
parents: 2237
diff changeset
  3628
    (selectedColIndex notNil and:[selectedColIndex ~~ 0]) ifTrue:[
5d59b5e2e00c makeSelectionVisible after #sizeChanged:
ca
parents: 2237
diff changeset
  3629
        colNr := selectedColIndex
5d59b5e2e00c makeSelectionVisible after #sizeChanged:
ca
parents: 2237
diff changeset
  3630
    ] ifFalse:[
5d59b5e2e00c makeSelectionVisible after #sizeChanged:
ca
parents: 2237
diff changeset
  3631
        colNr := 1
5d59b5e2e00c makeSelectionVisible after #sizeChanged:
ca
parents: 2237
diff changeset
  3632
    ].
5d59b5e2e00c makeSelectionVisible after #sizeChanged:
ca
parents: 2237
diff changeset
  3633
    self scrollToRowAt:rowNr colAt:colNr
5d59b5e2e00c makeSelectionVisible after #sizeChanged:
ca
parents: 2237
diff changeset
  3634
!
5d59b5e2e00c makeSelectionVisible after #sizeChanged:
ca
parents: 2237
diff changeset
  3635
2363
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3636
maxIndexSelected
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3637
    "return the largest index selected or 0
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3638
    "
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3639
    multipleSelectOk ifFalse:[
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3640
        ^ selectedRowIndex
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3641
    ].
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3642
    selectedRowIndex size ~~ 0 ifTrue:[
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3643
        ^ selectedRowIndex max
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3644
    ].
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3645
    ^ 0
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3646
!
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3647
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3648
minIndexSelected
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3649
    "return the smallest index selected or 0
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3650
    "
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3651
    multipleSelectOk ifFalse:[
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3652
        ^ selectedRowIndex
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3653
    ].
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3654
    selectedRowIndex size ~~ 0 ifTrue:[
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3655
        ^ selectedRowIndex min
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3656
    ].
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3657
    ^ 0
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3658
!
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  3659
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3660
numberOfSelections
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3661
    "return the number of selected rows
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3662
    "
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3663
    multipleSelectOk ifFalse:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3664
        ^ selectedRowIndex ~~ 0 ifTrue:[1] ifFalse:[0]
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3665
    ].
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3666
    ^ selectedRowIndex size
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3667
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3668
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3669
removeRowFromSelection:aRowNr
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3670
    "remove a row from the selection
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3671
    "
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3672
    (self isInSelection:aRowNr) ifFalse:[^ self].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3673
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3674
    self numberOfSelections == 1 ifTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3675
        self deselect.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3676
    ] ifFalse:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3677
        selectedRowIndex := selectedRowIndex copyWithout:aRowNr.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3678
        self invalidateRowAt:aRowNr.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3679
        self selectionChanged.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3680
    ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3681
!
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3682
1947
1e11b36633b2 added selectAllRows (Alt-Shift-A) key function
Claus Gittinger <cg@exept.de>
parents: 1946
diff changeset
  3683
selectAllRows
1971
6b24b6010cfc fixed #selectAllRows
Claus Gittinger <cg@exept.de>
parents: 1968
diff changeset
  3684
    "select all
6b24b6010cfc fixed #selectAllRows
Claus Gittinger <cg@exept.de>
parents: 1968
diff changeset
  3685
    "
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  3686
    multipleSelectOk ifFalse:[^ self].
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  3687
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  3688
    selectedRowIndex := (1 to:list size) select:[:idx| self isRowSelectable:idx ].
1947
1e11b36633b2 added selectAllRows (Alt-Shift-A) key function
Claus Gittinger <cg@exept.de>
parents: 1946
diff changeset
  3689
    self selectionChanged.
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  3690
    self invalidate.
1947
1e11b36633b2 added selectAllRows (Alt-Shift-A) key function
Claus Gittinger <cg@exept.de>
parents: 1946
diff changeset
  3691
!
1e11b36633b2 added selectAllRows (Alt-Shift-A) key function
Claus Gittinger <cg@exept.de>
parents: 1946
diff changeset
  3692
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3693
selectColIndex:aColNr rowIndex:aRowNr
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3694
    "change selection with notification
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3695
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3696
    |oC oR|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3697
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3698
    oC := self selectedColIndex.
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3699
    oR := self selectedRowIndex.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3700
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3701
    self setSelectColIndex:aColNr rowIndex:aRowNr.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3702
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3703
    (oC ~~ self selectedColIndex or:[oR ~= self selectedRowIndex]) ifTrue:[
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3704
        self selectionChanged
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3705
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3706
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3707
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3708
selectRow:something
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3709
    "select a row
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3710
    "
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3711
    ^ self selectedRowIndex:something
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3712
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3713
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3714
selectRowAt:rowNr colAt:colNr atPoint:aPoint
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3715
    |v p|
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3716
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3717
    self selectColIndex:colNr rowIndex:rowNr.
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3718
2044
8e36106065f0 fixed: click on a checkToggle (buttonPress event)
Claus Gittinger <cg@exept.de>
parents: 2032
diff changeset
  3719
    ((v := self detectViewAt:aPoint ignoreInvisible:true) notNil 
8e36106065f0 fixed: click on a checkToggle (buttonPress event)
Claus Gittinger <cg@exept.de>
parents: 2032
diff changeset
  3720
    and:[v ~~ self])
8e36106065f0 fixed: click on a checkToggle (buttonPress event)
Claus Gittinger <cg@exept.de>
parents: 2032
diff changeset
  3721
    ifTrue:[
2019
0d2757149700 extracted common code to detectViewAt:aPoint.
Claus Gittinger <cg@exept.de>
parents: 2011
diff changeset
  3722
        p := device translatePoint:aPoint fromView:self toView:v.
2125
67e0f2c9ad4d event types are private to WindowEvent;
ca
parents: 2101
diff changeset
  3723
        "/ simulate clicking into the editor
2470
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  3724
        self sensor 
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  3725
                pushEvent:(WindowEvent buttonPress:#select x:p x y:p y view:v);
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  3726
                pushEvent:(WindowEvent buttonRelease:#select x:p x y:p y view:v)
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3727
    ].
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3728
!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3729
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3730
selectRowFrom:start to:stop
2470
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  3731
    |step oldSelection newSelection|
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3732
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3733
    start == stop ifTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3734
        self selectColIndex:0 rowIndex:start.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3735
        ^ self
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3736
    ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3737
2470
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  3738
    step := (start <= stop) ifTrue:1 ifFalse:-1.
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  3739
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  3740
    newSelection := (start to:stop by:step) select:[:idx| self isRowSelectable: idx ].
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3741
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3742
    selectedColIndex ~~ 0 ifTrue:[
2470
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  3743
        self selectColIndex:0 rowIndex:newSelection.
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3744
        ^ self
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3745
    ].
2470
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  3746
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  3747
    oldSelection := selectedRowIndex ? #().
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  3748
    selectedRowIndex := newSelection.
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  3749
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  3750
    newSelection 
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  3751
        select:[:i | (oldSelection includes:i) not]
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  3752
        thenDo:[:i | self invalidateRowAt:i].
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  3753
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  3754
    oldSelection 
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  3755
        select:[:i | (newSelection includes:i) not]
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  3756
        thenDo:[:i | self invalidateRowAt:i].
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  3757
        
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3758
    self selectionChanged.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3759
!
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3760
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3761
selectRowIndex:something
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3762
    "set selection of rows
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3763
    "
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3764
    self selectColIndex:selectedColIndex rowIndex:something
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3765
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3766
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3767
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3768
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3769
selectedColIndex
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3770
    "returns selected column number or 0
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3771
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3772
    ^ selectedColIndex
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3773
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3774
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3775
selectedColumn
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3776
    "returns selected column or nil
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3777
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3778
    ^ columnDescriptors at:selectedColIndex ifAbsent:nil.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3779
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3780
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3781
selectedRow
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3782
    "returns selected row (or collection if multiple selection) or nil
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3783
    "
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3784
    multipleSelectOk ifFalse:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3785
        ^ self at:selectedRowIndex ifAbsent:nil
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3786
    ].
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3787
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3788
    selectedRowIndex size ~~ 0 ifTrue:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3789
        ^ selectedRowIndex collect:[:i| self at:i]
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3790
    ].
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3791
    ^ nil
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3792
!
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3793
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3794
selectedRow:something
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3795
    "select something
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3796
    "
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3797
    self selectedRowIndex:something
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3798
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3799
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3800
selectedRowIndex
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3801
    "returns selected row number or 0
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3802
    "
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3803
    ^ selectedRowIndex
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3804
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3805
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3806
selectedRowIndex:something
2470
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  3807
    "set the row selection (single or multiple rows);
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  3808
     does NOT change the selectoed column.
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3809
    "
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3810
    self selectColIndex:selectedColIndex rowIndex:something
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3811
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3812
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3813
selectionChanged
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3814
    "selection has changed
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3815
    "
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3816
    |val|
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3817
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3818
    model notNil ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3819
        val := self selectedRowIndex copy.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3820
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3821
        (model respondsTo:#selectionIndex:) ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3822
            model selectionIndex:val
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3823
        ] ifFalse:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3824
            useIndex ifFalse:[ model value:(self selectedRow) ]
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3825
                      ifTrue:[ model value:val ]
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3826
        ]
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3827
    ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3828
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3829
    actionBlock notNil ifTrue:[
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3830
        actionBlock value:(self selectedRowIndex)
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3831
    ]
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3832
!
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3833
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3834
selectionIndicesDo:aOneArgBlock
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3835
    "evaluate block on each row selected; the argument to the row
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3836
     is the index of the selected row
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3837
    "
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3838
    multipleSelectOk ifFalse:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3839
        selectedRowIndex ~~ 0 ifTrue:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3840
            aOneArgBlock value:selectedRowIndex
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3841
        ]
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3842
    ] ifTrue:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3843
        selectedRowIndex size ~~ 0 ifTrue:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3844
            selectedRowIndex do:[:i| aOneArgBlock value:i ]
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3845
        ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3846
    ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3847
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3848
2470
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  3849
setSelectColIndex:colNrArg rowIndex:rowNrArg
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3850
    "change selection without notification
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3851
    "
1149
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  3852
    |editSpec rowNr colNr newCol oldCol oldRow sensor sglSelRow oldSz
1665
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  3853
     keyBrdFwd filter edValue edView|
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3854
2470
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  3855
    rowNr := self validateSelection:rowNrArg.
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  3856
    colNr := colNrArg.
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  3857
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  3858
    (rowNr == 0
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  3859
    or:[multipleSelectOk and:[rowNr size ~~ 1]]) ifTrue:[
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  3860
        colNr := 0
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3861
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3862
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3863
    (colNr := colNr ? 0) ~~ 0 ifTrue:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3864
        newCol := self columnAt:colNr.
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3865
        newCol rendererType == #rowSelector ifTrue:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3866
            colNr := 0.
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3867
            newCol := nil
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3868
        ] ifFalse:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3869
            multipleSelectOk ifTrue:[sglSelRow := rowNr at:1]
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3870
                            ifFalse:[sglSelRow := rowNr].
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3871
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3872
            (newCol canSelect:sglSelRow) ifFalse:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3873
                newCol := nil.
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  3874
                colNr  := 0.
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  3875
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  3876
                selectRowOnDefault ifFalse:[
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  3877
                    rowNr  := multipleSelectOk ifFalse:[0] ifTrue:[nil]
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  3878
                ]
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3879
            ]
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3880
        ]
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3881
    ].
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3882
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3883
    (rowNr = selectedRowIndex and:[colNr == selectedColIndex]) ifTrue:[
643
bfd44867347f adding: bug fix
ca
parents: 642
diff changeset
  3884
        ^ self
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3885
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3886
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3887
    "/ release old selection
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3888
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  3889
    oldSz  := self numberOfSelections.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3890
    oldCol := selectedColIndex.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3891
    oldRow := selectedRowIndex.
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  3892
1968
857cd9f14570 fixed store-into-wrong-col bug (imageEditors color table)
Claus Gittinger <cg@exept.de>
parents: 1959
diff changeset
  3893
    "/ cg: must change the selectedRow/Col AFTER we have stored the editValue.
857cd9f14570 fixed store-into-wrong-col bug (imageEditors color table)
Claus Gittinger <cg@exept.de>
parents: 1959
diff changeset
  3894
    "/ (otherwise, the editvalue might be stored into the new col as well ...)
857cd9f14570 fixed store-into-wrong-col bug (imageEditors color table)
Claus Gittinger <cg@exept.de>
parents: 1959
diff changeset
  3895
857cd9f14570 fixed store-into-wrong-col bug (imageEditors color table)
Claus Gittinger <cg@exept.de>
parents: 1959
diff changeset
  3896
"/    selectedRowIndex := rowNr.
857cd9f14570 fixed store-into-wrong-col bug (imageEditors color table)
Claus Gittinger <cg@exept.de>
parents: 1959
diff changeset
  3897
"/    selectedColIndex := colNr.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3898
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  3899
    oldSz == 1 ifTrue:[
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  3900
        multipleSelectOk ifTrue:[oldRow := oldRow at:1].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3901
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  3902
        editValue notNil ifTrue:[
1215
76b43b3de51e call accept before closing the editView
tm
parents: 1201
diff changeset
  3903
            editValue removeDependent:self
76b43b3de51e call accept before closing the editView
tm
parents: 1201
diff changeset
  3904
        ].
76b43b3de51e call accept before closing the editView
tm
parents: 1201
diff changeset
  3905
        editView notNil ifTrue:[
76b43b3de51e call accept before closing the editView
tm
parents: 1201
diff changeset
  3906
            editView allSubViewsDo:[:aSubView|
2320
53ba8df4772a responsTo: insteat of #perform:ifNotUnderstood:
ca
parents: 2319
diff changeset
  3907
                (aSubView respondsTo:#accept) ifTrue:[
53ba8df4772a responsTo: insteat of #perform:ifNotUnderstood:
ca
parents: 2319
diff changeset
  3908
                    aSubView accept
53ba8df4772a responsTo: insteat of #perform:ifNotUnderstood:
ca
parents: 2319
diff changeset
  3909
                ].
1215
76b43b3de51e call accept before closing the editView
tm
parents: 1201
diff changeset
  3910
            ]
76b43b3de51e call accept before closing the editView
tm
parents: 1201
diff changeset
  3911
        ].
76b43b3de51e call accept before closing the editView
tm
parents: 1201
diff changeset
  3912
76b43b3de51e call accept before closing the editView
tm
parents: 1201
diff changeset
  3913
        editValue notNil ifTrue:[
1149
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  3914
            edValue := editValue value.
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  3915
            edValue isSequenceable ifTrue:[
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  3916
                edValue size == 0 ifTrue:[
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  3917
                    edValue := nil
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  3918
                ] ifFalse:[
2470
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  3919
                    edValue isString ifFalse:[
1149
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  3920
                        edValue := edValue select:[:el| el notNil ].
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  3921
                        edValue size == 0 ifTrue:[
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  3922
                            edValue := nil
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  3923
                        ]
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  3924
                    ]
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  3925
                ]
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  3926
            ].
1661
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
  3927
            (self columnAt:oldCol) at:oldRow put:edValue.
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
  3928
            modifiedChannel notNil ifTrue:[
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
  3929
                modifiedChannel value:true
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
  3930
            ].
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  3931
            editValue := nil
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  3932
        ].
1111
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  3933
        self destroyEditView.
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  3934
    ].
1968
857cd9f14570 fixed store-into-wrong-col bug (imageEditors color table)
Claus Gittinger <cg@exept.de>
parents: 1959
diff changeset
  3935
    selectedRowIndex := rowNr.
857cd9f14570 fixed store-into-wrong-col bug (imageEditors color table)
Claus Gittinger <cg@exept.de>
parents: 1959
diff changeset
  3936
    selectedColIndex := colNr.
857cd9f14570 fixed store-into-wrong-col bug (imageEditors color table)
Claus Gittinger <cg@exept.de>
parents: 1959
diff changeset
  3937
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  3938
    shown ifFalse:[^ self ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3939
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  3940
    oldSz > 1 ifTrue:[                                  "/ redraw old selection
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  3941
        oldRow do:[:aRowNr|                             "/ unselected if visible
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3942
            self invalidateRowAt:aRowNr colAt:0
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  3943
        ]
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  3944
    ] ifFalse:[
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  3945
        oldSz == 1 ifTrue:[
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3946
            self invalidateRowAt:oldRow colAt:oldCol
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  3947
        ]
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  3948
    ].   
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  3949
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3950
    "/ show new selection
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3951
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3952
    newCol notNil ifTrue:[
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3953
        self scrollToRowAt:sglSelRow colAt:colNr.
833
c4e3e579f8bd handle choices
ca
parents: 824
diff changeset
  3954
        editSpec := newCol editorAt:sglSelRow.
c4e3e579f8bd handle choices
ca
parents: 824
diff changeset
  3955
c4e3e579f8bd handle choices
ca
parents: 824
diff changeset
  3956
        editSpec notNil ifTrue:[
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  3957
            editView := SimpleView extent:(  (newCol width - (2 * separatorSize)) 
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  3958
                                           @ (rowHeight    - (2 * separatorSize))
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3959
                                          )
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3960
                                       in:self.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3961
            self updateEditViewOrigin.
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  3962
1134
d7c5844b24b0 *** empty log message ***
ca
parents: 1131
diff changeset
  3963
            (newCol containsText or:[newCol showSelectionHighLighted not]) ifTrue:[
1565
ca
parents: 1530
diff changeset
  3964
                editView viewBackground:(newCol backgroundColorAt:sglSelRow)
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  3965
            ] ifFalse:[
2151
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  3966
                editView viewBackground:selectionBackgroundColor
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  3967
            ].
1665
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  3968
            edView := editSpec at:1.
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  3969
            editView add:edView.
1149
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  3970
            oldSz := editSpec size.
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  3971
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  3972
            oldSz == 3 ifTrue:[
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  3973
                filter := [:aKey| #(#Tab #CursorUp #CursorDown) includes:aKey]
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  3974
            ] ifFalse:[
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  3975
                filter := [:aKey| aKey == #Tab]
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  3976
            ].
1111
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  3977
            keyBrdFwd := KeyboardForwarder toView:self
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  3978
                                        condition:nil
1149
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  3979
                                           filter:filter.
1111
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  3980
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  3981
            editView withAllSubViewsDo:[:aView|
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  3982
                aView delegate:keyBrdFwd.
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  3983
                aView font:font.
1111
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  3984
            ].
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  3985
1149
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  3986
            (editValue := editSpec at:2 ifAbsent:nil) notNil ifTrue:[
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3987
                editValue addDependent:self.
648
1d77d0c9e58a check for isEditing
ca
parents: 647
diff changeset
  3988
            ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3989
            editView realize.
1665
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  3990
            edView canTab:true.
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  3991
            self windowGroup focusView:edView.
1111
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  3992
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3993
        ] ifFalse:[
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3994
            self invalidateRowAt:sglSelRow colAt:colNr
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  3995
        ].
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  3996
    ] ifFalse:[
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3997
        self selectionIndicesDo:[:i| self invalidateRowAt:i colAt:0 ].
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  3998
        self scrollToRowAt:(self firstIndexSelected) colAt:0
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  3999
    ].
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  4000
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  4001
    sensor := self sensor.                              "/ catch expose events
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  4002
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  4003
    [sensor hasExposeEventFor:nil] whileTrue:[
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  4004
        self windowGroup processExposeEvents
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  4005
    ].
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  4006
1661
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
  4007
    "Modified: / 30.1.2000 / 12:18:25 / cg"
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4008
!
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4009
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4010
validateSelection:aSelection
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4011
    |newSel|
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4012
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4013
    newSel := aSelection.
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4014
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  4015
    (list size == 0 or:[newSel isNil or:[newSel == 0]]) ifTrue:[
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4016
        ^ multipleSelectOk ifFalse:[0] ifTrue:[nil]
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4017
    ].
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4018
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4019
    multipleSelectOk ifFalse:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4020
        newSel isNumber ifFalse:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4021
            newSel := self identityIndexOfRow:aSelection.
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4022
        ].
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4023
        ^ (self isRowSelectable:newSel) ifTrue:[newSel] ifFalse:[0].
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4024
    ].
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4025
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4026
    "multiple selection
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4027
    "
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4028
    aSelection size ~~ 0 ifTrue:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4029
        aSelection first isNumber ifTrue:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4030
            newSel := aSelection select:[:idx| self isRowSelectable:idx ].
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4031
        ] ifFalse:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4032
            newSel := aSelection 
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4033
                            collect:[:el| self identityIndexOfRow:el ]
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4034
                            thenSelect:[:idx| self isRowSelectable:idx ].
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4035
        ].
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4036
        newSel notEmpty ifTrue:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4037
            ^ newSel
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4038
        ].
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4039
    ] ifFalse:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4040
        (newSel isNumber and:[self isRowSelectable:newSel]) ifTrue:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4041
            ^ Array with:newSel
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4042
        ].
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4043
    ].
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4044
    ^ nil
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4045
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4046
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4047
!DSVColumnView class methodsFor:'documentation'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4048
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4049
version
2670
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  4050
    ^ '$Header: /cvs/stx/stx/libwidg2/DSVColumnView.st,v 1.180 2004-03-04 09:33:31 cg Exp $'
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4051
! !