DSVColumnView.st
author Jan Vrany <jan.vrany@labware.com>
Fri, 02 Sep 2022 11:25:39 +0100
branchjv
changeset 6261 9b7eb7159d29
parent 5421 3fd7edaeb379
child 5447 867fdca4b691
permissions -rw-r--r--
Fix loong standing bug with some menus not being translated / resolved This has happened with browser "View" menu when sometimes it had the slice resolved and sometimes not. It turned out that it was because the code disabled resources (and therefore slices) resolution when processing shortcuts, so the menu was created and cached unresolved. This fixes the issue. eXept apparently run into the same problem.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     1
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     2
 COPYRIGHT (c) 1997 by Claus Gittinger / eXept Software AG
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     3
              All Rights Reserved
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     4
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     5
 This software is furnished under a license and may be used
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
e22c45e26653 intitial checkin
ca
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    10
 hereby transferred.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    11
"
1754
4dea21fbacee #buttonMotion:x:y: -- with autoScroll support
ca
parents: 1749
diff changeset
    12
"{ Package: 'stx:libwidg2' }"
4dea21fbacee #buttonMotion:x:y: -- with autoScroll support
ca
parents: 1749
diff changeset
    13
4772
11b5f36c5943 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4686
diff changeset
    14
"{ NameSpace: Smalltalk }"
11b5f36c5943 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4686
diff changeset
    15
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    16
View subclass:#DSVColumnView
2482
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    17
	instanceVariableNames:'labelView listHolder editValue editView multipleSelectOk useIndex
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
    18
		selectedColIndexHolder selectedRowIndex selectRowOnDefault
2592
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
    19
		buttonMotionAction buttonReleaseAction rowHeight minRowHeight
2482
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    20
		columnDescriptors viewOrigin colorMap rowFontAscent lockRowIndex
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    21
		rowIfAbsentBlock columnHolder registererImages list fgColor
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    22
		separatorSize catchChangeEvents beDependentOfRows bgColor
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    23
		actionBlock builder tabIntern doubleClickActionBlock
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    24
		verticalSpacing horizontalSpacing rowSelectorForm
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    25
		buttonLightColor buttonShadowColor buttonHalfLightColor
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    26
		buttonHalfShadowColor checkToggleExtent checkToggleForm
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    27
		checkToggleActiveImage checkTogglePassiveImage checkToggleLevel
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
    28
		radioButtonActiveImage radioButtonPassiveImage comboButtonExtent
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
    29
		comboButtonForm comboButtonLevel dropSource columnAdaptor
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
    30
		tabAtEndAction tabAtStartAction modifiedChannel autoScroll
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
    31
		autoScrollBlock needFitColumns scrollWhenUpdating
2886
c7dd9972a292 dropTarget
Claus Gittinger <cg@exept.de>
parents: 2885
diff changeset
    32
		separatorOneDColor selectionForegroundColor
3138
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
    33
		selectionForegroundColorNoFocus selectionBackgroundColor
3989
5c6706e4e0d1 preps for highlight-frame color
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
    34
		selectionBackgroundColorNoFocus selectionFrameColor
5c6706e4e0d1 preps for highlight-frame color
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
    35
		selectionFrameColorNoFocus previousExtent selectConditionBlock
4613
73e2facef522 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4606
diff changeset
    36
		scrollRowWise autoScrollToColumn cachedPreferredExtent
5194
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
    37
		sortListInPlace labelFgColor labelBgColor
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
    38
		updateListHolderWhenSorting'
2482
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    39
	classVariableNames:'DefaultForegroundColor DefaultBackgroundColor
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    40
		DefaultHilightForegroundColor DefaultHilightBackgroundColor
3988
Claus Gittinger <cg@exept.de>
parents: 3986
diff changeset
    41
		DefaultHilightFrameColor ButtonLightColor ButtonShadowColor
Claus Gittinger <cg@exept.de>
parents: 3986
diff changeset
    42
		CheckToggleActiveImage CheckTogglePassiveImage
Claus Gittinger <cg@exept.de>
parents: 3986
diff changeset
    43
		ButtonHalfLightColor ButtonHalfShadowColor ButtonEdgeStyle
Claus Gittinger <cg@exept.de>
parents: 3986
diff changeset
    44
		CheckToggleForm CheckToggleLevel CheckToggleExtent
Claus Gittinger <cg@exept.de>
parents: 3986
diff changeset
    45
		ComboButtonForm ComboButtonLevel ComboButtonExtent
4489
e492b99bfa39 class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4486
diff changeset
    46
		StopRedrawSignal RadioButtonActiveImage RadioButtonPassiveImage
4644
a1734dfe9bfe class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4613
diff changeset
    47
		PreselectAllWhenOpeningEditor
a1734dfe9bfe class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4613
diff changeset
    48
		DefaultHilightForegroundColorNoFocus
4875
e47db739d7d1 #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4794
diff changeset
    49
		DefaultHilightBackgroundColorNoFocus DefaultLabelForegroundColor
e47db739d7d1 #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4794
diff changeset
    50
		DefaultLabelBackgroundColor'
2482
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    51
	poolDictionaries:''
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
    52
	category:'Views-DataSet'
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    53
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    54
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    55
!DSVColumnView class methodsFor:'documentation'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    56
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    57
copyright
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    58
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    59
 COPYRIGHT (c) 1997 by Claus Gittinger / eXept Software AG
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    60
              All Rights Reserved
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    61
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    62
 This software is furnished under a license and may be used
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    63
 only in accordance with the terms of that license and with the
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    64
 inclusion of the above copyright notice.   This software may not
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    65
 be provided or otherwise made available to, or used by, any
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    66
 other person.  No title to or ownership of the software is
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    67
 hereby transferred.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    68
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    69
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    70
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    71
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    72
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    73
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    74
documentation
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    75
"
2788
8f45f2da80fa selection/multiSelection/startDrag
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
    76
    ColumnView part of a DataSetView.
8f45f2da80fa selection/multiSelection/startDrag
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
    77
    implements a scrollable selection view based on rows and columns.
8f45f2da80fa selection/multiSelection/startDrag
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
    78
    Used as the contents-part of a DataSetView.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    79
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    80
    [Instance variables:]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    81
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    82
        editValue               <Model>                 current editing model
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    83
        editView                <View>                  current editing component
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
    84
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
    85
        buttonReleaseAction     <Action or nil>         called if the mouse button is released
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
    86
        buttonMotionAction      <Action or nil>         called during mouse motion with one
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
    87
                                                        argument the point under the mouse.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
    88
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
    89
        multipleSelectOk        <Boolean>               multiple selection enabled/disabled
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
    90
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    91
        selectedColIndex        <Integer>               selected column index or 0
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
    92
        selectedRowIndex        <Integer>               selected row    index or 0
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
    93
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    94
        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
    95
        minRowHeight            <Integer>               minimum height of all displayed labels
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
    96
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
    97
        columnDescriptors       <SequancableCollection> list of column descriptors
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
    98
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
    99
        viewOrigin              <Point>                 current view origin
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   100
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   101
        colorMap                <Dictionary>            store and register used colors on device
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   102
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   103
        rowFontAscent           <SmallInteger>          inset of a printable text in a row
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   104
                                                        including separator and font ascent.
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   105
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   106
        lockRowIndex            <SmallInteger>          internal used to indicate a row which has
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   107
                                                        changed its contents but no redraw should be
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   108
                                                        done( at:put: ).
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   109
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   110
        columnHolder            <ValueHolder>           holder which keeps the list of column descriptors.
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   111
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   112
        registererImages        <IdentityDictionary>    list of images registered on the device
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   113
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   114
        list                    <SequancableCollection> list of rows
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   115
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   116
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   117
        catchChangeEvents       <Boolean>               internal used to discard change notifications
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   118
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   119
        beDependentOfRows       <Boolean>               keep rows dependent; on default is disabled.
567
01083cbb4bae checkin from browser
ca
parents: 563
diff changeset
   120
                                                        in case of enabled a row can raise a change
01083cbb4bae checkin from browser
ca
parents: 563
diff changeset
   121
                                                        notification whithout a parameter which
01083cbb4bae checkin from browser
ca
parents: 563
diff changeset
   122
                                                        will force a redraw of the row or the
01083cbb4bae checkin from browser
ca
parents: 563
diff changeset
   123
                                                        readSelector of the column which will
01083cbb4bae checkin from browser
ca
parents: 563
diff changeset
   124
                                                        redraw the cell in the row only.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   125
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   126
        fgColor                 <Color>                 foreground color
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   127
        bgColor                 <Color>                 background color
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   128
        hgLgFgColor             <Color>                 highlight foreground color (selected)
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   129
        hgLgBgColor             <Color>                 highlight background color (selected)
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   130
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   131
        buttonLightColor        <Color>                 LightColor      ( drawing the edge of a button )
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   132
        buttonShadowColor       <Color>                 ShadowColor     ( drawing the edge of a button )
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   133
        buttonHalfLightColor    <Color>                 HalfLightColor  ( drawing the edge of a button )
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   134
        buttonHalfShadowColor   <Color>                 HalfShadowColor ( drawing the edge of a button )
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   135
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   136
        actionBlock             <a OneArgBlock>         action block performed on select
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   137
        doubleClickActionBlock  <a OneArgBlock>         action block performed on double click
5308
4e35010e00be #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5279
diff changeset
   138
        rowIfAbsentBlock        <a OneArgBlock>         this block is performed on an empty list entry
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   139
                                                        to retrive the item from the application. The
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   140
                                                        argument to the block is the index into the list.
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   141
                                                        The block should return the row instance which
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   142
                                                        is put to the list under the index.
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   143
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   144
        builder                 <UIBuilder>             builder set by application
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   145
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   146
        verticalSpacing         <SmallInteger>          vertical   row spacing( top  & bottom )
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   147
        horizontalSpacing       <SmallInteger>          horizontal row spacing( left & right )
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   148
        separatorSize           <SmallInteger>          line width of a vertical or horizontal separator
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   149
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   150
        rowSelectorForm         <Form>                  form used by a row selector
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   151
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   152
        checkToggleForm         <Form>                  form used by a checkToggle
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   153
        checkToggleExtent       <Point>                 extent of a checkToggle
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   154
        checkToggleLevel        <SmallInteger>          level used to draw a check toggle
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   155
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   156
        comboButtonForm         <Form>                  form used by a comboList or -Box
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   157
        comboButtonExtent       <Point>                 extent of a comboList or -Box
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   158
        comboButtonLevel        <SmallInteger>          level used to draw a comboList or -Box
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   159
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   160
        dropTarget              <DropTarget>            drag & drop target
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   161
        dropSource              <DropSource>            drag & drop source
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   162
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   163
    [author:]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   164
        Claus Atzkern
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   165
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   166
    [see also:]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   167
        DataSetColumnSpec
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   168
        DataSetColumn
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   169
        DataSetView
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   170
"
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   171
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   172
647
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
   173
!DSVColumnView class methodsFor:'defaults'!
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
   174
1844
05a9cb2fc86f default font
martin
parents: 1842
diff changeset
   175
defaultFont
05a9cb2fc86f default font
martin
parents: 1842
diff changeset
   176
    ^ SelectionInListView defaultFont
05a9cb2fc86f default font
martin
parents: 1842
diff changeset
   177
!
05a9cb2fc86f default font
martin
parents: 1842
diff changeset
   178
563
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
   179
horizontalSpacing
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   180
    "returns the default horizontal space between rows
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   181
    "
563
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
   182
    ^ 4
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
   183
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
   184
!
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
   185
3961
6cd0b3929aa2 added: #preselectAllWhenOpeningEditor:
Claus Gittinger <cg@exept.de>
parents: 3960
diff changeset
   186
preselectAllWhenOpeningEditor:aBoolean
6cd0b3929aa2 added: #preselectAllWhenOpeningEditor:
Claus Gittinger <cg@exept.de>
parents: 3960
diff changeset
   187
    PreselectAllWhenOpeningEditor := aBoolean
6cd0b3929aa2 added: #preselectAllWhenOpeningEditor:
Claus Gittinger <cg@exept.de>
parents: 3960
diff changeset
   188
6cd0b3929aa2 added: #preselectAllWhenOpeningEditor:
Claus Gittinger <cg@exept.de>
parents: 3960
diff changeset
   189
    "Created: / 02-11-2010 / 22:00:28 / cg"
6cd0b3929aa2 added: #preselectAllWhenOpeningEditor:
Claus Gittinger <cg@exept.de>
parents: 3960
diff changeset
   190
!
6cd0b3929aa2 added: #preselectAllWhenOpeningEditor:
Claus Gittinger <cg@exept.de>
parents: 3960
diff changeset
   191
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   192
updateStyleCache
2777
56bb352f6b91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2776
diff changeset
   193
    "extract values from the styleSheet and cache them in class variables"
56bb352f6b91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2776
diff changeset
   194
2146
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
   195
    <resource: #style (#textForegroundColor 
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
   196
                       #'scrollableView.backgroundColor'
2777
56bb352f6b91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2776
diff changeset
   197
                       #'button.lightColor'
56bb352f6b91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2776
diff changeset
   198
                       #'button.shadowColor'
56bb352f6b91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2776
diff changeset
   199
                       #'button.halfLightColor'
56bb352f6b91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2776
diff changeset
   200
                       #'button.halfShadowColor'
56bb352f6b91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2776
diff changeset
   201
                       #'button.edgeStyle'
56bb352f6b91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2776
diff changeset
   202
                       #'checkToggle.activeImage'
56bb352f6b91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2776
diff changeset
   203
                       #'checkToggle.passiveImage'
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
   204
                       #'radioButton.activeImage'
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
   205
                       #'radioButton.passiveImage'
582
222fc7c63af0 new resource naming
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   206
                       #'selection.hilightForegroundColor'
3988
Claus Gittinger <cg@exept.de>
parents: 3986
diff changeset
   207
                       #'selection.hilightBackgroundColor' 
4875
e47db739d7d1 #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4794
diff changeset
   208
                       #'selection.hilightFrameColor'
e47db739d7d1 #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4794
diff changeset
   209
                       #'dataSet.labelView.foregroundColor'
e47db739d7d1 #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4794
diff changeset
   210
                       #'dataSet.labelView.backgroundColor'
3988
Claus Gittinger <cg@exept.de>
parents: 3986
diff changeset
   211
    )>
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   212
1333
011e6414dae5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1326
diff changeset
   213
    DefaultForegroundColor        := StyleSheet colorAt:#'textForegroundColor' default:(Color black).
3986
163354e9ee4c changed: #updateStyleCache
Claus Gittinger <cg@exept.de>
parents: 3964
diff changeset
   214
    "/ DefaultBackgroundColor        := StyleSheet colorAt:#'scrollableView.backgroundColor' default:DefaultViewBackgroundColor.
163354e9ee4c changed: #updateStyleCache
Claus Gittinger <cg@exept.de>
parents: 3964
diff changeset
   215
    DefaultBackgroundColor        := StyleSheet colorAt:#'selection.backgroundColor' default:DefaultViewBackgroundColor.
1333
011e6414dae5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1326
diff changeset
   216
011e6414dae5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1326
diff changeset
   217
    DefaultHilightForegroundColor := StyleSheet colorAt:#'selection.hilightForegroundColor' default:DefaultBackgroundColor.
011e6414dae5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1326
diff changeset
   218
    DefaultHilightBackgroundColor := StyleSheet colorAt:#'selection.hilightBackgroundColor' default:DefaultForegroundColor.
4644
a1734dfe9bfe class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4613
diff changeset
   219
    DefaultHilightForegroundColorNoFocus := StyleSheet colorAt:#'selection.hilightForegroundColorNoFocus'.
a1734dfe9bfe class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4613
diff changeset
   220
    DefaultHilightBackgroundColorNoFocus := StyleSheet colorAt:#'selection.hilightBackgroundColorNoFocus'.
3989
5c6706e4e0d1 preps for highlight-frame color
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
   221
    DefaultHilightFrameColor      := StyleSheet colorAt:#'selection.hilightFrameColor'. "/ no default; nil means: no frame
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
   222
647
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
   223
    DefaultHilightForegroundColor = DefaultHilightBackgroundColor ifTrue:[
988
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   224
        DefaultHilightBackgroundColor := Color black
647
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
   225
    ].
1333
011e6414dae5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1326
diff changeset
   226
    ButtonLightColor       := StyleSheet colorAt:#'button.lightColor'.
011e6414dae5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1326
diff changeset
   227
    ButtonShadowColor      := StyleSheet colorAt:#'button.shadowColor'.
011e6414dae5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1326
diff changeset
   228
    ButtonHalfLightColor   := StyleSheet colorAt:#'button.halfLightColor'.
011e6414dae5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1326
diff changeset
   229
    ButtonHalfShadowColor  := StyleSheet colorAt:#'button.halfShadowColor'.
011e6414dae5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1326
diff changeset
   230
    ButtonEdgeStyle        := StyleSheet at:#'button.edgeStyle'.
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
   231
1333
011e6414dae5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1326
diff changeset
   232
    CheckToggleActiveImage := StyleSheet at:#'checkToggle.activeImage'.
1100
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   233
    CheckToggleActiveImage isNil ifTrue:[
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   234
        CheckTogglePassiveImage := nil
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   235
    ] ifFalse:[
1333
011e6414dae5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1326
diff changeset
   236
        CheckTogglePassiveImage := StyleSheet at:#'checkToggle.passiveImage'.
1100
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   237
        CheckTogglePassiveImage isNil ifTrue:[
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   238
            CheckToggleActiveImage := nil
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   239
        ]
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   240
    ].
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
   241
    CheckToggleForm   := nil.
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
   242
    CheckToggleLevel  := nil.
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
   243
    CheckToggleExtent := nil.
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
   244
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
   245
    RadioButtonActiveImage := StyleSheet at:#'radioButton.activeImage'.
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
   246
    RadioButtonPassiveImage := StyleSheet at:#'radioButton.passiveImage'.
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
   247
    (RadioButtonActiveImage isNil or:[ RadioButtonPassiveImage isNil ]) ifTrue:[
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
   248
        RadioButtonActiveImage := RadioButton roundOnForm.
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
   249
        RadioButtonPassiveImage := RadioButton roundOffForm.
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
   250
    ].
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
   251
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   252
    ComboButtonForm   := nil.
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   253
    ComboButtonLevel  := nil.
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   254
    ComboButtonExtent := nil.
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   255
4875
e47db739d7d1 #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4794
diff changeset
   256
    DefaultLabelBackgroundColor := StyleSheet at:#'dataSet.labelView.backgroundColor' default:nil.
e47db739d7d1 #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4794
diff changeset
   257
    DefaultLabelForegroundColor := StyleSheet at:#'dataSet.labelView.foregroundColor' default:nil.
e47db739d7d1 #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4794
diff changeset
   258
    
2777
56bb352f6b91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2776
diff changeset
   259
    "
56bb352f6b91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2776
diff changeset
   260
     self updateStyleCache.
56bb352f6b91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2776
diff changeset
   261
    "
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   262
3989
5c6706e4e0d1 preps for highlight-frame color
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
   263
    "Modified: / 20-01-2011 / 08:44:28 / cg"
563
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
   264
!
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
   265
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
   266
verticalSpacing
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   267
    "returns the default vertical space between rows
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   268
    "
563
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
   269
    ^ 2
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
   270
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   271
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   272
2711
6cbf18e03573 category
Claus Gittinger <cg@exept.de>
parents: 2703
diff changeset
   273
!DSVColumnView class methodsFor:'image specs'!
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   274
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   275
dragIconMulti
988
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   276
    "This resource specification was automatically generated
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   277
     by the ImageEditor of ST/X."
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   278
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   279
    "Do not manually edit this!! If it is corrupted,
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   280
     the ImageEditor may not be able to read the specification."
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   281
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   282
    "
988
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   283
     self dragIconMulti inspect
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   284
     ImageEditor openOnClass:self andSelector:#dragIconMulti
5100
16a95d366ed5 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5079
diff changeset
   285
     Icon flushCachedIcons
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
5100
16a95d366ed5 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5079
diff changeset
   291
        constantNamed:'DSVColumnView dragIconMulti'
16a95d366ed5 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5079
diff changeset
   292
        ifAbsentPut:[(Depth1Image width:32 height:32) bits:(ByteArray fromPackedString:'
16a95d366ed5 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5079
diff changeset
   293
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@O?<0@C??L@@<@@@@O@@@@C3??L@<??3@OO?<<C3??O@<??0@OO?<@C3???0<???<OO???C3???0<???<OO???@C?
16a95d366ed5 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5079
diff changeset
   294
??0@???<@O???@C???0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b')
16a95d366ed5 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5079
diff changeset
   295
            colorMapFromArray:#[0 0 0 255 255 255]
16a95d366ed5 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5079
diff changeset
   296
            mask:((ImageMask width:32 height:32) bits:(ByteArray fromPackedString:'
16a95d366ed5 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5079
diff changeset
   297
@@@@@@@@@@@@@@@@@@@@@O??<@C???@@???<@O???@C????@????0O????C????0?????O????3?????????????????????????????????????????????
16a95d366ed5 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5079
diff changeset
   298
????????@????0O???<C????@????0@@@@@@@@@@@@@@@@@@@@@b'); yourself); yourself]
1926
9bcb6b59ea37 if never set, the default menuPerformer is
Claus Gittinger <cg@exept.de>
parents: 1844
diff changeset
   299
!
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   300
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   301
dragIconSingle
988
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   302
    "This resource specification was automatically generated
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   303
     by the ImageEditor of ST/X."
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   304
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   305
    "Do not manually edit this!! If it is corrupted,
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   306
     the ImageEditor may not be able to read the specification."
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   307
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   308
    "
988
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   309
     self dragIconSingle inspect
d077faaade27 better hilight colors
tz
parents: 896
diff changeset
   310
     ImageEditor openOnClass:self andSelector:#dragIconSingle
5100
16a95d366ed5 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5079
diff changeset
   311
     Icon flushCachedIcons
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   312
    "
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   313
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   314
    <resource: #image>
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   315
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   316
    ^Icon
5100
16a95d366ed5 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5079
diff changeset
   317
        constantNamed:'DSVColumnView dragIconSingle'
16a95d366ed5 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5079
diff changeset
   318
        ifAbsentPut:[(Depth1Image width:32 height:32) bits:(ByteArray fromPackedString:'
16a95d366ed5 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5079
diff changeset
   319
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@O?<0@C??L@@??30@O?<<@C??@@@??0@@O???@C???0@???<@O???@C???0@???<@O???@C???0@???<@O???@C??
16a95d366ed5 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5079
diff changeset
   320
?0@???<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b')
16a95d366ed5 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5079
diff changeset
   321
            colorMapFromArray:#[0 0 0 255 255 255]
16a95d366ed5 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5079
diff changeset
   322
            mask:((ImageMask width:32 height:32) bits:(ByteArray fromPackedString:'
16a95d366ed5 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5079
diff changeset
   323
@@@@@@@@@@@@@@@@@@@@@O??<@C???@@???<@O???@C???<@????@O???<C????@????0O???<C????@????0O???<C????@????0O???<C????@????0O??
16a95d366ed5 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5079
diff changeset
   324
?<C????@????0O???<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b'); yourself); yourself]
2711
6cbf18e03573 category
Claus Gittinger <cg@exept.de>
parents: 2703
diff changeset
   325
!
6cbf18e03573 category
Claus Gittinger <cg@exept.de>
parents: 2703
diff changeset
   326
6cbf18e03573 category
Claus Gittinger <cg@exept.de>
parents: 2703
diff changeset
   327
rowSelectorImage
4589
bf0969baace0 Use ImageMask instead of Depth1Image for masks
Stefan Vogel <sv@exept.de>
parents: 4555
diff changeset
   328
    <resource: #image>
2711
6cbf18e03573 category
Claus Gittinger <cg@exept.de>
parents: 2703
diff changeset
   329
    "This resource specification was automatically generated
6cbf18e03573 category
Claus Gittinger <cg@exept.de>
parents: 2703
diff changeset
   330
     by the ImageEditor of ST/X."
6cbf18e03573 category
Claus Gittinger <cg@exept.de>
parents: 2703
diff changeset
   331
    "Do not manually edit this!! If it is corrupted,
6cbf18e03573 category
Claus Gittinger <cg@exept.de>
parents: 2703
diff changeset
   332
     the ImageEditor may not be able to read the specification."
6cbf18e03573 category
Claus Gittinger <cg@exept.de>
parents: 2703
diff changeset
   333
    "
6cbf18e03573 category
Claus Gittinger <cg@exept.de>
parents: 2703
diff changeset
   334
     self rowSelectorImage inspect
6cbf18e03573 category
Claus Gittinger <cg@exept.de>
parents: 2703
diff changeset
   335
     ImageEditor openOnClass:self andSelector:#rowSelectorImage
4589
bf0969baace0 Use ImageMask instead of Depth1Image for masks
Stefan Vogel <sv@exept.de>
parents: 4555
diff changeset
   336
     Icon flushCachedIcons"
bf0969baace0 Use ImageMask instead of Depth1Image for masks
Stefan Vogel <sv@exept.de>
parents: 4555
diff changeset
   337
    
bf0969baace0 Use ImageMask instead of Depth1Image for masks
Stefan Vogel <sv@exept.de>
parents: 4555
diff changeset
   338
    ^ Icon constantNamed:#'DSVColumnView class rowSelectorImage'
bf0969baace0 Use ImageMask instead of Depth1Image for masks
Stefan Vogel <sv@exept.de>
parents: 4555
diff changeset
   339
        ifAbsentPut:[
bf0969baace0 Use ImageMask instead of Depth1Image for masks
Stefan Vogel <sv@exept.de>
parents: 4555
diff changeset
   340
            (Depth2Image new)
bf0969baace0 Use ImageMask instead of Depth1Image for masks
Stefan Vogel <sv@exept.de>
parents: 4555
diff changeset
   341
                width:11;
bf0969baace0 Use ImageMask instead of Depth1Image for masks
Stefan Vogel <sv@exept.de>
parents: 4555
diff changeset
   342
                height:11;
bf0969baace0 Use ImageMask instead of Depth1Image for masks
Stefan Vogel <sv@exept.de>
parents: 4555
diff changeset
   343
                photometric:(#palette);
bf0969baace0 Use ImageMask instead of Depth1Image for masks
Stefan Vogel <sv@exept.de>
parents: 4555
diff changeset
   344
                bitsPerSample:(#( 2 ));
bf0969baace0 Use ImageMask instead of Depth1Image for masks
Stefan Vogel <sv@exept.de>
parents: 4555
diff changeset
   345
                samplesPerPixel:(1);
bf0969baace0 Use ImageMask instead of Depth1Image for masks
Stefan Vogel <sv@exept.de>
parents: 4555
diff changeset
   346
                bits:(ByteArray 
bf0969baace0 Use ImageMask instead of Depth1Image for masks
Stefan Vogel <sv@exept.de>
parents: 4555
diff changeset
   347
                            fromPackedString:'@0@@@1@@?1P@@A4@EW=@G?? O?:@@C(@?2 @@2@@@0@@');
bf0969baace0 Use ImageMask instead of Depth1Image for masks
Stefan Vogel <sv@exept.de>
parents: 4555
diff changeset
   348
                colorMapFromArray:#[ 0 0 0 255 255 255 127 127 127 170 170 170 ];
bf0969baace0 Use ImageMask instead of Depth1Image for masks
Stefan Vogel <sv@exept.de>
parents: 4555
diff changeset
   349
                mask:((ImageMask new)
bf0969baace0 Use ImageMask instead of Depth1Image for masks
Stefan Vogel <sv@exept.de>
parents: 4555
diff changeset
   350
                            width:11;
bf0969baace0 Use ImageMask instead of Depth1Image for masks
Stefan Vogel <sv@exept.de>
parents: 4555
diff changeset
   351
                            height:11;
bf0969baace0 Use ImageMask instead of Depth1Image for masks
Stefan Vogel <sv@exept.de>
parents: 4555
diff changeset
   352
                            bits:(ByteArray fromPackedString:'C@@N@@<@?8C?0O? ?<C? @<@C @L@@@a');
bf0969baace0 Use ImageMask instead of Depth1Image for masks
Stefan Vogel <sv@exept.de>
parents: 4555
diff changeset
   353
                            yourself);
bf0969baace0 Use ImageMask instead of Depth1Image for masks
Stefan Vogel <sv@exept.de>
parents: 4555
diff changeset
   354
                yourself
bf0969baace0 Use ImageMask instead of Depth1Image for masks
Stefan Vogel <sv@exept.de>
parents: 4555
diff changeset
   355
        ]
1926
9bcb6b59ea37 if never set, the default menuPerformer is
Claus Gittinger <cg@exept.de>
parents: 1844
diff changeset
   356
! !
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   357
2592
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
   358
!DSVColumnView class methodsFor:'signal constants'!
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
   359
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
   360
stopRedrawSignal
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
   361
    "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
   362
     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
   363
    "
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
   364
    StopRedrawSignal isNil ifTrue:[
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
   365
        StopRedrawSignal := Notification newSignalMayProceed:true.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
   366
        StopRedrawSignal nameClass:self message:#stopRedrawSignal.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
   367
    ].
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
   368
    ^ StopRedrawSignal
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
   369
! !
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
   370
886
57bd1eddba23 catch empty line in redraw
ca
parents: 874
diff changeset
   371
!DSVColumnView methodsFor:'accessing'!
57bd1eddba23 catch empty line in redraw
ca
parents: 874
diff changeset
   372
1042
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
   373
builder
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   374
    "get the builder (UIBuilder or nil)"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   375
    
1042
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
   376
    ^ builder
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
   377
!
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
   378
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   379
builder:aBuilder 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   380
    "set the builder (UIBuilder or nil)"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   381
    
1042
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
   382
    builder := aBuilder
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
   383
!
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
   384
886
57bd1eddba23 catch empty line in redraw
ca
parents: 874
diff changeset
   385
columnView
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   386
    "returns self"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   387
    
886
57bd1eddba23 catch empty line in redraw
ca
parents: 874
diff changeset
   388
    ^ self
1067
c66188014600 keep a reference to my dataSetView.
Claus Gittinger <cg@exept.de>
parents: 1042
diff changeset
   389
!
c66188014600 keep a reference to my dataSetView.
Claus Gittinger <cg@exept.de>
parents: 1042
diff changeset
   390
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   391
heightOfContents
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   392
    "return the height of the contents in pixels"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   393
    
3488
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
   394
    cachedPreferredExtent isNil ifTrue:[
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   395
        self preferredExtent
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   396
    ].
3488
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
   397
    ^ cachedPreferredExtent y
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   398
!
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   399
2695
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
   400
labelView
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
   401
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
   402
    ^labelView
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
   403
!
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
   404
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   405
labelView:aView
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   406
    labelView := aView for:self.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   407
2146
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
   408
    labelView layout:(LayoutFrame
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
   409
                        leftFraction:0 offset:0 
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
   410
                        rightFraction:1 offset:0 
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
   411
                        topFraction:0 offset:0 
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
   412
                        bottomFraction:0 offset:[self preferredLabelViewHeight]).
1067
c66188014600 keep a reference to my dataSetView.
Claus Gittinger <cg@exept.de>
parents: 1042
diff changeset
   413
!
c66188014600 keep a reference to my dataSetView.
Claus Gittinger <cg@exept.de>
parents: 1042
diff changeset
   414
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   415
level:aLevel 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   416
    "change the level and thus the level of the labelView"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   417
    
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   418
    aLevel ~~ level ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   419
        super level:aLevel.
2146
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
   420
"/        labelView level:aLevel.
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   421
    ]
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   422
!
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   423
1661
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
   424
modifiedChannel
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
   425
    ^ modifiedChannel
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
   426
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
   427
    "Created: / 30.1.2000 / 12:10:57 / cg"
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
   428
!
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
   429
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
   430
modifiedChannel:something
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
   431
    modifiedChannel := something.
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
   432
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
   433
    "Created: / 30.1.2000 / 12:10:57 / cg"
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
   434
!
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
   435
2146
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
   436
preferredLabelViewHeight
3488
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
   437
    ^ labelView preferredHeight "/ + (labelView margin + self verticalSpacing * 2).
2146
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
   438
!
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
   439
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   440
rowFontAscent
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   441
    "returns the inset of a printable text in a row"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   442
    
1087
8e97cbfebe12 add some comment
ca
parents: 1067
diff changeset
   443
    ^ rowFontAscent
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
   444
!
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
   445
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
   446
selectedColIndex:newSelectedColIndex
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
   447
    self selectedColIndexHolder value:newSelectedColIndex
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
   448
!
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
   449
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
   450
selectedColIndexHolder
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
   451
    selectedColIndexHolder isNil ifTrue:[
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
   452
        selectedColIndexHolder := ValueHolder new.
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
   453
    ].
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
   454
    ^ selectedColIndexHolder
886
57bd1eddba23 catch empty line in redraw
ca
parents: 874
diff changeset
   455
! !
57bd1eddba23 catch empty line in redraw
ca
parents: 874
diff changeset
   456
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1809
diff changeset
   457
!DSVColumnView methodsFor:'accessing-actions'!
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   458
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   459
action:aOneArgAction 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   460
    "set the action block to be performed on select"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   461
    
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   462
    actionBlock := aOneArgAction
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   463
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   464
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   465
doubleClickAction:aOneArgAction 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   466
    "set the action block to be performed on doubleclick"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   467
    
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   468
    doubleClickActionBlock := aOneArgAction
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   469
!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   470
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   471
rowIfAbsent:aOneArgAction 
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   472
    "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
   473
     list. The argument to the block is the index into the list. The
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   474
     block returns the row which is put to the list"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   475
    
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   476
    rowIfAbsentBlock := aOneArgAction
1416
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
   477
!
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
   478
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
   479
selectConditionBlock
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
   480
    "get the select-conditionBlock; this block is evaluated before 
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
   481
     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
   482
     index as arg).
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   483
     The change will not be done, if the block returns false. "
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   484
    
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
   485
    ^ selectConditionBlock
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
   486
!
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
   487
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   488
selectConditionBlock:aOneArgBlockOrNil 
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
   489
    "set the select-conditionBlock; this block is evaluated before 
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
   490
     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
   491
     index as arg).
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   492
     The change will not be done, if the block returns false. "
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   493
    
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
   494
    selectConditionBlock := aOneArgBlockOrNil.
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
   495
!
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
   496
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   497
tabAtEndAction:aNoneArgAction 
1416
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
   498
    "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
   499
     tab next.
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   500
     The default is to give the focus to the view after self in the focusSequence"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   501
    
1416
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
   502
    tabAtEndAction := aNoneArgAction
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
   503
!
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
   504
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   505
tabAtStartAction:aNoneArgAction 
1416
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
   506
    "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
   507
     tab previous.
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   508
     The default is to give the focus to the view before self in the focusSequence"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   509
    
1416
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
   510
    tabAtStartAction := aNoneArgAction
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   511
! !
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   512
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1809
diff changeset
   513
!DSVColumnView methodsFor:'accessing-behavior'!
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   514
3130
30ac624dd866 added a hook to allow for autoScrollToColumn to be disabled.
Claus Gittinger <cg@exept.de>
parents: 3091
diff changeset
   515
autoScrollToColumn
30ac624dd866 added a hook to allow for autoScrollToColumn to be disabled.
Claus Gittinger <cg@exept.de>
parents: 3091
diff changeset
   516
    "return true, if I scroll to the column, when one is selected."
30ac624dd866 added a hook to allow for autoScrollToColumn to be disabled.
Claus Gittinger <cg@exept.de>
parents: 3091
diff changeset
   517
30ac624dd866 added a hook to allow for autoScrollToColumn to be disabled.
Claus Gittinger <cg@exept.de>
parents: 3091
diff changeset
   518
    ^ autoScrollToColumn
30ac624dd866 added a hook to allow for autoScrollToColumn to be disabled.
Claus Gittinger <cg@exept.de>
parents: 3091
diff changeset
   519
30ac624dd866 added a hook to allow for autoScrollToColumn to be disabled.
Claus Gittinger <cg@exept.de>
parents: 3091
diff changeset
   520
    "Created: / 22-10-2006 / 11:01:25 / cg"
30ac624dd866 added a hook to allow for autoScrollToColumn to be disabled.
Claus Gittinger <cg@exept.de>
parents: 3091
diff changeset
   521
!
30ac624dd866 added a hook to allow for autoScrollToColumn to be disabled.
Claus Gittinger <cg@exept.de>
parents: 3091
diff changeset
   522
30ac624dd866 added a hook to allow for autoScrollToColumn to be disabled.
Claus Gittinger <cg@exept.de>
parents: 3091
diff changeset
   523
autoScrollToColumn:aBoolean
30ac624dd866 added a hook to allow for autoScrollToColumn to be disabled.
Claus Gittinger <cg@exept.de>
parents: 3091
diff changeset
   524
    "control, if I should scroll to the column, when one is selected.
30ac624dd866 added a hook to allow for autoScrollToColumn to be disabled.
Claus Gittinger <cg@exept.de>
parents: 3091
diff changeset
   525
     The default is true"
30ac624dd866 added a hook to allow for autoScrollToColumn to be disabled.
Claus Gittinger <cg@exept.de>
parents: 3091
diff changeset
   526
30ac624dd866 added a hook to allow for autoScrollToColumn to be disabled.
Claus Gittinger <cg@exept.de>
parents: 3091
diff changeset
   527
    autoScrollToColumn := aBoolean
30ac624dd866 added a hook to allow for autoScrollToColumn to be disabled.
Claus Gittinger <cg@exept.de>
parents: 3091
diff changeset
   528
30ac624dd866 added a hook to allow for autoScrollToColumn to be disabled.
Claus Gittinger <cg@exept.de>
parents: 3091
diff changeset
   529
    "Created: / 22-10-2006 / 11:01:46 / cg"
30ac624dd866 added a hook to allow for autoScrollToColumn to be disabled.
Claus Gittinger <cg@exept.de>
parents: 3091
diff changeset
   530
!
30ac624dd866 added a hook to allow for autoScrollToColumn to be disabled.
Claus Gittinger <cg@exept.de>
parents: 3091
diff changeset
   531
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   532
beDependentOfRows
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   533
    "make myself dependent of any row; in this case any change notification
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   534
     raised by a row is catched and the cell identified by the 'readSelector'
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   535
     is redrawn. In case of a nil readSelector, the whole raw is redrawn.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   536
        -> row changed:'what'
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   537
     By default, the attribute is set to false (disabled)."
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   538
    
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   539
    ^ beDependentOfRows
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   540
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   541
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   542
beDependentOfRows:aBool 
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   543
    "make myself dependent of any row; in this case any change notification
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   544
     raised by a row is catched and the cell identified by the 'readSelector'
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   545
     is redrawn. In case of a nil readSelector, the whole raw is redrawn.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   546
        -> row changed:'what'
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   547
     By default, the attribute is set to false (disabled)."
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   548
    
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   549
    aBool ~~ beDependentOfRows ifTrue:[
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   550
        beDependentOfRows := aBool.
2836
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
   551
        aBool ifTrue:[
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
   552
            self makeDependentOfRows
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
   553
        ] ifFalse:[
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
   554
            self makeIndependentOfRows
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
   555
        ].
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
   556
    ]
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
   557
!
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
   558
1805
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
   559
enableChannel:aChannel
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
   560
    enableChannel notNil ifTrue:[
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
   561
        enableChannel removeDependent:self
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
   562
    ].
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
   563
    (enableChannel := aChannel) notNil ifTrue:[
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
   564
        enableChannel addDependent:self
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
   565
    ].
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
   566
!
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
   567
2836
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
   568
makeDependentOfRows 
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
   569
    "make myself dependent of any row"
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
   570
    
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
   571
    list size ~~ 0 ifTrue:[
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
   572
        list do:[:aRow | 
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
   573
            aRow notNil ifTrue:[
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
   574
                aRow addDependent:self
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
   575
            ]
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
   576
        ]
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
   577
    ]
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
   578
!
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
   579
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
   580
makeIndependentOfRows 
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
   581
    "make myself independent of any row"
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
   582
    
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
   583
    list size ~~ 0 ifTrue:[
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
   584
        list do:[:aRow | 
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
   585
            aRow notNil ifTrue:[
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
   586
                aRow removeDependent:self
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
   587
            ]
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
   588
        ]
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
   589
    ]
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
   590
!
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
   591
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
   592
multipleSelectOk
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   593
    "allow/disallow multiple row selections; the default is false"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   594
    
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
   595
    ^ multipleSelectOk
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
   596
!
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
   597
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   598
multipleSelectOk:aState 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   599
    "allow/disallow multiple row selections; the default is false"
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
   600
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
   601
    |colIdx rowIdx|
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
   602
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
   603
    aState == multipleSelectOk ifTrue:[^ self ].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
   604
    colIdx := rowIdx := 0.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
   605
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
   606
    self hasSelection ifTrue:[
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
   607
        colIdx := self selectedColIndex.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
   608
        rowIdx := self selectedRowIndex.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
   609
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
   610
        rowIdx isSequenceable ifTrue:[
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
   611
            rowIdx := rowIdx at:1 ifAbsent:0
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
   612
        ].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
   613
        self setSelectColIndex:0 rowIndex:0 openEditor:false.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
   614
    ].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
   615
    multipleSelectOk := aState.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
   616
    self selectColIndex:colIdx rowIndex:rowIdx openEditor:false.
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
   617
!
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
   618
1938
079c19d965c8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1934
diff changeset
   619
opaqueColumnResize
079c19d965c8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1934
diff changeset
   620
    ^ labelView opaqueColumnResize
079c19d965c8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1934
diff changeset
   621
!
079c19d965c8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1934
diff changeset
   622
079c19d965c8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1934
diff changeset
   623
opaqueColumnResize:aBoolean
079c19d965c8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1934
diff changeset
   624
    labelView opaqueColumnResize:aBoolean
079c19d965c8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1934
diff changeset
   625
!
079c19d965c8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1934
diff changeset
   626
1946
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   627
scrollWhenUpdating
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   628
    "return the scroll behavior, when I get a new text 
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   629
     (via the model or the #contents/#list)
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   630
     Possible returnValues are:
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   631
        #keep / nil     -> no change
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   632
        #endOfText      -> scroll to the end
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   633
        #beginOfText    -> scroll to the top
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   634
     The default is #beginOfText.
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   635
     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
   636
     the program (i.e. not from the user)"
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   637
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   638
    ^ scrollWhenUpdating
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   639
!
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   640
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   641
scrollWhenUpdating:aSymbolOrNil
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   642
    "define how to scroll, when I get a new text 
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   643
     (via the model or the #contents/#list)
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   644
     Allowed arguments are:
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   645
        #keep / nil     -> no change
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   646
        #endOfText      -> scroll to the end
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   647
        #beginOfText    -> scroll to the top
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   648
     The default is #beginOfText.
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   649
     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
   650
     the program (i.e. not from the user)"
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   651
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   652
    scrollWhenUpdating := aSymbolOrNil
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   653
!
0738b9f8c19f preps for scrollWhenUpdating flag
Claus Gittinger <cg@exept.de>
parents: 1941
diff changeset
   654
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
   655
selectRowOnDefault
3449
2ba8e55953aa some comments changed into reasonable english
Claus Gittinger <cg@exept.de>
parents: 3428
diff changeset
   656
    "if true, in case of selecting a none selectable cell, the row is selected.
2ba8e55953aa some comments changed into reasonable english
Claus Gittinger <cg@exept.de>
parents: 3428
diff changeset
   657
     If false, nothing is selected. The default is true."
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   658
    
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
   659
    ^ selectRowOnDefault
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
   660
!
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
   661
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   662
selectRowOnDefault:aBool 
3449
2ba8e55953aa some comments changed into reasonable english
Claus Gittinger <cg@exept.de>
parents: 3428
diff changeset
   663
    "if true, in case of selecting a none selectable cell, the row is selected.
2ba8e55953aa some comments changed into reasonable english
Claus Gittinger <cg@exept.de>
parents: 3428
diff changeset
   664
     If false, nothing is selected. The default is true."
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   665
    
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
   666
    selectRowOnDefault := aBool
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   667
!
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   668
5195
1d15a878af42 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5194
diff changeset
   669
sortListInPlace
1d15a878af42 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5194
diff changeset
   670
    "when false (default for backward compatibility): 
1d15a878af42 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5194
diff changeset
   671
     if sorting, create a copy
1d15a878af42 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5194
diff changeset
   672
     of the list, which is wrong when useIndex is on,
1d15a878af42 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5194
diff changeset
   673
     as the application will get the index in the sorted
1d15a878af42 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5194
diff changeset
   674
     list, which is probably different from tha apps list mode.
1d15a878af42 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5194
diff changeset
   675
     When true (should be default, but that might break many
1d15a878af42 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5194
diff changeset
   676
     users), the passed in list is sorted in place (i.e. possibly
1d15a878af42 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5194
diff changeset
   677
     sorting the application's list)."
1d15a878af42 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5194
diff changeset
   678
     
1d15a878af42 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5194
diff changeset
   679
    ^ sortListInPlace
1d15a878af42 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5194
diff changeset
   680
!
1d15a878af42 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5194
diff changeset
   681
1d15a878af42 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5194
diff changeset
   682
sortListInPlace:aBoolean
1d15a878af42 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5194
diff changeset
   683
    "when false (default for backward compatibility): 
1d15a878af42 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5194
diff changeset
   684
     if sorting, create a copy
1d15a878af42 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5194
diff changeset
   685
     of the list, which is wrong when useIndex is on,
1d15a878af42 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5194
diff changeset
   686
     as the application will get the index in the sorted
1d15a878af42 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5194
diff changeset
   687
     list, which is probably different from tha apps list mode.
1d15a878af42 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5194
diff changeset
   688
     When true (should be default, but that might break many
1d15a878af42 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5194
diff changeset
   689
     users), the passed in list is sorted in place (i.e. possibly
1d15a878af42 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5194
diff changeset
   690
     sorting the application's list)."
1d15a878af42 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5194
diff changeset
   691
     
1d15a878af42 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5194
diff changeset
   692
    sortListInPlace := aBoolean.
1d15a878af42 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5194
diff changeset
   693
!
1d15a878af42 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5194
diff changeset
   694
1668
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
   695
tabIntern
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   696
    "returns true if tabing is supported in the widget"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   697
    
1668
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
   698
    ^ tabIntern
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
   699
!
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
   700
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   701
tabIntern:aBool 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   702
    "returns true if tabing is supported in the widget"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   703
    
1668
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
   704
    tabIntern := aBool ? true
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
   705
!
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
   706
5194
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
   707
updateListHolderWhenSorting
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
   708
    "return true if the the listHolder's value are be updated,
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
   709
     when I sort a list.
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
   710
     By default, this is false so it must be set explicitly
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
   711
     (for bug-backward compatibility,
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
   712
     and to avoid introducing new side effects)."
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
   713
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
   714
    ^ updateListHolderWhenSorting 
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
   715
!
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
   716
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
   717
updateListHolderWhenSorting:aBoolean
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
   718
    "define if the the listHolder's value should be updated,
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
   719
     when I sort a list.
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
   720
     By default, this is false so it must be set explicitly
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
   721
     (for bug-backward compatibility,
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
   722
     and to avoid introducing new side effects)."
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
   723
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
   724
    updateListHolderWhenSorting := aBoolean
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
   725
!
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
   726
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   727
useIndex
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   728
    "specify, if the selected components value or its index in the
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   729
     list should be sent to the model. The default is its index."
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   730
    
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   731
    ^ useIndex
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   732
!
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   733
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   734
useIndex:aBool 
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   735
    "specify, if the selected components value or its index in the
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   736
     list should be sent to the model. The default is its index."
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   737
    
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   738
    useIndex := aBool
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   739
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   740
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1809
diff changeset
   741
!DSVColumnView methodsFor:'accessing-colors'!
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   742
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   743
backgroundColor
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   744
    "get the background color of the rows"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   745
    
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   746
    ^ bgColor
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   747
!
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   748
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   749
backgroundColor:aColor 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   750
    "set the background color of the rows"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   751
    
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   752
    bgColor ~~ aColor ifTrue:[
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   753
        super viewBackground:bgColor.
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   754
        self realized ifTrue:[
4991
ddee68d07788 device access
Claus Gittinger <cg@exept.de>
parents: 4961
diff changeset
   755
            bgColor := aColor onDevice:device.
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   756
            self invalidate
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   757
        ] ifFalse:[
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   758
            bgColor := aColor
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   759
        ]
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   760
    ]
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   761
!
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   762
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   763
foregroundColor
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   764
    "return the foreground color of the rows"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   765
    
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   766
    ^ fgColor
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   767
!
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   768
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   769
foregroundColor:aColor 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   770
    "set the foreground color of the rows"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   771
    
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   772
    fgColor ~~ aColor ifTrue:[
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   773
        self realized ifTrue:[
4991
ddee68d07788 device access
Claus Gittinger <cg@exept.de>
parents: 4961
diff changeset
   774
            fgColor := aColor onDevice:device.
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   775
            self invalidate
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   776
        ] ifFalse:[
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   777
            fgColor := aColor
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   778
        ]
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   779
    ]
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   780
!
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   781
4875
e47db739d7d1 #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4794
diff changeset
   782
labelBackgroundColor
e47db739d7d1 #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4794
diff changeset
   783
    "get the background color of the label row"
e47db739d7d1 #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4794
diff changeset
   784
    
e47db739d7d1 #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4794
diff changeset
   785
    ^ labelBgColor ? bgColor
e47db739d7d1 #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4794
diff changeset
   786
!
e47db739d7d1 #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4794
diff changeset
   787
e47db739d7d1 #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4794
diff changeset
   788
labelForegroundColor
e47db739d7d1 #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4794
diff changeset
   789
    "get the foreground color of the label row"
e47db739d7d1 #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4794
diff changeset
   790
    
e47db739d7d1 #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4794
diff changeset
   791
    ^ labelFgColor ? fgColor
e47db739d7d1 #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4794
diff changeset
   792
!
e47db739d7d1 #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4794
diff changeset
   793
2151
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
   794
selectionBackgroundColor
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   795
    "returns the background color of a selected row"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   796
    
3138
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
   797
    self hasFocus ifTrue:[
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
   798
        ^ selectionBackgroundColor
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
   799
    ].
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
   800
    ^ selectionBackgroundColorNoFocus.
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   801
!
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   802
2151
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
   803
selectionForegroundColor
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   804
    "returns the foreground color of a selected row"
3138
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
   805
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
   806
    self hasFocus ifTrue:[
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
   807
        ^ selectionForegroundColor
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
   808
    ].
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
   809
    ^ selectionForegroundColorNoFocus.
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   810
!
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   811
3989
5c6706e4e0d1 preps for highlight-frame color
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
   812
selectionFrameColor
5c6706e4e0d1 preps for highlight-frame color
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
   813
    "returns the frame color of a selected row"
5c6706e4e0d1 preps for highlight-frame color
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
   814
5c6706e4e0d1 preps for highlight-frame color
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
   815
    self hasFocus ifTrue:[
5c6706e4e0d1 preps for highlight-frame color
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
   816
        ^ selectionFrameColor
5c6706e4e0d1 preps for highlight-frame color
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
   817
    ].
5c6706e4e0d1 preps for highlight-frame color
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
   818
    ^ selectionFrameColorNoFocus.
5c6706e4e0d1 preps for highlight-frame color
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
   819
5c6706e4e0d1 preps for highlight-frame color
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
   820
    "Created: / 20-01-2011 / 08:45:08 / cg"
5c6706e4e0d1 preps for highlight-frame color
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
   821
!
5c6706e4e0d1 preps for highlight-frame color
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
   822
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   823
separatorDarkColor
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   824
    "returns the dark color used for drawing a shadowed separator (3D)"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   825
    
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   826
    ^ shadowColor
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   827
!
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   828
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   829
separatorLightColor
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   830
    "returns the light color used for drawing a shadowed separator (3D)"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   831
    
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   832
    ^ lightColor
2637
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   833
!
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   834
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   835
separatorOneDColor
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   836
    "returns the color used for drawing a oneD separator"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   837
    
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   838
    separatorOneDColor isNil ifTrue:[
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   839
        ^ fgColor
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   840
    ].
2637
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   841
    ^ separatorOneDColor
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   842
!
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   843
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   844
separatorOneDColor:aColorOrNil 
2637
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   845
    "set the color used for drawing a oneD separator; if the color
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   846
     is nil, the current forgroundColor is used"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   847
    
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   848
    separatorOneDColor = aColorOrNil ifTrue:[
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   849
        ^ self
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   850
    ].
2637
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   851
    separatorOneDColor := aColorOrNil.
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   852
    self realized ifTrue:[
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   853
        separatorOneDColor notNil ifTrue:[
4991
ddee68d07788 device access
Claus Gittinger <cg@exept.de>
parents: 4961
diff changeset
   854
            separatorOneDColor := separatorOneDColor onDevice:device.
2637
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   855
        ].
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   856
        self invalidate.
d563163414b8 add color for drawing separators in OneD mode
ca
parents: 2636
diff changeset
   857
    ].
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   858
! !
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
   859
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1809
diff changeset
   860
!DSVColumnView methodsFor:'accessing-columns'!
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   861
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
   862
columnAt:anIndex
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
   863
    <resource: #obsolete>
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
   864
 
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   865
    "returns the column at an index"
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
   866
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
   867
    self obsoleteMethodWarning:'use columnDescriptorAt:'.
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
   868
    ^ self columnDescriptorAt:anIndex
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
   869
!
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
   870
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
   871
columnDescriptorAt:anIndex 
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
   872
    "returns the columnDescriptor at an index"
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   873
    
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
   874
    ^ columnDescriptors at:anIndex ifAbsent:nil
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   875
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   876
886
57bd1eddba23 catch empty line in redraw
ca
parents: 874
diff changeset
   877
columnDescriptors
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   878
    "returns list of column descriptors"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   879
    
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   880
    ^ columnDescriptors collect:[:aCol | aCol description ]
886
57bd1eddba23 catch empty line in redraw
ca
parents: 874
diff changeset
   881
!
57bd1eddba23 catch empty line in redraw
ca
parents: 874
diff changeset
   882
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   883
columnDescriptors:aColumnDescriptionList 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   884
    "set the columnDescriptors; scroll to top and deselect"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   885
    
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   886
    |delta|
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
   887
886
57bd1eddba23 catch empty line in redraw
ca
parents: 874
diff changeset
   888
    self deselect.
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   889
    (viewOrigin x ~~ 0 or:[ viewOrigin y ~~ 0 ]) ifTrue:[
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   890
        delta := viewOrigin negated.
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   891
        viewOrigin := 0 @ 0.
2154
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   892
        self originChanged:delta
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   893
    ].
2154
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   894
    self setColumnDescriptors:aColumnDescriptionList
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   895
!
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   896
2703
252b881f86ad added accessor #dataSetColumns
james
parents: 2702
diff changeset
   897
dataSetColumns
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   898
    "returns the list of DataSetColumns; each column represents a DataSetColumnSpec"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   899
    
2703
252b881f86ad added accessor #dataSetColumns
james
parents: 2702
diff changeset
   900
    ^ columnDescriptors
252b881f86ad added accessor #dataSetColumns
james
parents: 2702
diff changeset
   901
!
252b881f86ad added accessor #dataSetColumns
james
parents: 2702
diff changeset
   902
2154
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   903
firstColumn
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   904
    "returns the first column"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   905
    
2154
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   906
    ^ columnDescriptors at:1
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   907
!
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   908
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   909
lastColumn
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   910
    "returns the last column"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   911
    
2154
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   912
    ^ columnDescriptors last
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   913
!
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   914
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   915
setColumnDescriptors:aColumnDescriptionList
5310
8b7aff55b666 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5308
diff changeset
   916
    "set the columnDescriptors; don't deselect and do not scroll to top"
2154
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   917
    |cid|
cb22be939082 split strings; some refactoring
Claus Gittinger <cg@exept.de>
parents: 2152
diff changeset
   918
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   919
    cid := 0.
3536
3afcdcca3101 bugfix: setColumnDescriptors:
ca
parents: 3519
diff changeset
   920
3afcdcca3101 bugfix: setColumnDescriptors:
ca
parents: 3519
diff changeset
   921
    aColumnDescriptionList isEmptyOrNil ifTrue:[
3afcdcca3101 bugfix: setColumnDescriptors:
ca
parents: 3519
diff changeset
   922
        columnDescriptors := OrderedCollection new.
3afcdcca3101 bugfix: setColumnDescriptors:
ca
parents: 3519
diff changeset
   923
    ] ifFalse:[
3afcdcca3101 bugfix: setColumnDescriptors:
ca
parents: 3519
diff changeset
   924
        columnDescriptors := aColumnDescriptionList 
3afcdcca3101 bugfix: setColumnDescriptors:
ca
parents: 3519
diff changeset
   925
            collect:
3afcdcca3101 bugfix: setColumnDescriptors:
ca
parents: 3519
diff changeset
   926
                [:el||dsc lbl|
3afcdcca3101 bugfix: setColumnDescriptors:
ca
parents: 3519
diff changeset
   927
                    dsc := el isSequenceable 
3afcdcca3101 bugfix: setColumnDescriptors:
ca
parents: 3519
diff changeset
   928
                                ifTrue:[DataSetColumnSpec decodeFromLiteralArray:el]
3afcdcca3101 bugfix: setColumnDescriptors:
ca
parents: 3519
diff changeset
   929
                                ifFalse:[el].
3afcdcca3101 bugfix: setColumnDescriptors:
ca
parents: 3519
diff changeset
   930
                    cid := cid + 1.
3afcdcca3101 bugfix: setColumnDescriptors:
ca
parents: 3519
diff changeset
   931
                    lbl := DataSetLabel new description:dsc builder:builder on:labelView.
3afcdcca3101 bugfix: setColumnDescriptors:
ca
parents: 3519
diff changeset
   932
                    DataSetColumn new on:self description:dsc columnNumber:cid label:lbl
3afcdcca3101 bugfix: setColumnDescriptors:
ca
parents: 3519
diff changeset
   933
                ].
3afcdcca3101 bugfix: setColumnDescriptors:
ca
parents: 3519
diff changeset
   934
    ].
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   935
3488
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
   936
    cachedPreferredExtent := nil.
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
   937
    labelView columns:columnDescriptors.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   938
4095
1a4c11fc0865 added: #invalidateDeviceRectangle:repairNow:
Claus Gittinger <cg@exept.de>
parents: 4073
diff changeset
   939
    self fitColumns.
1a4c11fc0865 added: #invalidateDeviceRectangle:repairNow:
Claus Gittinger <cg@exept.de>
parents: 4073
diff changeset
   940
1a4c11fc0865 added: #invalidateDeviceRectangle:repairNow:
Claus Gittinger <cg@exept.de>
parents: 4073
diff changeset
   941
    "Modified: / 07-01-2012 / 16:46:59 / cg"
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   942
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
   943
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1809
diff changeset
   944
!DSVColumnView methodsFor:'accessing-interactors'!
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   945
1100
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   946
checkToggleActiveImage
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   947
    ^ checkToggleActiveImage
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   948
!
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   949
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   950
checkToggleExtent
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   951
    "returns the extent of a checkToggle"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   952
    
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   953
    ^ checkToggleExtent
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   954
!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   955
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   956
checkToggleForm
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   957
    "returns the form of a checkToggle"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   958
    
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   959
    ^ checkToggleForm
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   960
!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   961
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   962
checkToggleLevel
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   963
    "returns the level of a checkToggle button"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   964
    
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   965
    ^ checkToggleLevel
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   966
!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   967
1100
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   968
checkTogglePassiveImage
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   969
    ^ checkTogglePassiveImage
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   970
!
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
   971
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   972
comboButtonExtent
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   973
    "returns the extent of a comboList or -Box"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   974
    
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   975
    ^ comboButtonExtent
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   976
!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   977
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   978
comboButtonForm
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   979
    "returns the form of a comboList or -Box"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   980
    
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   981
    ^ comboButtonForm
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   982
!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   983
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   984
comboButtonLevel
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   985
    "returns the level of a comboList or -Box button"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   986
    
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   987
    ^ comboButtonLevel
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   988
!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   989
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
   990
radioButtonExtent
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
   991
    "returns the extent of a radio button"
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
   992
    
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
   993
    ^ radioButtonActiveImage extent
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
   994
!
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
   995
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   996
rowSelectorExtent
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   997
    "returns the bitmap of a selected row"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   998
    
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
   999
    ^ rowSelectorForm extent
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1000
!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1001
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1002
rowSelectorForm
2711
6cbf18e03573 category
Claus Gittinger <cg@exept.de>
parents: 2703
diff changeset
  1003
    "returns the (arrow-) image shown for a selected row.
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1004
     (the arrow shown in the first column)"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1005
    
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1006
    ^ rowSelectorForm
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1007
! !
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1008
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1809
diff changeset
  1009
!DSVColumnView methodsFor:'accessing-mvc'!
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  1010
1008
7874385db982 changes to support columnAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
  1011
columnAdaptor
7874385db982 changes to support columnAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
  1012
    "return the value of the instance variable 'columnAdaptor' (automatically generated)"
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1013
    
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1014
    columnAdaptor isValueModel ifTrue:[
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1015
        ^ columnAdaptor value
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1016
    ].
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1017
    ^ columnAdaptor
1711
97e1fd579b89 columnAdapter can now be a valueHolder
ca
parents: 1673
diff changeset
  1018
!
1008
7874385db982 changes to support columnAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
  1019
7874385db982 changes to support columnAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
  1020
columnAdaptor:something
7874385db982 changes to support columnAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
  1021
    "set the value of the instance variable 'columnAdaptor' (automatically generated)"
7874385db982 changes to support columnAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
  1022
1711
97e1fd579b89 columnAdapter can now be a valueHolder
ca
parents: 1673
diff changeset
  1023
    columnAdaptor isValueModel ifTrue:[
97e1fd579b89 columnAdapter can now be a valueHolder
ca
parents: 1673
diff changeset
  1024
        columnAdaptor removeDependent:self
97e1fd579b89 columnAdapter can now be a valueHolder
ca
parents: 1673
diff changeset
  1025
    ].
97e1fd579b89 columnAdapter can now be a valueHolder
ca
parents: 1673
diff changeset
  1026
    (columnAdaptor := something) isValueModel ifTrue:[
97e1fd579b89 columnAdapter can now be a valueHolder
ca
parents: 1673
diff changeset
  1027
        columnAdaptor addDependent:self
97e1fd579b89 columnAdapter can now be a valueHolder
ca
parents: 1673
diff changeset
  1028
    ].
97e1fd579b89 columnAdapter can now be a valueHolder
ca
parents: 1673
diff changeset
  1029
!
1008
7874385db982 changes to support columnAdaptors
Claus Gittinger <cg@exept.de>
parents: 991
diff changeset
  1030
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  1031
columnHolder
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1032
    "get the valueHolder, which keeps the list of column descriptions"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1033
    
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  1034
    ^ columnHolder
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  1035
!
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  1036
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1037
columnHolder:aValueHolder 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1038
    "set the valueHolder, which keeps the list of column descriptions"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1039
    
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  1040
    |columns|
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  1041
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  1042
    columnHolder notNil ifTrue:[
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  1043
        columnHolder removeDependent:self
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  1044
    ].
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  1045
    (columnHolder := aValueHolder) notNil ifTrue:[
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  1046
        columnHolder addDependent:self.
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  1047
        columns := columnHolder value.
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  1048
        columns notNil ifTrue:[
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  1049
            self columnDescriptors:columns
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  1050
        ]
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  1051
    ].
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1052
!
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1053
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1054
listAt:index put:newElement 
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1055
    "kludge callback, when an element hs to be replaced
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1056
     due to a col-adaptor returning a new row element"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1057
    
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1058
    |list|
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1059
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1060
    (list := listHolder value) notNil ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1061
        list at:index put:newElement
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1062
    ]
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1063
!
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1064
2318
41a4297a87af access method for the listHolder
ca
parents: 2276
diff changeset
  1065
listHolder
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1066
    "get the valueHolder which holds the list of rows"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1067
    
2318
41a4297a87af access method for the listHolder
ca
parents: 2276
diff changeset
  1068
    ^ listHolder
41a4297a87af access method for the listHolder
ca
parents: 2276
diff changeset
  1069
!
41a4297a87af access method for the listHolder
ca
parents: 2276
diff changeset
  1070
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1071
listHolder:aListHolder 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1072
    "set the valueHolder which holds the list of rows"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1073
    
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1074
    listHolder ~~ aListHolder ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1075
        listHolder notNil ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1076
            listHolder removeDependent:self
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1077
        ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1078
        (listHolder := aListHolder) notNil ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1079
            listHolder addDependent:self
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1080
        ]
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1081
    ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1082
    self pushEvent:#list: with:(listHolder value).
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
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1085
model:aModel 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1086
    "set the valueHolder which holds the selection and maybe the list of rows"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1087
    
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1088
    model notNil ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1089
        model removeDependent:self.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1090
        (model respondsTo:#list) ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1091
            (model list == listHolder) ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1092
                self listHolder:nil
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1093
            ]
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1094
        ]
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1095
    ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1096
    (model := aModel) notNil ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1097
        model addDependent:self.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1098
        (aModel respondsTo:#list) ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1099
            self listHolder:model list
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1100
        ]
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1101
    ]
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  1102
! !
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  1103
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1809
diff changeset
  1104
!DSVColumnView methodsFor:'accessing-rows'!
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1105
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1106
at:aRowNr
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1107
    "return the row at an index, aRowNr"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1108
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1109
    |row|
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1110
3994
f44c9cded11e changed: #at:
Claus Gittinger <cg@exept.de>
parents: 3993
diff changeset
  1111
    list isNil ifTrue:[^ nil].
3757
05d3a8228fdd changed: #at:
Claus Gittinger <cg@exept.de>
parents: 3742
diff changeset
  1112
    (row := list at:aRowNr ifAbsent:nil) isNil ifTrue:[
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1113
        lockRowIndex := aRowNr.
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1114
1034
bd02c4cd7582 care for nonexisting rowIfAbsentBlock when a nil-row is encountered.
Claus Gittinger <cg@exept.de>
parents: 1023
diff changeset
  1115
        (rowIfAbsentBlock notNil
bd02c4cd7582 care for nonexisting rowIfAbsentBlock when a nil-row is encountered.
Claus Gittinger <cg@exept.de>
parents: 1023
diff changeset
  1116
        and:[(row := rowIfAbsentBlock value:aRowNr) notNil]) ifTrue:[
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1117
            list at:aRowNr put:row.
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1118
            beDependentOfRows ifTrue:[row addDependent:self].
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1119
        ].
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1120
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1121
        lockRowIndex := 0
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1122
    ].
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1123
    ^ row
1034
bd02c4cd7582 care for nonexisting rowIfAbsentBlock when a nil-row is encountered.
Claus Gittinger <cg@exept.de>
parents: 1023
diff changeset
  1124
3994
f44c9cded11e changed: #at:
Claus Gittinger <cg@exept.de>
parents: 3993
diff changeset
  1125
    "Modified: / 22-01-2011 / 09:14:48 / cg"
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1126
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1127
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1128
at:aRowNr ifAbsent:exceptionBlock 
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  1129
    "return the row at a aRowNr. If the index is invalid, return the
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1130
     result of evaluating the exceptionblock"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1131
    
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1132
    (aRowNr between:1 and:list size) ifTrue:[
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1133
        ^ self at:aRowNr
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1134
    ].
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1135
    ^ exceptionBlock value
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1136
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1137
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1138
at:aRowNr put:aRow 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1139
    "change the row at an index. The added row is returned"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1140
    
1956
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1141
    lockRowIndex ~~ aRowNr ifTrue:[
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1142
        (aRowNr <= list size and:[ (list at:aRowNr) == aRow ]) ifTrue:[
1956
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1143
            self invalidateRowAt:aRowNr
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1144
        ] ifFalse:[
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1145
            self 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1146
                replaceFrom:aRowNr
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1147
                to:aRowNr
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1148
                with:(Array with:aRow)
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1149
                startingAt:1.
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1150
        ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1151
    ].
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1152
    ^ aRow
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1153
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1154
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1155
first
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1156
    "return the first row"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1157
    
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1158
    ^ self at:1
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1159
!
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1160
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1161
identityIndexOfRow:aRow 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1162
    "returns index of a row or 0"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1163
    
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1164
    (list size ~~ 0 and:[ aRow notNil ]) ifTrue:[
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1165
        ^ list identityIndexOf:aRow
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1166
    ].
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1167
    ^ 0
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1168
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1169
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1170
last
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1171
    "return the last row"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1172
    
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1173
    ^ self at:(list size)
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1174
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1175
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1176
list
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1177
    "get the list of rows"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1178
    
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1179
    ^ list
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1180
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1181
3773
c4fcafeada43 sortable
Claus Gittinger <cg@exept.de>
parents: 3770
diff changeset
  1182
list:aRawList
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1183
    "set the list of rows"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1184
3897
3c7724395afc changed: #list:
Claus Gittinger <cg@exept.de>
parents: 3855
diff changeset
  1185
    |newList selectionHasChanged sortColNr sortSelectorOrBlock sortBlockSelector sortBlock|
656
96a9b94e5472 bugfix:
ca
parents: 649
diff changeset
  1186
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1187
    "/ remove selection without redraw
622
2588f809445d update:with:from:
ca
parents: 618
diff changeset
  1188
1259
be271bf31e4b raise selectionChanged notification in case that
tm
parents: 1258
diff changeset
  1189
    selectionHasChanged := self hasSelection.
be271bf31e4b raise selectionChanged notification in case that
tm
parents: 1258
diff changeset
  1190
1111
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  1191
    self destroyEditView.
622
2588f809445d update:with:from:
ca
parents: 618
diff changeset
  1192
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  1193
    self selectedColIndex:0.
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1194
    selectedRowIndex := multipleSelectOk ifTrue:[nil] ifFalse:[0].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1195
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  1196
    shown ifFalse:[
3488
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  1197
        cachedPreferredExtent := nil
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  1198
    ] ifTrue:[
3773
c4fcafeada43 sortable
Claus Gittinger <cg@exept.de>
parents: 3770
diff changeset
  1199
        aRawList size == 0 ifTrue:[  
2834
edddf1a3c2ea *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2816
diff changeset
  1200
            "/ keep old column-width information
edddf1a3c2ea *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2816
diff changeset
  1201
        ] ifFalse:[
2524
a41c43dba6c9 care for nil colDescr.
Claus Gittinger <cg@exept.de>
parents: 2523
diff changeset
  1202
            columnDescriptors notNil ifTrue:[
a41c43dba6c9 care for nil colDescr.
Claus Gittinger <cg@exept.de>
parents: 2523
diff changeset
  1203
                columnDescriptors do:[:aCol| aCol invalidate ].
a41c43dba6c9 care for nil colDescr.
Claus Gittinger <cg@exept.de>
parents: 2523
diff changeset
  1204
            ].
3488
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  1205
            cachedPreferredExtent := nil.
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1206
        ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1207
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1208
2836
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
  1209
    beDependentOfRows ifTrue:[
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
  1210
        self makeIndependentOfRows
656
96a9b94e5472 bugfix:
ca
parents: 649
diff changeset
  1211
    ].
643
bfd44867347f adding: bug fix
ca
parents: 642
diff changeset
  1212
3773
c4fcafeada43 sortable
Claus Gittinger <cg@exept.de>
parents: 3770
diff changeset
  1213
    aRawList size == 0 ifTrue:[
1948
9ed8131d94bb viewOrigin fix (when list is set to nil while not shown);
Claus Gittinger <cg@exept.de>
parents: 1947
diff changeset
  1214
        list := nil.
9ed8131d94bb viewOrigin fix (when list is set to nil while not shown);
Claus Gittinger <cg@exept.de>
parents: 1947
diff changeset
  1215
        viewOrigin := 0 @ 0.
2834
edddf1a3c2ea *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2816
diff changeset
  1216
    ] ifFalse:[
3773
c4fcafeada43 sortable
Claus Gittinger <cg@exept.de>
parents: 3770
diff changeset
  1217
        "/ list := OrderedCollection withAll:aRawList.
4613
73e2facef522 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4606
diff changeset
  1218
        sortListInPlace ifTrue:[
73e2facef522 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4606
diff changeset
  1219
            newList := aRawList
73e2facef522 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4606
diff changeset
  1220
        ] ifFalse:[
73e2facef522 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4606
diff changeset
  1221
            newList := aRawList copyAsOrderedCollection.
73e2facef522 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4606
diff changeset
  1222
        ].
3773
c4fcafeada43 sortable
Claus Gittinger <cg@exept.de>
parents: 3770
diff changeset
  1223
        (sortColNr := labelView indexOfSortColumn) notNil ifTrue:[
3897
3c7724395afc changed: #list:
Claus Gittinger <cg@exept.de>
parents: 3855
diff changeset
  1224
            sortBlockSelector := (columnDescriptors at:sortColNr) sortBlockSelector.
3c7724395afc changed: #list:
Claus Gittinger <cg@exept.de>
parents: 3855
diff changeset
  1225
            sortBlockSelector notNil ifTrue:[
3964
df77ea0f171d changed: #list:
Claus Gittinger <cg@exept.de>
parents: 3962
diff changeset
  1226
                sortBlock := self application aspectFor:sortBlockSelector.
3897
3c7724395afc changed: #list:
Claus Gittinger <cg@exept.de>
parents: 3855
diff changeset
  1227
                newList sort:sortBlock
3c7724395afc changed: #list:
Claus Gittinger <cg@exept.de>
parents: 3855
diff changeset
  1228
            ] ifFalse:[
3c7724395afc changed: #list:
Claus Gittinger <cg@exept.de>
parents: 3855
diff changeset
  1229
                sortSelectorOrBlock := (columnDescriptors at:sortColNr) sortSelector.
3c7724395afc changed: #list:
Claus Gittinger <cg@exept.de>
parents: 3855
diff changeset
  1230
                sortSelectorOrBlock notNil ifTrue:[
3c7724395afc changed: #list:
Claus Gittinger <cg@exept.de>
parents: 3855
diff changeset
  1231
                    sortSelectorOrBlock isBlock ifTrue:[
3c7724395afc changed: #list:
Claus Gittinger <cg@exept.de>
parents: 3855
diff changeset
  1232
                        newList sort:sortSelectorOrBlock
3c7724395afc changed: #list:
Claus Gittinger <cg@exept.de>
parents: 3855
diff changeset
  1233
                    ] ifFalse:[
3c7724395afc changed: #list:
Claus Gittinger <cg@exept.de>
parents: 3855
diff changeset
  1234
                        newList sort:[:a :b | (a perform:sortSelectorOrBlock) < (b perform:sortSelectorOrBlock)]
3c7724395afc changed: #list:
Claus Gittinger <cg@exept.de>
parents: 3855
diff changeset
  1235
                    ].
3773
c4fcafeada43 sortable
Claus Gittinger <cg@exept.de>
parents: 3770
diff changeset
  1236
                ].
c4fcafeada43 sortable
Claus Gittinger <cg@exept.de>
parents: 3770
diff changeset
  1237
            ].
c4fcafeada43 sortable
Claus Gittinger <cg@exept.de>
parents: 3770
diff changeset
  1238
            labelView reverseSort ifTrue:[
c4fcafeada43 sortable
Claus Gittinger <cg@exept.de>
parents: 3770
diff changeset
  1239
                newList reverse.
c4fcafeada43 sortable
Claus Gittinger <cg@exept.de>
parents: 3770
diff changeset
  1240
            ].
c4fcafeada43 sortable
Claus Gittinger <cg@exept.de>
parents: 3770
diff changeset
  1241
        ].
c4fcafeada43 sortable
Claus Gittinger <cg@exept.de>
parents: 3770
diff changeset
  1242
        list := newList.
5194
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
  1243
        
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
  1244
        sortListInPlace ifFalse:[
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
  1245
            listHolder notNil ifTrue:[
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
  1246
                updateListHolderWhenSorting ifTrue:[
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
  1247
                    listHolder value:newList withoutNotifying:self.
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
  1248
                ].
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
  1249
            ].
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
  1250
        ].
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
  1251
        
2836
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
  1252
        beDependentOfRows ifTrue:[
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
  1253
            self makeDependentOfRows
5989b6c71e87 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2835
diff changeset
  1254
        ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1255
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1256
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  1257
    shown ifTrue:[
1484
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
  1258
        self fitColumns
1949
0d9451776275 delayed fitColumns if not shown while list is changed.
ps
parents: 1948
diff changeset
  1259
    ] ifFalse:[
0d9451776275 delayed fitColumns if not shown while list is changed.
ps
parents: 1948
diff changeset
  1260
        needFitColumns := true
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1261
    ].
1259
be271bf31e4b raise selectionChanged notification in case that
tm
parents: 1258
diff changeset
  1262
    selectionHasChanged ifTrue:[
be271bf31e4b raise selectionChanged notification in case that
tm
parents: 1258
diff changeset
  1263
        self selectionChanged.
be271bf31e4b raise selectionChanged notification in case that
tm
parents: 1258
diff changeset
  1264
    ].
3488
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  1265
    cachedPreferredExtent := nil.
2044
8e36106065f0 fixed: click on a checkToggle (buttonPress event)
Claus Gittinger <cg@exept.de>
parents: 2032
diff changeset
  1266
    self contentsChanged.
3897
3c7724395afc changed: #list:
Claus Gittinger <cg@exept.de>
parents: 3855
diff changeset
  1267
3964
df77ea0f171d changed: #list:
Claus Gittinger <cg@exept.de>
parents: 3962
diff changeset
  1268
    "Modified: / 08-11-2010 / 22:07:49 / cg"
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1269
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1270
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1809
diff changeset
  1271
!DSVColumnView methodsFor:'accessing-visibility'!
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1272
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1273
font:aFont 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1274
    "set the font for all shown rows."
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1275
    
4521
727d661f5e8e class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4496
diff changeset
  1276
    (aFont notNil and:[ aFont ~~ self font ]) ifTrue:[
727d661f5e8e class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4496
diff changeset
  1277
        super font:aFont.
727d661f5e8e class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4496
diff changeset
  1278
        rowFontAscent := gc font ascent.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1279
        realized ifTrue:[
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1280
            columnDescriptors do:[:aCol | 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1281
                aCol invalidate
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1282
            ].
1149
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  1283
            self preferredExtentChanged.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1284
            self invalidate.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1285
            self contentsChanged
1842
402a364ee001 delegate font to labelView
martin
parents: 1818
diff changeset
  1286
        ].
402a364ee001 delegate font to labelView
martin
parents: 1818
diff changeset
  1287
        labelView notNil ifTrue:[
4521
727d661f5e8e class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4496
diff changeset
  1288
            labelView font:gc font
1842
402a364ee001 delegate font to labelView
martin
parents: 1818
diff changeset
  1289
        ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1290
    ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1291
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1292
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  1293
has3Dseparators
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1294
    "returns true if shown in 3D mode"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1295
    
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  1296
    ^ separatorSize ~~ 1
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1297
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1298
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1299
has3Dseparators:aBool 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1300
    "enable or disable 3D mode"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1301
    
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  1302
    |newSepSize|
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1303
3672
ff861e62db1d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3604
diff changeset
  1304
    newSepSize := aBool ifTrue:[2] ifFalse:[1].
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  1305
    newSepSize ~~ separatorSize ifTrue:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  1306
        separatorSize := newSepSize.
1149
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  1307
        realized ifTrue:[
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1308
            columnDescriptors do:[:aCol | 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1309
                aCol invalidate
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1310
            ].
1136
4a9d9db81422 set bg/fg color when drawing an interactor
ca
parents: 1134
diff changeset
  1311
            self preferredExtentChanged.
1149
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  1312
            self invalidate.
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  1313
            self contentsChanged
647
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  1314
        ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1315
    ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1316
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1317
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1318
horizontalSpacing
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1319
    "horizontal spacing used by columns"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1320
    
563
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1321
    ^ horizontalSpacing
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1322
!
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1323
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1324
horizontalSpacing:aNumber 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1325
    "horizontal spacing used by columns"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1326
    
563
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1327
    horizontalSpacing ~~ aNumber ifTrue:[
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1328
        horizontalSpacing := aNumber.
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1329
        self preferredExtentChanged.
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1330
    ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1331
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1332
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1333
showLabels
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1334
    "control the labels view to be visible or unvisible"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1335
    
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1336
    ^ labelView isVisible
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1337
!
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1338
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1339
showLabels:aState 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1340
    "control the labels view to be visible or unvisible"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1341
    
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1342
    labelView isVisible:aState
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1343
!
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1344
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1345
verticalSpacing
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1346
    "vertical spacing used by columns"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1347
    
563
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1348
    ^ verticalSpacing
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1349
!
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1350
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1351
verticalSpacing:aNumber 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1352
    "vertical spacing used by columns"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1353
    
563
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1354
    verticalSpacing ~~ aNumber ifTrue:[
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1355
        verticalSpacing := aNumber.
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1356
        self preferredExtentChanged.
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  1357
    ].
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
!DSVColumnView methodsFor:'adding & removing rows'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1361
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1362
add:aRow 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1363
    "insert row at end"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1364
    
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1365
    ^ self add:aRow beforeIndex:(1 + list size)
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1366
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1367
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1368
add:aRow afterIndex:aRowNr 
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1369
    "add a new row after slot aRowNr and redisplay; returns nil in case
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1370
     of an invalid index or the row"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1371
    
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1372
    ^ self add:aRow beforeIndex:(aRowNr + 1)
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1373
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1374
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1375
add:aRow beforeIndex:aRowNr 
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1376
    "add a new row before slot aRowNr and redisplay; returns nil in case
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1377
     of an invalid index or the row"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1378
    
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1379
    self addAll:(Array with:aRow) beforeIndex:aRowNr.
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1380
    ^ aRow.
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1381
!
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1382
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1383
addAll:aList beforeIndex:start
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1384
    "add a collection of rows before slot start and redisplay"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1385
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1386
    |y0 y1 yD h dH size noSel|
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1387
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1388
    (size := aList size) == 0 ifTrue:[
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1389
        ^ self
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1390
    ].
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1391
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1392
    beDependentOfRows ifTrue:[
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1393
        aList do:[:aRow| aRow notNil ifTrue:[aRow addDependent:self]]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1394
    ].
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1395
4116
d79570ee3773 changed:
Stefan Vogel <sv@exept.de>
parents: 4101
diff changeset
  1396
    list isNil ifTrue:[
d79570ee3773 changed:
Stefan Vogel <sv@exept.de>
parents: 4101
diff changeset
  1397
        self list:aList.
d79570ee3773 changed:
Stefan Vogel <sv@exept.de>
parents: 4101
diff changeset
  1398
    ] ifFalse:[
d79570ee3773 changed:
Stefan Vogel <sv@exept.de>
parents: 4101
diff changeset
  1399
        noSel := self numberOfSelections.
d79570ee3773 changed:
Stefan Vogel <sv@exept.de>
parents: 4101
diff changeset
  1400
d79570ee3773 changed:
Stefan Vogel <sv@exept.de>
parents: 4101
diff changeset
  1401
        noSel ~~ 0 ifTrue:[
d79570ee3773 changed:
Stefan Vogel <sv@exept.de>
parents: 4101
diff changeset
  1402
            multipleSelectOk ifFalse:[
d79570ee3773 changed:
Stefan Vogel <sv@exept.de>
parents: 4101
diff changeset
  1403
                selectedRowIndex >= start ifTrue:[
d79570ee3773 changed:
Stefan Vogel <sv@exept.de>
parents: 4101
diff changeset
  1404
                    selectedRowIndex := selectedRowIndex + size
d79570ee3773 changed:
Stefan Vogel <sv@exept.de>
parents: 4101
diff changeset
  1405
                ]
d79570ee3773 changed:
Stefan Vogel <sv@exept.de>
parents: 4101
diff changeset
  1406
            ] ifTrue:[
d79570ee3773 changed:
Stefan Vogel <sv@exept.de>
parents: 4101
diff changeset
  1407
                1 to:noSel do:[:i||v|
d79570ee3773 changed:
Stefan Vogel <sv@exept.de>
parents: 4101
diff changeset
  1408
                    (v := selectedRowIndex at:i) >= start ifTrue:[
d79570ee3773 changed:
Stefan Vogel <sv@exept.de>
parents: 4101
diff changeset
  1409
                        selectedRowIndex at:i put:(v + size)
d79570ee3773 changed:
Stefan Vogel <sv@exept.de>
parents: 4101
diff changeset
  1410
                    ]
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  1411
                ]
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  1412
            ]
4116
d79570ee3773 changed:
Stefan Vogel <sv@exept.de>
parents: 4101
diff changeset
  1413
        ].
d79570ee3773 changed:
Stefan Vogel <sv@exept.de>
parents: 4101
diff changeset
  1414
        list addAll:aList beforeIndex:start.
d79570ee3773 changed:
Stefan Vogel <sv@exept.de>
parents: 4101
diff changeset
  1415
    ].
d79570ee3773 changed:
Stefan Vogel <sv@exept.de>
parents: 4101
diff changeset
  1416
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1417
    self recomputeHeightOfContents.
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1418
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1419
    y0 := (start - 1) * rowHeight.
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1420
    yD := size * rowHeight.
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1421
    y1 := y0 + yD.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1422
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1423
    y0 < viewOrigin y ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1424
        self originWillChange.
1948
9ed8131d94bb viewOrigin fix (when list is set to nil while not shown);
Claus Gittinger <cg@exept.de>
parents: 1947
diff changeset
  1425
        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
  1426
        "/ viewOrigin y:(yD + viewOrigin y).
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1427
        self originChanged:(0 @ yD).
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1428
    ].
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1429
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1430
    (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
  1431
        self invalidate.
8e36106065f0 fixed: click on a checkToggle (buttonPress event)
Claus Gittinger <cg@exept.de>
parents: 2032
diff changeset
  1432
        self contentsChanged.
8e36106065f0 fixed: click on a checkToggle (buttonPress event)
Claus Gittinger <cg@exept.de>
parents: 2032
diff changeset
  1433
        ^ self
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1434
    ].
645
53c78cc2ee08 redraw twice in case of expose event during adding a new entry
ca
parents: 643
diff changeset
  1435
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1436
    y0 := self yVisibleOfRowNr:start.
1258
d41cbd2c3dc8 addAll:...
tm
parents: 1227
diff changeset
  1437
    h  := height - margin.
d41cbd2c3dc8 addAll:...
tm
parents: 1227
diff changeset
  1438
    y1 := y0 + yD min:h.
d41cbd2c3dc8 addAll:...
tm
parents: 1227
diff changeset
  1439
d41cbd2c3dc8 addAll:...
tm
parents: 1227
diff changeset
  1440
    (y1 > margin and:[y0 < h]) ifTrue:[
1952
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1441
        "/ cg: if I have a non-solid background color,
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1442
        "/ or individual items have a bgColor selector,
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1443
        "/ invalidate the area (and readraw) instead of a scroll.
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1444
        (viewBackground isImageOrForm 
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1445
        or:[ self anyColumnHasPotentialNonConstantBackground ])
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1446
        ifTrue:[
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1447
            "/ do not scroll but invalidate ...
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1448
            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
  1449
        ] ifFalse:[
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1450
            h  := h - y1.
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1451
            y0 := y0 max:margin.
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1452
            dH := y1 - y0.
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1453
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1454
            start == list size ifFalse:[
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1455
                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
  1456
            ].
1da01418012a if any col has potential non-constant background,
ps
parents: 1951
diff changeset
  1457
            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
  1458
        ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1459
    ].
3478
85c3eb472b36 scrollToBottom if scrollWhenUpdating is #endOfText in #addAll:beforeIndex:
fm
parents: 3458
diff changeset
  1460
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1461
    self contentsChanged.
3478
85c3eb472b36 scrollToBottom if scrollWhenUpdating is #endOfText in #addAll:beforeIndex:
fm
parents: 3458
diff changeset
  1462
85c3eb472b36 scrollToBottom if scrollWhenUpdating is #endOfText in #addAll:beforeIndex:
fm
parents: 3458
diff changeset
  1463
    (scrollWhenUpdating == #end or:[scrollWhenUpdating == #endOfText]) ifTrue:[
85c3eb472b36 scrollToBottom if scrollWhenUpdating is #endOfText in #addAll:beforeIndex:
fm
parents: 3458
diff changeset
  1464
        self scrollToBottom.
85c3eb472b36 scrollToBottom if scrollWhenUpdating is #endOfText in #addAll:beforeIndex:
fm
parents: 3458
diff changeset
  1465
    ].
567
01083cbb4bae checkin from browser
ca
parents: 563
diff changeset
  1466
!
01083cbb4bae checkin from browser
ca
parents: 563
diff changeset
  1467
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1468
addFirst:aRow 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1469
    "insert a row at start"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1470
    
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1471
    ^ self add:aRow beforeIndex:1
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1472
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1473
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1474
remove:aRow 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1475
    "remove a row"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1476
    
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1477
    |idx|
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
    idx := list identityIndexOf:aRow.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1480
    idx ~~ 0 ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1481
        self removeFrom:idx to:idx.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1482
    ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1483
    ^ aRow
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
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1486
removeFirst
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1487
    "remove first row; returns the removed row"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1488
    
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  1489
    ^ self removeIndex:1
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1490
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1491
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1492
removeFrom:startIndex to:stopIndex
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1493
    "remove rows from start to stop"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1494
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1495
    |coll noRedraw
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1496
     noSel "{ Class: SmallInteger }"
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1497
     size  "{ Class: SmallInteger }"
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1498
     start "{ Class: SmallInteger }"
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1499
     stop  "{ Class: SmallInteger }"
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1500
     y0    "{ Class: SmallInteger }"
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1501
     y1    "{ Class: SmallInteger }"
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1502
     oY    "{ Class: SmallInteger }"
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1503
     dY    "{ Class: SmallInteger }"
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1504
     yB    "{ Class: SmallInteger }"
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1505
     h     "{ Class: SmallInteger }"
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1506
    |
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1507
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1508
    (    (start := startIndex) < 1
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1509
     or:[(stop := stopIndex) > list size]
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1510
    ) ifTrue:[
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1511
        ^ self subscriptBoundsError:start
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  1512
    ].
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1513
    size := stop - start + 1.
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1514
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1515
    beDependentOfRows ifTrue:[
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1516
        list from:start to:stop do:[:r| r notNil ifTrue:[r removeDependent:self]].
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1517
    ].
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1518
    noSel := self numberOfSelections.
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1519
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1520
    noSel ~~ 0 ifTrue:[
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1521
        noSel == 1 ifTrue:[
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1522
            noSel := self firstIndexSelected.
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1523
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1524
            noSel < start ifFalse:[
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1525
                noSel > stop ifTrue:[
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1526
                    noSel := noSel - size.
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1527
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1528
                    multipleSelectOk ifFalse:[selectedRowIndex := noSel]
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1529
                                      ifTrue:[selectedRowIndex at:1 put:noSel]
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1530
                ] ifFalse:[
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1531
                    editValue notNil ifTrue:[
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1532
                        editValue removeDependent:self.
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1533
                        editValue := nil.
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1534
                    ].
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1535
                    self deselect.
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1536
                ]
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  1537
            ]
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  1538
        ] ifFalse:[
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1539
            coll := OrderedCollection new:noSel.
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1540
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1541
            selectedRowIndex do:[:i|
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1542
                i < start ifTrue:[
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1543
                    coll add:i
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1544
                ] ifFalse:[
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1545
                    i > stop ifTrue:[
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1546
                        coll add:(i - size)
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1547
                    ]
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1548
                ]
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1549
            ].
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1550
            coll size == 0 ifTrue:[
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1551
                self deselect
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1552
            ] ifFalse:[
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1553
                selectedRowIndex := coll
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1554
            ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1555
        ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1556
    ].
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1557
    list removeFrom:start to:stop.
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1558
3488
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  1559
    y0 := (start - 1) * rowHeight.
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1560
    dY := size * rowHeight.
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1561
    y1 := dY + y0.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1562
    yB := y1 + margin - viewOrigin y.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1563
    self recomputeHeightOfContents.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1564
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1565
    y0 < (oY := viewOrigin y) ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1566
        (noRedraw := y1 <= oY) ifFalse:[dY := y0 - oY]
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1567
                                ifTrue:[dY := dY negated].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1568
        self originWillChange.
1948
9ed8131d94bb viewOrigin fix (when list is set to nil while not shown);
Claus Gittinger <cg@exept.de>
parents: 1947
diff changeset
  1569
        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
  1570
        "/ viewOrigin y:(dY + oY).
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1571
        self originChanged:(0 @ dY).        
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1572
    ] ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1573
        noRedraw := y0 > (height + viewOrigin y)
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1574
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1575
1483
c9fd1b1d775d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1480
diff changeset
  1576
    (shown not or:[self sensor hasDamageFor:self]) ifTrue:[
c9fd1b1d775d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1480
diff changeset
  1577
          self invalidate.
c9fd1b1d775d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1480
diff changeset
  1578
        ^ self contentsChanged.
c9fd1b1d775d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1480
diff changeset
  1579
    ].
c9fd1b1d775d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1480
diff changeset
  1580
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1581
    (noRedraw or:[shown not]) ifFalse:[
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1582
        y0 := self yVisibleOfRowNr:start.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1583
        y0 := y0 max:margin.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1584
1951
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  1585
        "/ cg: if I have a non-solid background color,
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  1586
        "/ or individual items have a bgColor selector,
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  1587
        "/ invalidate the area (and readraw) instead of a scroll.
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  1588
        (viewBackground isImageOrForm 
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  1589
        or:[ self anyColumnHasPotentialNonConstantBackground ])
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  1590
        ifTrue:[
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  1591
            "/ do not scroll but invalidate ...
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  1592
        ] ifFalse:[
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  1593
            y1 := yB.
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  1594
            h  := height - margin - yB.
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  1595
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  1596
            h > 0 ifTrue:[
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  1597
                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
  1598
            ].
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  1599
            y0 := y0 + h.
561
43b62e424d52 check height is positive before copy
ca
parents: 556
diff changeset
  1600
        ].
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  1601
        self invalidateX:margin y:y0 width:width - margin - margin height:(height - y0).
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1602
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1603
    self contentsChanged.
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1604
!
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1605
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1606
removeIndex:aRowNr 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1607
    "remove row at an index; returns the removed row"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1608
    
861
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1609
    |row|
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1610
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1611
    row := list at:aRowNr ifAbsent:nil.
a227a3ca27e7 bug fix in multi selection
ca
parents: 859
diff changeset
  1612
    self removeFrom:aRowNr to:aRowNr.
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1613
    ^ row
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1614
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1615
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1616
removeLast
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1617
    "remove last row; the row is returned"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1618
    
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1619
    ^ self removeIndex:(list size)
1956
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1620
!
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1621
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1622
replaceFrom:start to:stop with:aCollection startingAt:repStart
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1623
    "replace elements in the receiver between index start and stop,
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1624
     with elements  taken from replacementCollection starting at repStart.
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1625
     Return the receiver."
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1626
2032
6eb610caad85 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2031
diff changeset
  1627
    |inSelList listSize repStop run|
1956
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1628
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1629
    inSelList := OrderedCollection new.
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1630
    listSize  := list size.
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1631
    repStop   := repStart + (stop - start).
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1632
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1633
    list isNil ifTrue:[
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1634
        list := OrderedCollection new
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1635
    ].
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1636
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1637
    [listSize < stop] whileTrue:[ list add:nil. listSize := listSize + 1 ].
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1638
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1639
    start to:stop do:[:i| |aRow|
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1640
        aRow := list at:i ifAbsent:nil.
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1641
    
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1642
        aRow notNil ifTrue:[
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1643
            beDependentOfRows ifTrue:[aRow removeDependent:self].
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1644
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1645
            (self isInSelection:i) ifTrue:[
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1646
                inSelList add:i
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1647
            ].
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1648
            list at:i put:nil.
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1649
        ]
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1650
    ].
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1651
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1652
    beDependentOfRows ifTrue:[
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1653
        aCollection from:repStart to:repStop do:[:aRow|
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1654
            aRow notNil ifTrue:[aRow addDependent:self]
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1655
        ]
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1656
    ].
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1657
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1658
    run := start.
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1659
    aCollection from:repStart to:repStop do:[:aRow|
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1660
        list at:run put:aRow.
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1661
        run := run + 1.
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1662
    ].
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1663
    self invalidateRowsFrom:start to:stop.
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1664
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1665
    inSelList size ~~ 0 ifTrue:[
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1666
        self numberOfSelections == inSelList size ifTrue:[
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1667
            self deselect
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1668
        ] ifFalse:[
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1669
            selectedRowIndex := selectedRowIndex select:[:i| (inSelList identityIndexOf:i) == 0 ].
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1670
            self selectionChanged.
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1671
        ]
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  1672
    ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1673
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1674
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1675
!DSVColumnView methodsFor:'change & update'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1676
1492
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
  1677
changeWidthOfColumn:aColumn deltaX:aDeltaX
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
  1678
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
  1679
    aColumn setDescWidth:(aColumn width + aDeltaX).
3488
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  1680
    cachedPreferredExtent notNil ifTrue:[self fitColumns]
1492
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
  1681
!
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
  1682
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1683
update:what with:aPara from:chgObj 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1684
    "one of my rows/cells changed its value"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1685
    
2695
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1686
    |row listHoldersList arg1 arg2 col|
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1687
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1688
    chgObj == columnHolder ifTrue:[
3488
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  1689
        cachedPreferredExtent := nil.
2776
73715c613579 *** empty log message ***
penk
parents: 2733
diff changeset
  1690
        self columnDescriptors:(columnHolder value). 
73715c613579 *** empty log message ***
penk
parents: 2733
diff changeset
  1691
        ^ self. 
622
2588f809445d update:with:from:
ca
parents: 618
diff changeset
  1692
    ].
1711
97e1fd579b89 columnAdapter can now be a valueHolder
ca
parents: 1673
diff changeset
  1693
    chgObj == columnAdaptor ifTrue:[
97e1fd579b89 columnAdapter can now be a valueHolder
ca
parents: 1673
diff changeset
  1694
        col := columnAdaptor value.
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1695
        columnDescriptors do:[:aCol | 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1696
            aCol columnAdaptor:col
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1697
        ].
2776
73715c613579 *** empty log message ***
penk
parents: 2733
diff changeset
  1698
        self invalidate.
73715c613579 *** empty log message ***
penk
parents: 2733
diff changeset
  1699
        ^ self
1711
97e1fd579b89 columnAdapter can now be a valueHolder
ca
parents: 1673
diff changeset
  1700
    ].
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1701
    chgObj == editValue ifTrue:[
2695
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1702
        self updateColumnFromEditValue.
1227
2dd18061afc5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1223
diff changeset
  1703
        ^ self
622
2588f809445d update:with:from:
ca
parents: 618
diff changeset
  1704
    ].
3773
c4fcafeada43 sortable
Claus Gittinger <cg@exept.de>
parents: 3770
diff changeset
  1705
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1706
    chgObj == model ifTrue:[
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1707
        (what == #selectionIndex or:[ what == #selection ]) ifTrue:[
2776
73715c613579 *** empty log message ***
penk
parents: 2733
diff changeset
  1708
            self selectRowIndex:(model selectionIndex copy). 
73715c613579 *** empty log message ***
penk
parents: 2733
diff changeset
  1709
            ^ self. 
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1710
        ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1711
        what == #list ifTrue:[
3488
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  1712
            cachedPreferredExtent := nil.
2776
73715c613579 *** empty log message ***
penk
parents: 2733
diff changeset
  1713
            self listHolder:model list. 
73715c613579 *** empty log message ***
penk
parents: 2733
diff changeset
  1714
            ^ self. 
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1715
        ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1716
        what == #value ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1717
            model == listHolder ifTrue:[
3488
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  1718
                cachedPreferredExtent := nil.
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1719
                self list:(listHolder value)
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1720
            ] ifFalse:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1721
                self selectRowIndex:model value
2776
73715c613579 *** empty log message ***
penk
parents: 2733
diff changeset
  1722
            ].
73715c613579 *** empty log message ***
penk
parents: 2733
diff changeset
  1723
            ^ self
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1724
        ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1725
        ^ self
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1726
    ].
3773
c4fcafeada43 sortable
Claus Gittinger <cg@exept.de>
parents: 3770
diff changeset
  1727
4219
5038c1c44e84 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
  1728
    (chgObj == listHolder) ifTrue:[
3488
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  1729
        cachedPreferredExtent := nil.
1953
9190339e9fad lost dependents in row bug fix (when changing lists contents with #contents:)
Claus Gittinger <cg@exept.de>
parents: 1952
diff changeset
  1730
        listHoldersList := listHolder value.
4219
5038c1c44e84 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
  1731
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1732
        what == #value ifTrue:[
3773
c4fcafeada43 sortable
Claus Gittinger <cg@exept.de>
parents: 3770
diff changeset
  1733
            self list:listHoldersList.  
c4fcafeada43 sortable
Claus Gittinger <cg@exept.de>
parents: 3770
diff changeset
  1734
            ^ self. 
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1735
        ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1736
        aPara isCollection ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1737
            arg1 := aPara at:1.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1738
            arg2 := aPara at:2.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1739
        ] ifFalse:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1740
            arg1 := arg2 := aPara
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1741
        ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1742
        what == #at: ifTrue:[
2776
73715c613579 *** empty log message ***
penk
parents: 2733
diff changeset
  1743
            self at:arg1 put:(listHoldersList at:arg1). 
73715c613579 *** empty log message ***
penk
parents: 2733
diff changeset
  1744
            ^ self.
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1745
        ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1746
        what == #insert: ifTrue:[
2776
73715c613579 *** empty log message ***
penk
parents: 2733
diff changeset
  1747
            self add:(listHoldersList at:arg1) beforeIndex:arg1. 
73715c613579 *** empty log message ***
penk
parents: 2733
diff changeset
  1748
            ^ self.
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1749
        ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1750
        what == #remove: ifTrue:[
2776
73715c613579 *** empty log message ***
penk
parents: 2733
diff changeset
  1751
            self removeFrom:arg1 to:arg1. 
73715c613579 *** empty log message ***
penk
parents: 2733
diff changeset
  1752
            ^ self.
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1753
        ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1754
        what == #removeFrom: ifTrue:[
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1755
            listHoldersList size == 0 ifTrue:[
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1756
                self list:nil
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1757
            ] ifFalse:[
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1758
                self removeFrom:arg1 to:arg2
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1759
            ].
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1760
            ^ self
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1761
        ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1762
        what == #insertCollection: ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1763
            arg2 ~~ 0 ifTrue:[
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1764
                self addAll:(listHoldersList copyFrom:arg1 to:(arg1 + arg2 - 1))
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1765
                    beforeIndex:arg1
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1766
            ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1767
            ^ self.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1768
        ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1769
        what == #replace: ifTrue:[
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1770
            self 
3773
c4fcafeada43 sortable
Claus Gittinger <cg@exept.de>
parents: 3770
diff changeset
  1771
                replaceFrom:arg1 to:arg2
c4fcafeada43 sortable
Claus Gittinger <cg@exept.de>
parents: 3770
diff changeset
  1772
                with:listHoldersList startingAt:arg1.
2537
cf1b9b6eeb41 change update:with:from: - ask cg
penk
parents: 2535
diff changeset
  1773
            ^ self
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1774
        ].
2537
cf1b9b6eeb41 change update:with:from: - ask cg
penk
parents: 2535
diff changeset
  1775
        self list:listHoldersList.
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1776
        ^ self
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  1777
    ].
3488
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  1778
1593
2188ae28557e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1565
diff changeset
  1779
    arg1 := aPara ? what.
2816
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  1780
    row := (what isNumber) ifTrue:[what] ifFalse:[chgObj].
2190
9c7777ad9594 bad names: redraw vs. invalidate
penk
parents: 2157
diff changeset
  1781
    self invalidateVisibleRow:row readSelector:arg1.
2695
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1782
    editView notNil ifTrue:[
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1783
        (self isInSelection:(self identityIndexOfRow:row)) ifTrue:[
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1784
            self updateEditorFromChangedRow
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1785
        ]
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1786
    ].
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1787
1661
3a2a038e4173 added a modifiedChannel;
Claus Gittinger <cg@exept.de>
parents: 1651
diff changeset
  1788
    "Modified: / 30.1.2000 / 12:16:49 / cg"
2695
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1789
!
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1790
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1791
updateColumnFromEditValue
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1792
    |editValueBefore firstSelectedIndex newValue realValue col|
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1793
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1794
    editValueBefore := editValue.
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1795
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1796
    firstSelectedIndex := self firstIndexSelected.
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1797
    newValue := editValue value.
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1798
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1799
    col := self selectedColumn.
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1800
    col at:firstSelectedIndex put:newValue.
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  1801
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  1802
    col editorType == #RadioButton ifTrue:[
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  1803
        "/ turn off the other column
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  1804
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  1805
        1 to:list size do:[:rowNr |
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  1806
            rowNr ~~ firstSelectedIndex ifTrue:[
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  1807
                (col at:rowNr) ~~ false ifTrue:[
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  1808
                    col at:rowNr put:false.
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  1809
                    self invalidateRowAt:rowNr colAt:col columnNumber.
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  1810
                ].
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  1811
            ]
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  1812
        ]
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  1813
    ].
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  1814
2695
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1815
    realValue := col at:firstSelectedIndex.
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1816
    (realValue ~= newValue) ifTrue:[
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1817
        "/ some validation by the row-object; the stored value
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1818
        "/ is different from what I think.
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1819
        "/ update my input fields modelValue
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1820
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1821
        "/ just in case someone nilled or changed the editValue
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1822
        "/ Q: is this CA's paranoia or could this really be done in the at:put: above ???
3518
ab2b4b5cfda0 Fix reset of editValue when changed model does not exept change
Stefan Vogel <sv@exept.de>
parents: 3512
diff changeset
  1823
        "/ A (sv): it me happen, if the set method specified in the column descriptor did not set the
ab2b4b5cfda0 Fix reset of editValue when changed model does not exept change
Stefan Vogel <sv@exept.de>
parents: 3512
diff changeset
  1824
        "/         model.
2695
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1825
        (editValueBefore == editValue) ifTrue:[ 
3518
ab2b4b5cfda0 Fix reset of editValue when changed model does not exept change
Stefan Vogel <sv@exept.de>
parents: 3512
diff changeset
  1826
            editValue value:realValue withoutNotifying:self.
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  1827
        ].
2695
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1828
    ].
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1829
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1830
    modifiedChannel notNil ifTrue:[
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1831
        modifiedChannel value:true.
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1832
    ].
3518
ab2b4b5cfda0 Fix reset of editValue when changed model does not exept change
Stefan Vogel <sv@exept.de>
parents: 3512
diff changeset
  1833
ab2b4b5cfda0 Fix reset of editValue when changed model does not exept change
Stefan Vogel <sv@exept.de>
parents: 3512
diff changeset
  1834
2695
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1835
!
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1836
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1837
updateEditorFromChangedRow
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1838
    |rowsValue rowNr|
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1839
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1840
    (rowNr := selectedRowIndex) isNumber ifFalse:[
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1841
        rowNr := rowNr first.
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1842
    ].
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  1843
    rowsValue := (self columnDescriptorAt:self selectedColIndex) at:rowNr.
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1844
    (editValue notNil and:[ editValue value ~= rowsValue ]) ifTrue:[
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1845
        editValue value:rowsValue withoutNotifying:self.
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1846
        editView 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1847
            withAllSubViewsDo:[:v | 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1848
                v isInputField ifTrue:[
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1849
                    v flash.
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1850
                ]
2695
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  1851
            ]
2702
35892dc4449a bugfix: test whether editValue notNil
ca
parents: 2695
diff changeset
  1852
    ].
3773
c4fcafeada43 sortable
Claus Gittinger <cg@exept.de>
parents: 3770
diff changeset
  1853
!
c4fcafeada43 sortable
Claus Gittinger <cg@exept.de>
parents: 3770
diff changeset
  1854
c4fcafeada43 sortable
Claus Gittinger <cg@exept.de>
parents: 3770
diff changeset
  1855
updateList
c4fcafeada43 sortable
Claus Gittinger <cg@exept.de>
parents: 3770
diff changeset
  1856
    listHolder notNil ifTrue:[
c4fcafeada43 sortable
Claus Gittinger <cg@exept.de>
parents: 3770
diff changeset
  1857
        self list:listHolder value.
c4fcafeada43 sortable
Claus Gittinger <cg@exept.de>
parents: 3770
diff changeset
  1858
        ^ self
c4fcafeada43 sortable
Claus Gittinger <cg@exept.de>
parents: 3770
diff changeset
  1859
    ].
c4fcafeada43 sortable
Claus Gittinger <cg@exept.de>
parents: 3770
diff changeset
  1860
    model notNil ifTrue:[
c4fcafeada43 sortable
Claus Gittinger <cg@exept.de>
parents: 3770
diff changeset
  1861
        self list:model value.
c4fcafeada43 sortable
Claus Gittinger <cg@exept.de>
parents: 3770
diff changeset
  1862
        ^ self
c4fcafeada43 sortable
Claus Gittinger <cg@exept.de>
parents: 3770
diff changeset
  1863
    ].
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1864
! !
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1865
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1866
!DSVColumnView methodsFor:'drag & drop'!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1867
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1868
canDrag
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1869
    "returns true if dragging is enabled"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1870
    
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1871
    ^ dropSource notNil
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1872
!
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1873
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  1874
canStartDragAt:aPoint clickedAt:clickPoint
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  1875
    self canDrag ifFalse:[
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  1876
        ^ false
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  1877
    ].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  1878
    ^ (aPoint dist:clickPoint) > (UserPreferences current motionDistanceToStartDrag)
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  1879
!
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  1880
2575
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1881
dragAutoScroll:aContext
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1882
    "called by the DragAndDropManager to scroll during a drag/drop operation
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1883
     if necassery (decided by the widget itself); If a scroll is done return
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1884
     true otherwise false (used to restore the background)"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1885
2575
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1886
    |yInset absLnNr y|
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1887
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1888
    y := aContext targetPoint y.
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1889
    yInset := margin + rowHeight.
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1890
    y > yInset ifTrue:[
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1891
        y >= (height - yInset) ifFalse:[^ false].
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1892
    ].
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1893
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1894
    absLnNr := self yVisibleToRowNr:y.
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1895
    absLnNr isNil ifTrue:[^ false].
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1896
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1897
    (absLnNr > 1 and:[absLnNr < self size]) ifFalse:[
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1898
        ^ false
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1899
    ].
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1900
    aContext contentsWillChange.
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1901
2580
aea885fae0de checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2575
diff changeset
  1902
    y > yInset 
aea885fae0de checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2575
diff changeset
  1903
        ifTrue:[self scrollDown:rowHeight]
aea885fae0de checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2575
diff changeset
  1904
        ifFalse:[self scrollUp:rowHeight].
2575
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1905
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1906
    ^ true
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1907
!
fe15b02fbaf6 support sutoScroll during drag & drop
ca
parents: 2543
diff changeset
  1908
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1909
dropSource
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1910
    "returns the dropSource or nil"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1911
    
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1912
    ^ dropSource
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1913
!
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1914
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1915
dropSource:aDropSourceOrNil 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1916
    "set the dropSource or nil"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1917
    
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1918
    dropSource := aDropSourceOrNil.
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1919
!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1920
824
d2e60c8ac775 support of Drag & Drop
ca
parents: 809
diff changeset
  1921
startDragAt:aPoint
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  1922
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  1923
    dropSource notNil ifTrue:[
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  1924
        buttonReleaseAction := buttonMotionAction := nil.
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  1925
        dropSource startDragIn:self at:aPoint.
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  1926
    ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1927
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  1928
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1929
!DSVColumnView methodsFor:'drawing'!
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1930
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1931
colorOnDevice:aColor 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1932
    "returns color on device"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1933
    
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1934
    |col|
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1935
641
tz
parents: 637
diff changeset
  1936
    aColor = Color noColor ifFalse:[
tz
parents: 637
diff changeset
  1937
        col := colorMap at:aColor ifAbsent:nil.
tz
parents: 637
diff changeset
  1938
        col isNil ifTrue:[
4991
ddee68d07788 device access
Claus Gittinger <cg@exept.de>
parents: 4961
diff changeset
  1939
            colorMap at:aColor put:(col := aColor onDevice:device)
641
tz
parents: 637
diff changeset
  1940
        ].
tz
parents: 637
diff changeset
  1941
        ^ col
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1942
    ].
641
tz
parents: 637
diff changeset
  1943
    ^ bgColor
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1944
!
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1945
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1946
forceRedraw
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1947
    "a redraw forced by any other component"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1948
    
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  1949
    shown ifTrue:[
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  1950
        self invalidate
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  1951
    ]
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1952
!
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1953
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1954
invalidate
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1955
    "recompute extent before repair range"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1956
    
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1957
    self recomputeHeightOfContents.
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1958
    super invalidate.
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1959
!
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1960
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1961
invalidateRowAt:aRowNr 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1962
    "redraw total row at an index"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1963
    
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  1964
    self invalidateRowAt:aRowNr colAt:0
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1965
!
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1966
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  1967
invalidateRowAt:aRowNr colAt:aColNr
2151
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  1968
    "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
  1969
     or the complete visible row (in case of aColNr == 0).
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1970
     If the row/column is hidden, no redraw is done"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1971
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1972
    |x "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1973
     y "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1974
     h "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1975
     w "{ Class:SmallInteger }"
2523
a7d71e57632f care for non-existing column
Claus Gittinger <cg@exept.de>
parents: 2500
diff changeset
  1976
     col|
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1977
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1978
    (shown and:[aRowNr notNil and:[aRowNr between:1 and:list size]]) ifTrue:[
1131
ef8f528399aa clear background under button
ca
parents: 1129
diff changeset
  1979
        h := rowHeight.
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1980
        y := self yVisibleOfRowNr:aRowNr.
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1981
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1982
        y < margin ifTrue:[
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1983
            (h := h + y) <= margin ifTrue:[
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1984
                ^ self
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1985
            ].                                                  "/ row not visible
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1986
            h := h - margin.
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1987
            y := margin.
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1988
        ] ifFalse:[
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1989
            y >= height ifTrue:[^ self].
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1990
        ].
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1991
        aColNr ~~ 0 ifTrue:[                                    "/ redraw column in row
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  1992
            col := (self columnDescriptorAt:aColNr).
3672
ff861e62db1d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3604
diff changeset
  1993
            w := col isNil ifTrue:[0] ifFalse:[col width].
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1994
            x := self xVisibleOfColNr:aColNr.
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1995
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  1996
            x < margin ifTrue:[
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1997
                (w := w + x) <= margin ifTrue:[
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1998
                    ^ self
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  1999
                ].                                              "/ column not visible
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2000
                w := w - margin.
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2001
                x := margin.
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2002
            ] ifFalse:[
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2003
                x >= width ifTrue:[^ self].
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2004
            ]
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2005
        ] ifFalse:[                                             "/ redraw whole row
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2006
            x := margin.
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2007
            w := width.
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2008
        ].
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  2009
        self invalidateX:x y:y width:w height:h
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  2010
    ]
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  2011
!
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  2012
2469
a6e3ffd6df94 Avoid duplicate computations (sv, cg)
Stefan Vogel <sv@exept.de>
parents: 2458
diff changeset
  2013
invalidateRows:aCollection
a6e3ffd6df94 Avoid duplicate computations (sv, cg)
Stefan Vogel <sv@exept.de>
parents: 2458
diff changeset
  2014
    "redraw some visible rows"
a6e3ffd6df94 Avoid duplicate computations (sv, cg)
Stefan Vogel <sv@exept.de>
parents: 2458
diff changeset
  2015
a6e3ffd6df94 Avoid duplicate computations (sv, cg)
Stefan Vogel <sv@exept.de>
parents: 2458
diff changeset
  2016
    shown ifTrue:[
a6e3ffd6df94 Avoid duplicate computations (sv, cg)
Stefan Vogel <sv@exept.de>
parents: 2458
diff changeset
  2017
        aCollection do:[:rowIndex |
a6e3ffd6df94 Avoid duplicate computations (sv, cg)
Stefan Vogel <sv@exept.de>
parents: 2458
diff changeset
  2018
            self invalidateRowAt:rowIndex
a6e3ffd6df94 Avoid duplicate computations (sv, cg)
Stefan Vogel <sv@exept.de>
parents: 2458
diff changeset
  2019
        ]
a6e3ffd6df94 Avoid duplicate computations (sv, cg)
Stefan Vogel <sv@exept.de>
parents: 2458
diff changeset
  2020
    ]
a6e3ffd6df94 Avoid duplicate computations (sv, cg)
Stefan Vogel <sv@exept.de>
parents: 2458
diff changeset
  2021
!
a6e3ffd6df94 Avoid duplicate computations (sv, cg)
Stefan Vogel <sv@exept.de>
parents: 2458
diff changeset
  2022
1956
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  2023
invalidateRowsFrom:aStart to:aStop
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2024
    "redraw visible row from start to stop"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2025
1956
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  2026
    |size start stop y0 y1|
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  2027
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  2028
    shown ifTrue:[
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  2029
        size  := list size.
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  2030
        start := aStart notNil ifTrue:[aStart max:1]    ifFalse:[1].
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  2031
        stop  := aStop  notNil ifTrue:[aStop  min:size] ifFalse:[size].
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  2032
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  2033
        start <= stop ifTrue:[
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  2034
            y0 := (self yVisibleOfRowNr:start)              max:margin.
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  2035
            y1 := ((self yVisibleOfRowNr:stop) + rowHeight) min:height.
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  2036
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  2037
            y0 < y1 ifTrue:[
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  2038
                self invalidateX:margin y:y0 width:width height:(y1 - y0)
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  2039
            ]
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  2040
        ]
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  2041
    ]
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  2042
!
bd553f644454 implement: #replaceFrom:to:with:startingAt:
ca
parents: 1954
diff changeset
  2043
3138
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
  2044
invalidateSelection
5214
1f88a970e4db #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5204
diff changeset
  2045
    "invalidate (force async redraw) the current selection"
1f88a970e4db #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5204
diff changeset
  2046
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2047
    |colIndex|
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2048
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2049
    shown ifTrue:[ 
3138
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
  2050
        colIndex := self selectedColIndex ? 0.
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
  2051
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
  2052
        self selectionIndicesDo:[:aRowIndex|
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
  2053
            self invalidateRowAt:aRowIndex colAt:colIndex.
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
  2054
        ].
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
  2055
    ]
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
  2056
!
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
  2057
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2058
invalidateVisibleRow:aRow 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2059
    "redraw row if visible"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2060
    
2190
9c7777ad9594 bad names: redraw vs. invalidate
penk
parents: 2157
diff changeset
  2061
    self invalidateVisibleRow:aRow colAt:0
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2062
!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2063
2190
9c7777ad9594 bad names: redraw vs. invalidate
penk
parents: 2157
diff changeset
  2064
invalidateVisibleRow:aRow colAt:aColNr
2151
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  2065
    "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
  2066
     or the complete visible row (in case of aColNr == 0).
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2067
     If the row/column is hidden, no redraw is done"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2068
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2069
    |start "{ Class:SmallInteger }"
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2070
     stop  "{ Class:SmallInteger }"
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2071
    |
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2072
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2073
    (start := self indexOfFirstRowShown) ~~ 0 ifTrue:[
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  2074
        stop := (start + (height // rowHeight)) min:(list size).
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2075
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2076
        aRow isNumber ifTrue:[
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2077
            (aRow between:start and:stop) ifTrue:[
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  2078
                self invalidateRowAt:aRow colAt:aColNr
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2079
            ]
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2080
        ] ifFalse:[
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2081
            start to:stop do:[:i|
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2082
                (self at:i) == aRow ifTrue:[
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  2083
                    ^ self invalidateRowAt:i colAt:aColNr
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2084
                ]
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2085
            ]
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2086
        ]
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2087
    ]
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2088
!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2089
2190
9c7777ad9594 bad names: redraw vs. invalidate
penk
parents: 2157
diff changeset
  2090
invalidateVisibleRow:aRow readSelector:aSelector
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2091
    "redraw a column identified by its read selector; if no column with
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2092
     the specified read selector is detected, the whole line is drawn."
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2093
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2094
    |row idx|
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2095
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2096
    aSelector isNil ifTrue:[
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2097
        idx := 0
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2098
    ] ifFalse:[
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2099
        (row := aRow) isNumber ifTrue:[
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2100
            (row := self at:aRow) isNil ifTrue:[ ^ self ]
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2101
        ].
4686
dda678ab83bf class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4664
diff changeset
  2102
        idx := columnDescriptors 
dda678ab83bf class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4664
diff changeset
  2103
                findFirst:[:aCol| aCol description readSelector == aSelector]
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2104
    ].
2190
9c7777ad9594 bad names: redraw vs. invalidate
penk
parents: 2157
diff changeset
  2105
    self invalidateVisibleRow:aRow colAt:idx
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2106
!
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2107
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2108
redrawX:x y:y width:w height:h
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2109
    "redraw part of myself immediately, given logical coordinates "
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2110
4161
4722a6575ff0 class: DSVColumnView
ca
parents: 4123
diff changeset
  2111
    |c0 savClip stopRedraw selWidth
1149
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  2112
     start "{ Class:SmallInteger }"
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  2113
     stop  "{ Class:SmallInteger }"
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  2114
     x0    "{ Class:SmallInteger }"
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  2115
     x1    "{ Class:SmallInteger }"
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  2116
     maxX  "{ Class:SmallInteger }"
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  2117
     yTop  "{ Class:SmallInteger }"
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  2118
     yBot  "{ Class:SmallInteger }"
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  2119
     clHg  "{ Class:SmallInteger }"
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  2120
     size  "{ Class:SmallInteger }"
3989
5c6706e4e0d1 preps for highlight-frame color
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
  2121
     lineColor
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2122
    |
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2123
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2124
    shown ifFalse:[^ self].
3993
6840bc23b584 changed: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3991
diff changeset
  2125
    self isReallyShown ifFalse:[^ self].
6840bc23b584 changed: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3991
diff changeset
  2126
5421
3fd7edaeb379 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5347
diff changeset
  2127
    gc paint:bgColor.
1115
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  2128
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  2129
    columnDescriptors isEmpty ifTrue:[
5421
3fd7edaeb379 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5347
diff changeset
  2130
        ^ gc fillRectangleX:x y:y width:w height:h
1115
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  2131
    ].
3989
5c6706e4e0d1 preps for highlight-frame color
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
  2132
1131
ef8f528399aa clear background under button
ca
parents: 1129
diff changeset
  2133
    size  := list size.
1115
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  2134
    yTop  := margin - viewOrigin y.                   
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  2135
    c0    := y - yTop max:0.
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  2136
    start := (c0 // rowHeight) + 1.
3989
5c6706e4e0d1 preps for highlight-frame color
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
  2137
    stop  := (((c0 + h - 1) // rowHeight) + 1) min:size.
1115
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  2138
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  2139
    stop < start ifTrue:[
5421
3fd7edaeb379 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5347
diff changeset
  2140
        ^ gc fillRectangleX:x y:y width:w height:h
1115
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  2141
    ].
4521
727d661f5e8e class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4496
diff changeset
  2142
    savClip := self clippingBoundsOrNil.
1149
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  2143
1115
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  2144
    maxX := (x + w) min:(width - margin).
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  2145
    x0   := margin - viewOrigin x.
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  2146
    yTop := yTop + ((start - 1) * rowHeight).
1131
ef8f528399aa clear background under button
ca
parents: 1129
diff changeset
  2147
    clHg := (stop - start + 1) * rowHeight.
ef8f528399aa clear background under button
ca
parents: 1129
diff changeset
  2148
    yBot := yTop + clHg.
ef8f528399aa clear background under button
ca
parents: 1129
diff changeset
  2149
2592
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2150
    stopRedraw := false.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2151
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2152
    self class stopRedrawSignal handle:[:ex|
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2153
        stopRedraw := true.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2154
    ] do:[
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2155
        columnDescriptors do:[:aCol| |cw|
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2156
            x1 := x0 + aCol width.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2157
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2158
            (x1 > x and:[x0 < maxX]) ifTrue:[
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2159
                |left right rect|
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2160
                left  := x0 max:x.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2161
                right := x1 min:maxX.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2162
                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
  2163
            
4521
727d661f5e8e class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4496
diff changeset
  2164
                self clippingBounds:nil.
5204
fccb63f32188 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5195
diff changeset
  2165
                self clippingBounds:rect.
2592
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2166
                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
  2167
            ].
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2168
            x0 := x1
1115
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  2169
        ].
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  2170
    ].
1131
ef8f528399aa clear background under button
ca
parents: 1129
diff changeset
  2171
2151
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  2172
    "/ restore old clipping rectangle
4521
727d661f5e8e class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4496
diff changeset
  2173
    self clippingBounds:savClip.
1131
ef8f528399aa clear background under button
ca
parents: 1129
diff changeset
  2174
2592
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2175
    stopRedraw ifTrue:[
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2176
        self invalidate.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2177
        self makeSelectionVisible.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2178
        ^ self
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2179
    ].
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2180
1131
ef8f528399aa clear background under button
ca
parents: 1129
diff changeset
  2181
    stop == size ifTrue:[
1115
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  2182
        yTop := y + h.
7f3f4581c3d3 clear background
ca
parents: 1112
diff changeset
  2183
        yBot < (yTop - margin) ifTrue:[
2151
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  2184
            "/ clear to bottom of screen
5421
3fd7edaeb379 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5347
diff changeset
  2185
            gc paint:bgColor.
3fd7edaeb379 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5347
diff changeset
  2186
            gc fillRectangleX:x y:yBot width:w height:(yTop - yBot).
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2187
        ]
1136
4a9d9db81422 set bg/fg color when drawing an interactor
ca
parents: 1134
diff changeset
  2188
    ].
4a9d9db81422 set bg/fg color when drawing an interactor
ca
parents: 1134
diff changeset
  2189
1149
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  2190
    (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
  2191
        "/ clear to right of screen
5421
3fd7edaeb379 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5347
diff changeset
  2192
        gc paint:bgColor.
3fd7edaeb379 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5347
diff changeset
  2193
        gc fillRectangleX:x1 y:y width:c0 height:h.
1136
4a9d9db81422 set bg/fg color when drawing an interactor
ca
parents: 1134
diff changeset
  2194
    ].
4161
4722a6575ff0 class: DSVColumnView
ca
parents: 4123
diff changeset
  2195
    "/ if only rows are selected we have to draw
4722a6575ff0 class: DSVColumnView
ca
parents: 4123
diff changeset
  2196
    "/  - the selection frame around the labels
4722a6575ff0 class: DSVColumnView
ca
parents: 4123
diff changeset
  2197
    "/  - and to fill the selection area behind the table if not bound to the width of the view
4722a6575ff0 class: DSVColumnView
ca
parents: 4123
diff changeset
  2198
4722a6575ff0 class: DSVColumnView
ca
parents: 4123
diff changeset
  2199
    self hasRowSelection ifFalse:[ ^ self ].  "/ nothing to do
4722a6575ff0 class: DSVColumnView
ca
parents: 4123
diff changeset
  2200
4722a6575ff0 class: DSVColumnView
ca
parents: 4123
diff changeset
  2201
    selWidth := width-margin-x1.
3989
5c6706e4e0d1 preps for highlight-frame color
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
  2202
    lineColor := self selectionFrameColor.
5c6706e4e0d1 preps for highlight-frame color
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
  2203
4161
4722a6575ff0 class: DSVColumnView
ca
parents: 4123
diff changeset
  2204
    self selectionIndicesDo:[:rowNr |
4722a6575ff0 class: DSVColumnView
ca
parents: 4123
diff changeset
  2205
        | yVis |
4722a6575ff0 class: DSVColumnView
ca
parents: 4123
diff changeset
  2206
        yVis := self yVisibleOfRowNr:rowNr.
4722a6575ff0 class: DSVColumnView
ca
parents: 4123
diff changeset
  2207
        selWidth > 0 ifTrue:[
5421
3fd7edaeb379 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5347
diff changeset
  2208
            gc paint:selectionBackgroundColor.
3fd7edaeb379 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5347
diff changeset
  2209
            gc fillRectangleX:x1 y:yVis width:selWidth height:rowHeight.
2151
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  2210
        ].
4161
4722a6575ff0 class: DSVColumnView
ca
parents: 4123
diff changeset
  2211
        lineColor notNil ifTrue:[
5421
3fd7edaeb379 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5347
diff changeset
  2212
            gc paint:lineColor.
3fd7edaeb379 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5347
diff changeset
  2213
            gc displayLineFromX:x y:yVis toX:width y:yVis.
4161
4722a6575ff0 class: DSVColumnView
ca
parents: 4123
diff changeset
  2214
            yVis := yVis+rowHeight -1.
5421
3fd7edaeb379 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5347
diff changeset
  2215
            gc displayLineFromX:x y:yVis toX:width y:yVis.
4161
4722a6575ff0 class: DSVColumnView
ca
parents: 4123
diff changeset
  2216
        ].
4722a6575ff0 class: DSVColumnView
ca
parents: 4123
diff changeset
  2217
    ].     
3989
5c6706e4e0d1 preps for highlight-frame color
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
  2218
3993
6840bc23b584 changed: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3991
diff changeset
  2219
    "Modified: / 21-01-2011 / 15:58:11 / cg"
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2220
! !
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2221
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2222
!DSVColumnView methodsFor:'drawing interactors'!
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2223
2592
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2224
displayLabel:aLabel x:xLeft y:yTop
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2225
    "display the label at x y; test whether the height of the label matches to the current
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2226
     rowHeight. If not, an exception is raised and the rowHeight is recomputed"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2227
2592
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2228
    |y h |
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2229
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2230
    aLabel notNil ifTrue:[
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2231
        aLabel isString ifTrue:[
2593
24ddc48c5ad4 bugfix: recomputation of rowHeight if label is heigher than current rowHeight
ca
parents: 2592
diff changeset
  2232
            y := yTop + self rowFontAscent.
2592
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2233
        ] ifFalse:[
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2234
            h := aLabel heightOn:self.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2235
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2236
            h > minRowHeight ifTrue:[
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2237
                minRowHeight := h.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2238
3488
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  2239
                cachedPreferredExtent notNil ifTrue:[
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  2240
"/                    rowHeight := (minRowHeight + separatorSize + verticalSpacing + verticalSpacing + 1) // 2 * 2.
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  2241
                    cachedPreferredExtent := Point 
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  2242
                                            x: cachedPreferredExtent x
3172
65f4533fbf75 preferredExtent race condition
Claus Gittinger <cg@exept.de>
parents: 3149
diff changeset
  2243
                                            y: (list size * rowHeight).
2592
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2244
                    self contentsChanged.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2245
                ].
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2246
                self class stopRedrawSignal raiseRequest.
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2247
            ].
2593
24ddc48c5ad4 bugfix: recomputation of rowHeight if label is heigher than current rowHeight
ca
parents: 2592
diff changeset
  2248
            y := yTop + (aLabel ascentOn:self).
2592
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2249
        ].
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2250
        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
  2251
    ].
3172
65f4533fbf75 preferredExtent race condition
Claus Gittinger <cg@exept.de>
parents: 3149
diff changeset
  2252
65f4533fbf75 preferredExtent race condition
Claus Gittinger <cg@exept.de>
parents: 3149
diff changeset
  2253
    "Modified: / 05-02-2007 / 09:07:10 / cg"
2592
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2254
!
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  2255
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2256
drawCheckToggleAtX:xLeft y:yTop w:cellWidth state:cellValue
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2257
    "draw a check toggle button"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2258
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2259
    |e form
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2260
     y "{ Class:SmallInteger }"
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2261
     x "{ Class:SmallInteger }"
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2262
     h "{ Class:SmallInteger }"
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2263
     w "{ Class:SmallInteger }"
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2264
     state|
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2265
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2266
    state := (cellValue ? false).
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2267
    state isBoolean ifFalse:[ state := false ].
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2268
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2269
    w := checkToggleExtent x.
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2270
    h := checkToggleExtent y.
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2271
    y := yTop + ((rowHeight - h) // 2).
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2272
    x := xLeft + ((cellWidth  - w) // 2).
1529
aa5e8fae6f23 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1521
diff changeset
  2273
    h odd ifTrue:[y := y + 1].
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2274
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2275
    checkToggleActiveImage isNil ifTrue:[
5421
3fd7edaeb379 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5347
diff changeset
  2276
        gc paint:bgColor.
3fd7edaeb379 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5347
diff changeset
  2277
        gc fillRectangleX:x y:y width:w height:h.
1131
ef8f528399aa clear background under button
ca
parents: 1129
diff changeset
  2278
        self drawEdgesAtX:x   y:y width:w height:h level:checkToggleLevel on:self.
ef8f528399aa clear background under button
ca
parents: 1129
diff changeset
  2279
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2280
        state ifFalse:[
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2281
            ^ self
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2282
        ].
5421
3fd7edaeb379 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5347
diff changeset
  2283
        gc paint:fgColor on:bgColor.
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2284
        form := checkToggleForm
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2285
    ] ifFalse:[
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2286
        form := state 
5053
ab95fb6af06f #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 4991
diff changeset
  2287
                    ifTrue:[checkToggleActiveImage]
ab95fb6af06f #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 4991
diff changeset
  2288
                    ifFalse:[checkTogglePassiveImage].
859
e63eb6f321e1 support List for columns
ca
parents: 833
diff changeset
  2289
    ].
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2290
    e := (checkToggleExtent - form extent) // 2.
5421
3fd7edaeb379 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5347
diff changeset
  2291
    gc displayForm:form x:(x + e x) y:(y + e y).
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2292
!
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2293
1131
ef8f528399aa clear background under button
ca
parents: 1129
diff changeset
  2294
drawComboButtonAtX:xTop y:yTop w:rowWidth
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2295
    "draw a combo button"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2296
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2297
    |e
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2298
     x "{ Class:SmallInteger }"
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2299
     y "{ Class:SmallInteger }"
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2300
     h "{ Class:SmallInteger }"
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2301
     w "{ Class:SmallInteger }"|
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2302
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2303
    w := comboButtonExtent x.
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2304
    h := comboButtonExtent y.
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2305
    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
  2306
    x := xTop + (rowWidth  - w - separatorSize - 1).
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2307
    e := (comboButtonExtent - comboButtonForm extent) // 2.
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2308
5421
3fd7edaeb379 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5347
diff changeset
  2309
    gc paint:bgColor.
3fd7edaeb379 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5347
diff changeset
  2310
    gc fillRectangleX:x y:y width:w height:h.
1131
ef8f528399aa clear background under button
ca
parents: 1129
diff changeset
  2311
    self drawEdgesAtX:x   y:y width:w height:h level:comboButtonLevel on:self.
5421
3fd7edaeb379 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5347
diff changeset
  2312
    gc paint:fgColor on:bgColor.
3fd7edaeb379 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5347
diff changeset
  2313
    gc displayForm:comboButtonForm x:(x + e x) y:(y + e y)
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2314
!
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  2315
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2316
drawEdgesAtX:x y:y width:w height:h level:aLevel on:aGC 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2317
    "draw edges for a cell or label"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2318
    
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2319
    aGC 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2320
        drawEdgesForX:x
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2321
        y:y
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2322
        width:w
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2323
        height:h
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2324
        level:aLevel
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2325
        shadow:buttonShadowColor
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2326
        light:buttonLightColor
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2327
        halfShadow:buttonHalfShadowColor
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2328
        halfLight:buttonHalfLightColor
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2329
        style:ButtonEdgeStyle.
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2330
!
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2331
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2332
drawRadioButtonAtX:xLeft y:yTop w:cellWidth state:aState
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2333
    "draw a radio button"
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2334
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2335
    |image
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2336
     y "{ Class:SmallInteger }"
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2337
     x "{ Class:SmallInteger }"
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2338
     h "{ Class:SmallInteger }"
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2339
     w "{ Class:SmallInteger }"|
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2340
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2341
    w := radioButtonActiveImage extent x.
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2342
    h := radioButtonActiveImage extent y.
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2343
    y := yTop + ((rowHeight - h) // 2).
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2344
    x := xLeft + ((cellWidth - w) // 2).
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2345
    h odd ifTrue:[y := y + 1].
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2346
3512
d9fe368ced3d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3509
diff changeset
  2347
    image := (aState == true) 
5053
ab95fb6af06f #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 4991
diff changeset
  2348
                ifTrue:[radioButtonActiveImage]
ab95fb6af06f #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 4991
diff changeset
  2349
                ifFalse:[radioButtonPassiveImage].
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2350
4991
ddee68d07788 device access
Claus Gittinger <cg@exept.de>
parents: 4961
diff changeset
  2351
    image := image onDevice:device.
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2352
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2353
    self displayForm:image x:x y:y.
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2354
! !
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2355
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2356
!DSVColumnView methodsFor:'enumerating columns'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2357
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2358
columnsDo:aOneArgBlock
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2359
    "evaluate the argument, aOneArgBlock for every columnDescriptor"
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2360
    
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2361
    columnDescriptors do:aOneArgBlock
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2362
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2363
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2364
columnsFrom:start to:stop do:aOneArgBlock 
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2365
    "evaluate the argument, aOneArgBlock for the columns with index start to
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2366
     stop in the collection of column descriptors"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2367
    
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2368
    columnDescriptors 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2369
        from:start
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2370
        to:stop
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2371
        do:aOneArgBlock
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2372
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2373
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2374
!DSVColumnView methodsFor:'event handling'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2375
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2376
buttonControlPressAt:clickPoint rowNr:aRowNr colNr:aColNr
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2377
    |isSelected prvRow doAdd chgSet|
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2378
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2379
    buttonMotionAction := buttonReleaseAction := nil.
3239
7b18b6694058 ctrl-click toggles
Claus Gittinger <cg@exept.de>
parents: 3223
diff changeset
  2380
    isSelected := self isInSelection:aRowNr.
7b18b6694058 ctrl-click toggles
Claus Gittinger <cg@exept.de>
parents: 3223
diff changeset
  2381
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2382
    multipleSelectOk ifFalse:[
3239
7b18b6694058 ctrl-click toggles
Claus Gittinger <cg@exept.de>
parents: 3223
diff changeset
  2383
        isSelected ifTrue:[
7b18b6694058 ctrl-click toggles
Claus Gittinger <cg@exept.de>
parents: 3223
diff changeset
  2384
            self deselect.
7b18b6694058 ctrl-click toggles
Claus Gittinger <cg@exept.de>
parents: 3223
diff changeset
  2385
        ] ifFalse:[
7b18b6694058 ctrl-click toggles
Claus Gittinger <cg@exept.de>
parents: 3223
diff changeset
  2386
            self selectRowAt:aRowNr colAt:aColNr atPoint:clickPoint openEditor:false.
7b18b6694058 ctrl-click toggles
Claus Gittinger <cg@exept.de>
parents: 3223
diff changeset
  2387
        ].
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2388
        ^ self
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2389
    ].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2390
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2391
    isSelected ifTrue:[ self removeRowFromSelection:aRowNr ]
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2392
              ifFalse:[ self addRowToSelection:aRowNr ].
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2393
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2394
    multipleSelectOk ifFalse:[ ^ self ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2395
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2396
    prvRow := aRowNr.
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2397
    chgSet := IdentitySet new.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2398
    doAdd  := isSelected not.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2399
2907
c4a8cac87053 ctrl-select fixed
Claus Gittinger <cg@exept.de>
parents: 2886
diff changeset
  2400
    buttonMotionAction := [:p| 
c4a8cac87053 ctrl-select fixed
Claus Gittinger <cg@exept.de>
parents: 2886
diff changeset
  2401
        |rowNr mustRestore step f|
c4a8cac87053 ctrl-select fixed
Claus Gittinger <cg@exept.de>
parents: 2886
diff changeset
  2402
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2403
        rowNr := self yVisibleToRowNr:(p y).
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2404
        (rowNr notNil and:[rowNr ~~ prvRow]) ifTrue:[
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2405
            rowNr == aRowNr ifTrue:[
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2406
                mustRestore := true
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2407
            ] ifFalse:[
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2408
                rowNr > aRowNr ifTrue:[ mustRestore := (rowNr < prvRow) ]
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2409
                              ifFalse:[ mustRestore := (rowNr > prvRow) ].
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2410
            ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2411
            prvRow > rowNr ifTrue:[ step := -1 ]
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2412
                          ifFalse:[ step :=  1 ].
2907
c4a8cac87053 ctrl-select fixed
Claus Gittinger <cg@exept.de>
parents: 2886
diff changeset
  2413
c4a8cac87053 ctrl-select fixed
Claus Gittinger <cg@exept.de>
parents: 2886
diff changeset
  2414
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2415
            mustRestore ifTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2416
                [ prvRow ~~ rowNr ] whileTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2417
                    (chgSet removeIdentical:prvRow ifAbsent:nil) notNil ifTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2418
                        doAdd ifFalse:[ self addRowToSelection:prvRow ]
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2419
                               ifTrue:[ self removeRowFromSelection:prvRow ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2420
                    ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2421
                    prvRow := prvRow + step.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2422
                ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2423
            ] ifFalse:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2424
                [ prvRow ~~ rowNr ] whileTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2425
                    prvRow := prvRow + step.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2426
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2427
                    doAdd ~~ (self isInSelection:rowNr) ifTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2428
                        chgSet add:prvRow.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2429
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2430
                        doAdd ifTrue:[ self addRowToSelection:prvRow ]
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2431
                             ifFalse:[ self removeRowFromSelection:prvRow ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2432
                    ]
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2433
                ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2434
            ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2435
        ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2436
    ].
3130
30ac624dd866 added a hook to allow for autoScrollToColumn to be disabled.
Claus Gittinger <cg@exept.de>
parents: 3091
diff changeset
  2437
3239
7b18b6694058 ctrl-click toggles
Claus Gittinger <cg@exept.de>
parents: 3223
diff changeset
  2438
    "Modified: / 21-07-2007 / 22:00:27 / cg"
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2439
!
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2440
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2441
buttonMotion:buttonMask x:x y:y 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2442
    "mouse-move while button was pressed - handle multiple selection changes"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2443
    
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2444
    self isEnabled ifFalse:[
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2445
        ^ self
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2446
    ].
2788
8f45f2da80fa selection/multiSelection/startDrag
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  2447
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2448
    buttonMotionAction notNil ifTrue:[
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2449
        buttonMotionAction value:(x @ y).
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2450
        buttonMotionAction notNil ifTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2451
            autoScroll ifTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2452
                "/ if moved outside of view, start autoscroll
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2453
                (y < 0) ifTrue:[
2670
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  2454
                    ^ self startAutoScroll:#scrollUp distance:y.
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2455
                ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2456
                (y > height) ifTrue:[
2670
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  2457
                    ^ self startAutoScroll:#scrollDown distance:(y - height).
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2458
                ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2459
            ]
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2460
        ]
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2461
    ].
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2462
    self stopAutoScroll.
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2463
!
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2464
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2465
buttonMultiPress:button x:x y:y
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2466
    "a button was pressed twice - handle doubleclick here"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2467
3217
e74188fce7c2 xVisibleToSelectionIndex:x different return value confusion
Claus Gittinger <cg@exept.de>
parents: 3215
diff changeset
  2468
    |selectedCol|
e74188fce7c2 xVisibleToSelectionIndex:x different return value confusion
Claus Gittinger <cg@exept.de>
parents: 3215
diff changeset
  2469
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2470
    buttonMotionAction := buttonReleaseAction := nil.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2471
1805
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
  2472
    self isEnabled ifFalse:[^ self].
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
  2473
3742
a4bb22bc79e2 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3702
diff changeset
  2474
    (button == 1) ifFalse:[
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2475
        ^ super buttonMultiPress:button x:x y:y
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2476
    ].
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2477
    self numberOfSelections == 1 ifTrue:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2478
        self firstIndexSelected == (self yVisibleToRowNr:y) ifTrue:[
3217
e74188fce7c2 xVisibleToSelectionIndex:x different return value confusion
Claus Gittinger <cg@exept.de>
parents: 3215
diff changeset
  2479
            selectedCol := self selectedColIndex.
e74188fce7c2 xVisibleToSelectionIndex:x different return value confusion
Claus Gittinger <cg@exept.de>
parents: 3215
diff changeset
  2480
            ( selectedCol == 0
e74188fce7c2 xVisibleToSelectionIndex:x different return value confusion
Claus Gittinger <cg@exept.de>
parents: 3215
diff changeset
  2481
              or:[selectedCol == (self xVisibleToColNr:x)]
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2482
            ) ifTrue:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2483
                self doubleClicked
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  2484
            ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2485
        ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2486
    ]
3217
e74188fce7c2 xVisibleToSelectionIndex:x different return value confusion
Claus Gittinger <cg@exept.de>
parents: 3215
diff changeset
  2487
e74188fce7c2 xVisibleToSelectionIndex:x different return value confusion
Claus Gittinger <cg@exept.de>
parents: 3215
diff changeset
  2488
    "Modified: / 26-03-2007 / 15:19:04 / cg"
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2489
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2490
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2491
buttonPress:button x:x y:y
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2492
    "a button was pressed - handle selection here"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2493
4664
a537a996fb22 class: DSVColumnView
ca
parents: 4653
diff changeset
  2494
    |rowNr colNr sensor clickPoint clickedIntoSelection column columnEditorType|
2802
fa5806bd210a select behavior changed:
Claus Gittinger <cg@exept.de>
parents: 2797
diff changeset
  2495
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2496
    buttonMotionAction := buttonReleaseAction := nil.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2497
1805
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
  2498
    self isEnabled ifFalse:[^ self].
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
  2499
4664
a537a996fb22 class: DSVColumnView
ca
parents: 4653
diff changeset
  2500
    rowNr := self yVisibleToRowNr:y.
a537a996fb22 class: DSVColumnView
ca
parents: 4653
diff changeset
  2501
    colNr := self xVisibleToColNr:x.
a537a996fb22 class: DSVColumnView
ca
parents: 4653
diff changeset
  2502
a537a996fb22 class: DSVColumnView
ca
parents: 4653
diff changeset
  2503
    (button == 2) ifTrue:[ |openMenu|
a537a996fb22 class: DSVColumnView
ca
parents: 4653
diff changeset
  2504
        openMenu := false.
a537a996fb22 class: DSVColumnView
ca
parents: 4653
diff changeset
  2505
        
3922
fd141174f607 changed: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3908
diff changeset
  2506
        UserPreferences current selectOnRightClick ifFalse:[
4664
a537a996fb22 class: DSVColumnView
ca
parents: 4653
diff changeset
  2507
            openMenu := true.
a537a996fb22 class: DSVColumnView
ca
parents: 4653
diff changeset
  2508
        ] ifTrue:[
a537a996fb22 class: DSVColumnView
ca
parents: 4653
diff changeset
  2509
            UserPreferences current showRightButtonMenuOnRelease ifFalse:[
a537a996fb22 class: DSVColumnView
ca
parents: 4653
diff changeset
  2510
                (rowNr notNil and:[colNr notNil and:[self isRowSelectable:rowNr]]) ifTrue:[
a537a996fb22 class: DSVColumnView
ca
parents: 4653
diff changeset
  2511
                    self selectRowAt:rowNr colAt:colNr atPoint:clickPoint openEditor:false
a537a996fb22 class: DSVColumnView
ca
parents: 4653
diff changeset
  2512
                ].
a537a996fb22 class: DSVColumnView
ca
parents: 4653
diff changeset
  2513
                openMenu := true.
a537a996fb22 class: DSVColumnView
ca
parents: 4653
diff changeset
  2514
            ].
a537a996fb22 class: DSVColumnView
ca
parents: 4653
diff changeset
  2515
        ].
a537a996fb22 class: DSVColumnView
ca
parents: 4653
diff changeset
  2516
        openMenu ifTrue:[ |menu|
3922
fd141174f607 changed: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3908
diff changeset
  2517
            menu := self findMenuForSelection.
fd141174f607 changed: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3908
diff changeset
  2518
            menu notNil ifTrue:[ 
fd141174f607 changed: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3908
diff changeset
  2519
                self startUpMenu:menu.
4664
a537a996fb22 class: DSVColumnView
ca
parents: 4653
diff changeset
  2520
            ] ifFalse:[
a537a996fb22 class: DSVColumnView
ca
parents: 4653
diff changeset
  2521
                super buttonPress:button x:x y:y.
3922
fd141174f607 changed: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3908
diff changeset
  2522
            ].
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2523
            ^ self
4664
a537a996fb22 class: DSVColumnView
ca
parents: 4653
diff changeset
  2524
        ].
a537a996fb22 class: DSVColumnView
ca
parents: 4653
diff changeset
  2525
    ].
a537a996fb22 class: DSVColumnView
ca
parents: 4653
diff changeset
  2526
    
2804
8204b926377d oops - firstRow could be nil
Claus Gittinger <cg@exept.de>
parents: 2802
diff changeset
  2527
    (rowNr isNil or:[colNr isNil]) ifTrue:[
2722
18c5bd340b1b close editor when clicking outside
ca
parents: 2714
diff changeset
  2528
        self deselect.
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2529
        super buttonPress:button x:x y:y.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2530
        ^ self
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2531
    ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2532
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2533
    (self isRowSelectable:rowNr) ifFalse:[^ self ].
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2534
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2535
    sensor     := self sensor.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2536
    clickPoint := x @ y.
2813
74cfefd3a0a4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2812
diff changeset
  2537
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2538
    sensor shiftDown ifTrue:[
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2539
        self buttonShiftPressAt:clickPoint rowNr:rowNr colNr:colNr.
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2540
        ^ self
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2541
    ].
2802
fa5806bd210a select behavior changed:
Claus Gittinger <cg@exept.de>
parents: 2797
diff changeset
  2542
    sensor ctrlDown ifTrue:[
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2543
        self buttonControlPressAt:clickPoint rowNr:rowNr colNr:colNr.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2544
        ^ self
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2545
    ].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2546
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2547
    multipleSelectOk ifFalse:[
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2548
        self canDrag ifFalse:[
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2549
            self selectRowAt:rowNr colAt:colNr atPoint:clickPoint openEditor:true.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2550
            ^ self
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2551
        ].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2552
        self selectRowAt:rowNr colAt:colNr atPoint:clickPoint openEditor:false.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2553
3923
d5c71ade2f43 changed: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3922
diff changeset
  2554
        ((button == 2) and:[UserPreferences current selectOnRightClick]) ifTrue:[
3922
fd141174f607 changed: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3908
diff changeset
  2555
            self selectRowAt:rowNr colAt:colNr atPoint:clickPoint openEditor:true 
fd141174f607 changed: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3908
diff changeset
  2556
        ] ifFalse:[
fd141174f607 changed: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3908
diff changeset
  2557
            buttonReleaseAction := 
fd141174f607 changed: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3908
diff changeset
  2558
                [ 
fd141174f607 changed: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3908
diff changeset
  2559
                    self selectRowAt:rowNr colAt:colNr atPoint:clickPoint openEditor:true 
fd141174f607 changed: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3908
diff changeset
  2560
                ].
fd141174f607 changed: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3908
diff changeset
  2561
fd141174f607 changed: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3908
diff changeset
  2562
            buttonMotionAction := 
fd141174f607 changed: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3908
diff changeset
  2563
                [:aPoint|
fd141174f607 changed: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3908
diff changeset
  2564
                    (self canStartDragAt:aPoint clickedAt:clickPoint) ifTrue:[
fd141174f607 changed: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3908
diff changeset
  2565
                        self startDragAt:aPoint
fd141174f607 changed: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3908
diff changeset
  2566
                    ]
fd141174f607 changed: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3908
diff changeset
  2567
                ].
fd141174f607 changed: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3908
diff changeset
  2568
        ].
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2569
        ^ self
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2570
    ].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2571
3923
d5c71ade2f43 changed: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3922
diff changeset
  2572
    ((button == 2) and:[UserPreferences current selectOnRightClick]) ifFalse:[
4055
4373923243d3 comment/format in: #setSelectColIndex:rowIndex:openEditor:
Claus Gittinger <cg@exept.de>
parents: 4020
diff changeset
  2573
        buttonReleaseAction := 
4373923243d3 comment/format in: #setSelectColIndex:rowIndex:openEditor:
Claus Gittinger <cg@exept.de>
parents: 4020
diff changeset
  2574
            [
4373923243d3 comment/format in: #setSelectColIndex:rowIndex:openEditor:
Claus Gittinger <cg@exept.de>
parents: 4020
diff changeset
  2575
                self selectRowAt:rowNr colAt:colNr atPoint:clickPoint openEditor:true.
4373923243d3 comment/format in: #setSelectColIndex:rowIndex:openEditor:
Claus Gittinger <cg@exept.de>
parents: 4020
diff changeset
  2576
            ].
4373923243d3 comment/format in: #setSelectColIndex:rowIndex:openEditor:
Claus Gittinger <cg@exept.de>
parents: 4020
diff changeset
  2577
4373923243d3 comment/format in: #setSelectColIndex:rowIndex:openEditor:
Claus Gittinger <cg@exept.de>
parents: 4020
diff changeset
  2578
        "/ normally, we select on button release; however, any editor is shown immediately
4373923243d3 comment/format in: #setSelectColIndex:rowIndex:openEditor:
Claus Gittinger <cg@exept.de>
parents: 4020
diff changeset
  2579
        ((column := self columnDescriptorAt:colNr) notNil 
4373923243d3 comment/format in: #setSelectColIndex:rowIndex:openEditor:
Claus Gittinger <cg@exept.de>
parents: 4020
diff changeset
  2580
        and:[ (columnEditorType := column description editorType) notNil
4373923243d3 comment/format in: #setSelectColIndex:rowIndex:openEditor:
Claus Gittinger <cg@exept.de>
parents: 4020
diff changeset
  2581
        and:[ columnEditorType ~~ #None ]]) ifTrue:[
4373923243d3 comment/format in: #setSelectColIndex:rowIndex:openEditor:
Claus Gittinger <cg@exept.de>
parents: 4020
diff changeset
  2582
            buttonReleaseAction value.
4373923243d3 comment/format in: #setSelectColIndex:rowIndex:openEditor:
Claus Gittinger <cg@exept.de>
parents: 4020
diff changeset
  2583
            buttonReleaseAction := nil.
4373923243d3 comment/format in: #setSelectColIndex:rowIndex:openEditor:
Claus Gittinger <cg@exept.de>
parents: 4020
diff changeset
  2584
            editView notNil ifTrue:[
4373923243d3 comment/format in: #setSelectColIndex:rowIndex:openEditor:
Claus Gittinger <cg@exept.de>
parents: 4020
diff changeset
  2585
                |p|
4373923243d3 comment/format in: #setSelectColIndex:rowIndex:openEditor:
Claus Gittinger <cg@exept.de>
parents: 4020
diff changeset
  2586
4373923243d3 comment/format in: #setSelectColIndex:rowIndex:openEditor:
Claus Gittinger <cg@exept.de>
parents: 4020
diff changeset
  2587
                "/ kludge
4991
ddee68d07788 device access
Claus Gittinger <cg@exept.de>
parents: 4961
diff changeset
  2588
                p := device translatePoint:x@y fromView:self toView:editView.
4055
4373923243d3 comment/format in: #setSelectColIndex:rowIndex:openEditor:
Claus Gittinger <cg@exept.de>
parents: 4020
diff changeset
  2589
                editView simulateButtonPress:button at:p.
4056
36eb0b1137db changed: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 4055
diff changeset
  2590
                (editView subViews first isKindOf:EditTextView) ifTrue:[
36eb0b1137db changed: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 4055
diff changeset
  2591
                    editView simulateButtonRelease:button at:p.
36eb0b1137db changed: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 4055
diff changeset
  2592
                ].
4055
4373923243d3 comment/format in: #setSelectColIndex:rowIndex:openEditor:
Claus Gittinger <cg@exept.de>
parents: 4020
diff changeset
  2593
                ^ self.
4373923243d3 comment/format in: #setSelectColIndex:rowIndex:openEditor:
Claus Gittinger <cg@exept.de>
parents: 4020
diff changeset
  2594
            ]
4373923243d3 comment/format in: #setSelectColIndex:rowIndex:openEditor:
Claus Gittinger <cg@exept.de>
parents: 4020
diff changeset
  2595
        ]
3922
fd141174f607 changed: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3908
diff changeset
  2596
    ].
fd141174f607 changed: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3908
diff changeset
  2597
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2598
    clickedIntoSelection := self isInSelection:rowNr.
3908
a8586db23418 comment/format in: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3897
diff changeset
  2599
    clickedIntoSelection ifTrue:[ 
a8586db23418 comment/format in: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3897
diff changeset
  2600
        |selColIdx|
a8586db23418 comment/format in: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3897
diff changeset
  2601
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2602
        selColIdx := self selectedColIndex.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2603
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2604
        (selColIdx ~~ 0 and:[selColIdx ~~ colNr]) ifTrue:[
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2605
            clickedIntoSelection := (selectedRowIndex size > 1)
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2606
        ].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2607
    ].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2608
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2609
    clickedIntoSelection ifFalse:[
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2610
        self selectRowAt:rowNr colAt:colNr atPoint:clickPoint openEditor:false.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2611
    ] ifTrue:[
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2612
        self canDrag ifTrue:[
4055
4373923243d3 comment/format in: #setSelectColIndex:rowIndex:openEditor:
Claus Gittinger <cg@exept.de>
parents: 4020
diff changeset
  2613
            buttonMotionAction := 
4373923243d3 comment/format in: #setSelectColIndex:rowIndex:openEditor:
Claus Gittinger <cg@exept.de>
parents: 4020
diff changeset
  2614
                [:aPoint|
4373923243d3 comment/format in: #setSelectColIndex:rowIndex:openEditor:
Claus Gittinger <cg@exept.de>
parents: 4020
diff changeset
  2615
                    (self canStartDragAt:aPoint clickedAt:clickPoint) ifTrue:[
4373923243d3 comment/format in: #setSelectColIndex:rowIndex:openEditor:
Claus Gittinger <cg@exept.de>
parents: 4020
diff changeset
  2616
                        self startDragAt:aPoint
4373923243d3 comment/format in: #setSelectColIndex:rowIndex:openEditor:
Claus Gittinger <cg@exept.de>
parents: 4020
diff changeset
  2617
                    ]
4373923243d3 comment/format in: #setSelectColIndex:rowIndex:openEditor:
Claus Gittinger <cg@exept.de>
parents: 4020
diff changeset
  2618
                ].
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2619
            ^ self
2802
fa5806bd210a select behavior changed:
Claus Gittinger <cg@exept.de>
parents: 2797
diff changeset
  2620
        ]
fa5806bd210a select behavior changed:
Claus Gittinger <cg@exept.de>
parents: 2797
diff changeset
  2621
    ].
2788
8f45f2da80fa selection/multiSelection/startDrag
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  2622
8f45f2da80fa selection/multiSelection/startDrag
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  2623
    buttonMotionAction := [:p|
3908
a8586db23418 comment/format in: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3897
diff changeset
  2624
        (self bounds containsPoint:p) ifTrue:[ 
a8586db23418 comment/format in: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3897
diff changeset
  2625
            |rowUnderPoint|
a8586db23418 comment/format in: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3897
diff changeset
  2626
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2627
            rowUnderPoint := self yVisibleToRowNr:(p y).
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2628
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2629
            rowUnderPoint notNil ifTrue:[
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2630
                buttonReleaseAction notNil ifTrue:[
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2631
                    rowUnderPoint == rowNr ifFalse:[ 
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2632
                        buttonReleaseAction := nil
2907
c4a8cac87053 ctrl-select fixed
Claus Gittinger <cg@exept.de>
parents: 2886
diff changeset
  2633
                    ].
c4a8cac87053 ctrl-select fixed
Claus Gittinger <cg@exept.de>
parents: 2886
diff changeset
  2634
                ].
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2635
                buttonReleaseAction isNil ifTrue:[
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2636
                    self selectRowFrom:rowNr to:rowUnderPoint.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2637
                ]
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2638
            ]
2907
c4a8cac87053 ctrl-select fixed
Claus Gittinger <cg@exept.de>
parents: 2886
diff changeset
  2639
        ].
c4a8cac87053 ctrl-select fixed
Claus Gittinger <cg@exept.de>
parents: 2886
diff changeset
  2640
    ].
3908
a8586db23418 comment/format in: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3897
diff changeset
  2641
4056
36eb0b1137db changed: #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 4055
diff changeset
  2642
    "Modified: / 12-07-2011 / 14:54:45 / cg"
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2643
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2644
643
bfd44867347f adding: bug fix
ca
parents: 642
diff changeset
  2645
buttonRelease:button x:x y:y
bfd44867347f adding: bug fix
ca
parents: 642
diff changeset
  2646
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2647
    buttonMotionAction := nil.
1749
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  2648
    self stopAutoScroll.
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  2649
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2650
    buttonReleaseAction notNil ifTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2651
        buttonReleaseAction value.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  2652
        buttonReleaseAction := nil.
643
bfd44867347f adding: bug fix
ca
parents: 642
diff changeset
  2653
    ].
bfd44867347f adding: bug fix
ca
parents: 642
diff changeset
  2654
    super buttonRelease:button x:x y:y
bfd44867347f adding: bug fix
ca
parents: 642
diff changeset
  2655
!
bfd44867347f adding: bug fix
ca
parents: 642
diff changeset
  2656
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2657
buttonShiftPressAt:clickPoint rowNr:aRowNr colNr:aColNr
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2658
    |colIdx numSelRows|
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2659
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2660
    buttonReleaseAction := buttonMotionAction := nil.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2661
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2662
    colIdx := aColNr.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2663
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2664
    (multipleSelectOk and:[(numSelRows := selectedRowIndex size) > 0]) ifTrue:[
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2665
        (numSelRows == 1 and:[self isInSelection:aRowNr]) ifFalse:[ |min max|
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2666
            min := max := aRowNr.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2667
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2668
            selectedRowIndex do:[:anIndex|
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2669
                min := min min:anIndex.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2670
                max := max max:anIndex.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2671
            ].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2672
            self selectRowFrom:min to:max.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2673
            ^ self
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2674
        ].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2675
        self selectedColIndex ~~ 0 ifTrue:[     "/ toggle column selection
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2676
            colIdx := 0
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2677
        ].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2678
    ].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2679
    self selectRowAt:aRowNr colAt:colIdx atPoint:clickPoint openEditor:false.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2680
!
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  2681
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2682
characterPress:aChar x:x y:y
4176
915f6fa47e09 class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4163
diff changeset
  2683
    "search row in column at x/y starting its printable label with character."
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2684
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2685
    |colNr rowNr lsize found column|
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2686
2445
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2687
    lsize  := list size.
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2688
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2689
"/    (rowIfAbsentBlock notNil 
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2690
"/     or:[x isNil
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2691
"/     or:[(colNr := self xVisibleToColNr:x) isNil]]) ifTrue:[
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2692
"/        ^ self
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2693
"/    ].
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2694
    colNr := self findFirstColumnWithStringFrom:1 to:lsize.
2535
4df3f0a09b83 fixed: characterPressed: ... on non editable column
tm
parents: 2524
diff changeset
  2695
    colNr isNil ifTrue:[ ^ self ].
4df3f0a09b83 fixed: characterPressed: ... on non editable column
tm
parents: 2524
diff changeset
  2696
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2697
    rowNr  := self lastIndexSelected.
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2698
    column := self columnDescriptorAt:colNr.
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2699
    found  := 0.
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2700
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2701
    lsize > rowNr ifTrue:[
2445
df54aa1128b3 charcter search: first column which contains a string is searched for
penk
parents: 2398
diff changeset
  2702
        "/ search to end
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2703
        found := column findRowNrStartingWithChar:aChar start:(rowNr + 1) stop:lsize.
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2704
    ].
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2705
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2706
    (found == 0 and:[rowNr > 1]) ifTrue:[
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2707
     "/ search from begin
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2708
        found := column findRowNrStartingWithChar:aChar start:1 stop:(rowNr - 1)
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2709
    ].
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2710
    found ~~ 0 ifTrue:[
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2711
        self selectColIndex:colNr rowIndex:found.
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2712
    ].
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2713
896
aa07612a7c04 care for redirected messages in characterPress:
Claus Gittinger <cg@exept.de>
parents: 892
diff changeset
  2714
    "Modified: / 21.5.1998 / 03:30:22 / cg"
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2715
!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2716
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2717
contentsChanged
4257
0740dae4df00 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4255
diff changeset
  2718
    "size of contents changed - move origin up if possible"
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2719
    
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2720
    |y|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2721
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2722
    shown ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2723
        self recomputeHeightOfContents.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2724
        y := self maxViewOriginY.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2725
        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
  2726
            scrollWhenUpdating ~~ false ifTrue:[
9ed8131d94bb viewOrigin fix (when list is set to nil while not shown);
Claus Gittinger <cg@exept.de>
parents: 1947
diff changeset
  2727
                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
  2728
            ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2729
        ] ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2730
            self updateEditViewOrigin.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2731
        ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2732
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2733
    super contentsChanged
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2734
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2735
2816
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2736
cursorKey:aKey rawKey:rawKey
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2737
    |hasSelectables step start minSelRowNr maxSelRowNr selColNr selRowNr listSize|
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2738
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2739
    hasSelectables := self hasSelectables.
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2740
    listSize := list size.
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2741
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2742
    (hasSelectables or:[selectRowOnDefault]) ifFalse:[ ^ self ].
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2743
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2744
    minSelRowNr := self minIndexSelected.
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2745
    maxSelRowNr := self maxIndexSelected.
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2746
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  2747
    selColNr := hasSelectables ifFalse:[0] ifTrue:[self selectedColIndex].
2816
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2748
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2749
    aKey == #CursorUp ifTrue:[
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2750
        selRowNr := minSelRowNr > 1 ifTrue:[minSelRowNr - 1] ifFalse:[listSize].
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2751
        step := -1.
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2752
    ] ifFalse:[
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2753
        aKey == #CursorDown ifTrue:[
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2754
            selRowNr := maxSelRowNr < listSize ifTrue:[maxSelRowNr + 1] ifFalse:[1].
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2755
            step := 1.
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2756
        ] ifFalse:[
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2757
            ("aKey == #BeginOfLine or:[" rawKey == #Home "]") ifTrue:[
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2758
                selRowNr := 1.
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2759
                step := 1.
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2760
            ] ifFalse:[
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2761
                (rawKey == #End) ifTrue:[
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2762
                    selRowNr := listSize.
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2763
                    step := -1.
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2764
                ]
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2765
            ]
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2766
        ]
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2767
    ].
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2768
    start := selRowNr.
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2769
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2770
    [ self isRowSelectable:selRowNr ] whileFalse:[
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2771
        selRowNr := selRowNr + step.
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2772
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2773
        selRowNr == 0 ifTrue:[
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2774
            selRowNr := listSize.
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2775
        ] ifFalse:[
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2776
            selRowNr > listSize ifTrue:[
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2777
                selRowNr := 1.
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2778
            ].
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2779
        ].
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2780
        selRowNr == start ifTrue:[^ self ].
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2781
    ].
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2782
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2783
    ((aKey == #CursorUp) or:[aKey == #CursorDown]) ifTrue:[
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2784
        (multipleSelectOk and:[self sensor shiftDown]) ifTrue:[
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2785
            self addRowToSelection:selRowNr.
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2786
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2787
            aKey == #CursorDown ifTrue:[
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2788
                self makeLineVisible:((selRowNr+1) min:listSize)
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2789
            ] ifFalse:[
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2790
                self makeLineVisible:((selRowNr-1) max:1)
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2791
            ].
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2792
            ^ self
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2793
        ]
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2794
    ].
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2795
    self selectColIndex:selColNr rowIndex:selRowNr
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2796
!
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2797
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2798
doubleClicked
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2799
    "handle a double click"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2800
    
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2801
    |col sel idx|
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2802
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2803
    self hasSelection ifTrue:[
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2804
        idx := self firstIndexSelected.
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2805
        col := self selectedColumn.
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2806
        (col notNil and:[ (sel := col doubleClickedSelector) notNil ]) ifTrue:[
2074
89565d366510 doubleClick and menu via columnAdaptor
martin
parents: 2044
diff changeset
  2807
            col doubleClickOn:idx
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2808
        ] ifFalse:[
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2809
            doubleClickActionBlock notNil ifTrue:[
4772
11b5f36c5943 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4686
diff changeset
  2810
                doubleClickActionBlock valueWithOptionalArgument:idx
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2811
            ]
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2812
        ]
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  2813
    ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2814
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2815
667
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2816
findMenuForSelection
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2817
    "find the middle button menu for the current selection; returns the menu or nil"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2818
    
667
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2819
    |col row menu|
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2820
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2821
    self numberOfSelections == 1 ifTrue:[
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2822
        row := self at:(self firstIndexSelected).
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2823
        col := self selectedColumn.
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2824
        col notNil ifTrue:[
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2825
            menu := col menuForRow:row orAdaptor:columnAdaptor.
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2826
            menu notNil ifTrue:[ ^ menu ].
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2827
        ].
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2828
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2829
        col := columnDescriptors 
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2830
                        detect:[:c | c rendererType == #rowSelector ]
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2831
                        ifNone:[ nil ].
667
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2832
        col notNil ifTrue:[
1223
176702811314 kludge: when asking for an itemMenu, pass application to
tm
parents: 1215
diff changeset
  2833
            ^ col menuForRow:row inApplication:(self application)
667
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2834
        ]
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2835
    ].
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2836
    ^ nil
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2837
!
caa3c553d3d1 accessing of the middle-button assigned to a cell
ca
parents: 656
diff changeset
  2838
1111
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2839
keyPress:aKey x:x y:y
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2840
    "a key was pressed - handle page-keys here"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  2841
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2842
    <resource: #keyboard (#PreviousPage #NextPage #HalfPageUp #HalfPageDown
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  2843
                          #BeginOfText #EndOfText #ScrollUp #ScrollDown
1947
1e11b36633b2 added selectAllRows (Alt-Shift-A) key function
Claus Gittinger <cg@exept.de>
parents: 1946
diff changeset
  2844
                          #CursorUp #CursorDown #CursorRight #CursorLeft #SelectAll)>
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2845
2816
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2846
    |maxColNr firstSelRowNr selRowNr selColNr 
2470
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  2847
     key column isTab listSize hasSelectables rawKey|
1111
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2848
1805
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
  2849
    self isEnabled ifFalse:[^ self].
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
  2850
1416
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
  2851
    (listSize := list size) == 0 ifTrue:[
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
  2852
        ^ super keyPress:aKey x:x y:y
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
  2853
    ].
1776
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2854
    aKey isCharacter ifTrue:[
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2855
        ^ self characterPress:aKey x:x y:y
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2856
    ].
1111
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2857
1947
1e11b36633b2 added selectAllRows (Alt-Shift-A) key function
Claus Gittinger <cg@exept.de>
parents: 1946
diff changeset
  2858
    (aKey == #SelectAll) ifTrue:[
1e11b36633b2 added selectAllRows (Alt-Shift-A) key function
Claus Gittinger <cg@exept.de>
parents: 1946
diff changeset
  2859
        multipleSelectOk ifTrue:[
1e11b36633b2 added selectAllRows (Alt-Shift-A) key function
Claus Gittinger <cg@exept.de>
parents: 1946
diff changeset
  2860
            self selectAllRows. 
1e11b36633b2 added selectAllRows (Alt-Shift-A) key function
Claus Gittinger <cg@exept.de>
parents: 1946
diff changeset
  2861
        ].
1e11b36633b2 added selectAllRows (Alt-Shift-A) key function
Claus Gittinger <cg@exept.de>
parents: 1946
diff changeset
  2862
        ^ self
1e11b36633b2 added selectAllRows (Alt-Shift-A) key function
Claus Gittinger <cg@exept.de>
parents: 1946
diff changeset
  2863
    ].
1e11b36633b2 added selectAllRows (Alt-Shift-A) key function
Claus Gittinger <cg@exept.de>
parents: 1946
diff changeset
  2864
1776
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2865
    aKey == #PreviousPage ifTrue:[^ self pageUp].
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2866
    aKey == #NextPage     ifTrue:[^ self pageDown].
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2867
    aKey == #HalfPageUp   ifTrue:[^ self halfPageUp].
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2868
    aKey == #HalfPageDown ifTrue:[^ self halfPageDown].
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2869
    aKey == #BeginOfText  ifTrue:[^ self scrollToTop].
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2870
    aKey == #EndOfText    ifTrue:[^ self scrollToBottom].
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2871
    aKey == #ScrollUp     ifTrue:[^ self scrollUp]. 
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2872
    aKey == #ScrollDown   ifTrue:[^ self scrollDown]. 
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2873
2816
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2874
    aKey == #Return ifTrue:[   
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2875
        editView notNil ifTrue:[
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2876
            (self selectedRowIndex size == 1
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2877
            and:[self selectedRowIndex first == listSize]) ifTrue:[
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2878
                self selectRowIndex:nil.
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2879
            ] ifFalse:[
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2880
                self cursorKey:#CursorDown rawKey:#CursorDown.
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2881
            ].
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2882
            ^ self
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2883
        ].
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2884
        self numberOfSelections == 1 ifTrue:[
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2885
            self doubleClicked
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2886
        ].
2363
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2887
        ^ self
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2888
    ].
1111
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2889
2816
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2890
    hasSelectables := self hasSelectables.
2470
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  2891
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  2892
    rawKey := (WindowGroup lastEventQuerySignal query) rawKey.
2363
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2893
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2894
    (aKey == #CursorUp 
2816
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2895
    or:[aKey == #CursorDown
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2896
    or:[rawKey == #Home
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2897
    or:[rawKey == #End]]]) 
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2898
    ifTrue:[
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  2899
        self cursorKey:aKey rawKey:rawKey.
1776
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2900
        ^ self
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2901
    ].
1668
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
  2902
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
  2903
    hasSelectables ifFalse:[
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
  2904
        ^ super keyPress:aKey x:x y:y
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
  2905
    ].
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
  2906
1776
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2907
    "/ CURSOR LEFT/RIGHT or TABING
2470
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  2908
    (aKey == #CursorLeft or:[aKey == #CursorRight]) ifTrue:[
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  2909
        isTab := false.
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  2910
        key   := aKey.
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  2911
    ] ifFalse:[
1668
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
  2912
        tabIntern ifFalse:[
1665
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2913
            ^ super keyPress:aKey x:x y:y
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2914
        ].
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2915
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2916
        (aKey includesString:'Tab') ifTrue:[
4176
915f6fa47e09 class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4163
diff changeset
  2917
            key := (aKey = #BackTab or:[self sensor shiftDown or:[aKey includesString:'Left']]) 
2482
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
  2918
                        ifTrue:[#CursorLeft]
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2470
diff changeset
  2919
                        ifFalse:[#CursorRight]
1416
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
  2920
        ] ifFalse:[
1665
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2921
            (aKey == #FocusPrevious or:[aKey == #FocusNext]) ifFalse:[
1416
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
  2922
                ^ super keyPress:aKey x:x y:y
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
  2923
            ].
1665
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2924
            key := aKey == #FocusPrevious ifTrue:[#CursorLeft] ifFalse:[#CursorRight].
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2925
        ].
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2926
        isTab := true.
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2927
    ].
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2928
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2929
    maxColNr := self numberOfColumns.
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  2930
    selColNr := self selectedColIndex.
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  2931
2470
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  2932
    firstSelRowNr := self firstIndexSelected.
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  2933
1111
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2934
    key == #CursorLeft ifTrue:[
2363
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2935
        selRowNr := firstSelRowNr.
1665
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  2936
        selRowNr == 0 ifTrue:[selRowNr := listSize].
1776
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2937
        selColNr == 0 ifTrue:[selColNr := maxColNr + 1].
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2938
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2939
        [true] whileTrue:[
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2940
            (selColNr := selColNr - 1) == 0 ifTrue:[
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2941
                [   selRowNr := selRowNr - 1.
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2942
                    selRowNr == 0 ifTrue:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2943
                        isTab ifTrue:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2944
                            tabAtStartAction notNil ifTrue:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2945
                                tabAtStartAction value
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2946
                            ] ifFalse:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2947
                                self deselect.
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2948
                                self windowGroup focusPreviousFrom:self
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2949
                            ]
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2950
                        ].
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2951
                        ^ self
1416
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
  2952
                    ].
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2953
                    (self isRowSelectable:selRowNr)
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2954
                ] whileFalse.
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2955
1776
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2956
                selColNr := maxColNr
1111
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2957
            ].
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2958
            column := self columnDescriptorAt:selColNr.
1416
505ef8832a06 focus next/previous
Claus Gittinger <cg@exept.de>
parents: 1408
diff changeset
  2959
1111
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2960
            (column rendererType ~~ #rowSelector and:[column canSelect:selRowNr]) ifTrue:[
1776
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2961
                ^ self selectColIndex:selColNr rowIndex:selRowNr.
1111
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2962
            ]
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  2963
        ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2964
    ].
1776
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2965
2363
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2966
    selRowNr := firstSelRowNr.
1776
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2967
    selRowNr == 0 ifTrue:[selRowNr := 1].
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2968
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2969
    [true] whileTrue:[
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2970
        (selColNr := selColNr + 1) > maxColNr ifTrue:[
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2971
            [   selRowNr := selRowNr + 1.
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2972
                selRowNr > listSize ifTrue:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2973
                    isTab ifTrue:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2974
                        tabAtEndAction notNil ifTrue:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2975
                            tabAtEndAction value
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2976
                        ] ifFalse:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2977
                            self deselect.
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2978
                            self windowGroup focusNextFrom:self
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2979
                        ]
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2980
                    ].
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2981
                    ^ self
1776
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2982
                ].
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2983
                (self isRowSelectable:selRowNr)
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2984
            ] whileFalse.
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  2985
1776
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2986
            selColNr := 1
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2987
        ].
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  2988
        column := self columnDescriptorAt:selColNr.
1776
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2989
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2990
        (column rendererType ~~ #rowSelector and:[column canSelect:selRowNr]) ifTrue:[
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2991
            ^ self selectColIndex:selColNr rowIndex:selRowNr
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2992
        ]
e28ffcdd52a7 bugfix in cursor up/down
ca
parents: 1754
diff changeset
  2993
    ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2994
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  2995
5279
d30e2f0b2356 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5252
diff changeset
  2996
keyboardZoom:larger
d30e2f0b2356 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5252
diff changeset
  2997
    "CTRL+/- zoom action"
d30e2f0b2356 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5252
diff changeset
  2998
d30e2f0b2356 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5252
diff changeset
  2999
    self fontLargerOrSmaller:larger
d30e2f0b2356 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5252
diff changeset
  3000
!
d30e2f0b2356 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5252
diff changeset
  3001
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3002
originChanged:delta 
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3003
    "this one is sent, after the origin of my contents has changed -
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3004
     tell dependents (i.e. scrollers) about this"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3005
    
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3006
    super originChanged:delta.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3007
    self updateEditViewOrigin.
2276
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  3008
!
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  3009
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  3010
sizeChanged:how
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  3011
    "size changed - move origin up if possible
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3012
     change the layout of the labelView dependent on my layout"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3013
4163
3d9fbb60d952 class: DSVColumnView
ca
parents: 4161
diff changeset
  3014
    |selectionWasVisible lastExtent|
3d9fbb60d952 class: DSVColumnView
ca
parents: 4161
diff changeset
  3015
3d9fbb60d952 class: DSVColumnView
ca
parents: 4161
diff changeset
  3016
    lastExtent := previousExtent notNil ifTrue:[previousExtent] ifFalse:[self extent].
3d9fbb60d952 class: DSVColumnView
ca
parents: 4161
diff changeset
  3017
    selectionWasVisible := self isSelectionVisibleIn:lastExtent.
2276
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  3018
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  3019
    previousExtent := self extent.
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  3020
    super sizeChanged:how.
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  3021
4163
3d9fbb60d952 class: DSVColumnView
ca
parents: 4161
diff changeset
  3022
    previousExtent := self extent.
3d9fbb60d952 class: DSVColumnView
ca
parents: 4161
diff changeset
  3023
2276
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  3024
    "/ 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
  3025
    "/ (could be invisible in a notebook ...)
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  3026
    realized ifTrue:[                   "used to be: shown" 
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  3027
"/        labelView isVisible ifTrue:[
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  3028
"/            lyt := labelView layout.
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  3029
"/            lyt  leftOffset:(layout leftOffset).
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  3030
"/            lyt rightOffset:(layout rightOffset).
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  3031
"/            labelView layout:lyt.
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  3032
"/        ].
4163
3d9fbb60d952 class: DSVColumnView
ca
parents: 4161
diff changeset
  3033
        previousExtent x ~= lastExtent x ifTrue: [
4123
a80521cc987c changed: #sizeChanged:
Claus Gittinger <cg@exept.de>
parents: 4116
diff changeset
  3034
            self fitColumns.
a80521cc987c changed: #sizeChanged:
Claus Gittinger <cg@exept.de>
parents: 4116
diff changeset
  3035
        ].
2276
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  3036
        selectionWasVisible ifTrue:[
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  3037
            self makeSelectionVisible.
4020
3bf856409692 changed: #sizeChanged:
ca
parents: 3994
diff changeset
  3038
        ].
3bf856409692 changed: #sizeChanged:
ca
parents: 3994
diff changeset
  3039
        self updateEditViewOrigin.
2276
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  3040
    ].
4059
b8d390e67d16 changed: #sizeChanged:
Claus Gittinger <cg@exept.de>
parents: 4056
diff changeset
  3041
4123
a80521cc987c changed: #sizeChanged:
Claus Gittinger <cg@exept.de>
parents: 4116
diff changeset
  3042
    "Modified: / 04-05-2012 / 14:34:24 / cg"
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3043
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3044
1665
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  3045
!DSVColumnView methodsFor:'focus handling'!
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  3046
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  3047
canTab
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  3048
    super canTab ifTrue:[
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  3049
        ^ editView isNil
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  3050
    ].
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  3051
    ^ false
2101
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  3052
!
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  3053
3138
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
  3054
showFocus:explicit
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
  3055
    self invalidateSelection.
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
  3056
    super showFocus:explicit
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
  3057
!
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
  3058
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
  3059
showNoFocus:explicit
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
  3060
    self invalidateSelection.
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
  3061
    super showNoFocus:explicit
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
  3062
!
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
  3063
2101
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  3064
wantsFocusWithPointerEnter
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  3065
    "views which like to take the keyboard focus
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  3066
     when the pointer enters can do so by redefining this
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  3067
     to return true"
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  3068
3924
72044fd3296a changed: #wantsFocusWithPointerEnter
Claus Gittinger <cg@exept.de>
parents: 3923
diff changeset
  3069
    editView notNil ifTrue:[^ false].
2237
1da5501b1248 bug fix in focus handling
ca
parents: 2226
diff changeset
  3070
2958
99f7bfe9e9a2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2956
diff changeset
  3071
    (UserPreferences current focusFollowsMouse ~~ false
2101
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  3072
    and:[(styleSheet at:#'selection.requestFocusOnPointerEnter' default:true)
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  3073
    ]) ifTrue:[
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  3074
        list size > 0 ifTrue:[
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  3075
            ^ true
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  3076
        ]
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  3077
    ].
56dce43c4f46 *** empty log message ***
penk
parents: 2074
diff changeset
  3078
    ^ false
3924
72044fd3296a changed: #wantsFocusWithPointerEnter
Claus Gittinger <cg@exept.de>
parents: 3923
diff changeset
  3079
72044fd3296a changed: #wantsFocusWithPointerEnter
Claus Gittinger <cg@exept.de>
parents: 3923
diff changeset
  3080
    "Modified: / 08-08-2010 / 14:41:00 / cg"
1665
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  3081
! !
51c444bfe5ae default behavour tabing; not yet configurable (next step)
ca
parents: 1661
diff changeset
  3082
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3083
!DSVColumnView methodsFor:'gc operations'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3084
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3085
imageOnMyDevice:anImage 
4606
1cc343187f71 Sending of Image>>#clearMaskedPixels moved to Image >> #asFormOnDevice:
Stefan Vogel <sv@exept.de>
parents: 4589
diff changeset
  3086
    "associate image to device and returns the new image."
1cc343187f71 Sending of Image>>#clearMaskedPixels moved to Image >> #asFormOnDevice:
Stefan Vogel <sv@exept.de>
parents: 4589
diff changeset
  3087
1cc343187f71 Sending of Image>>#clearMaskedPixels moved to Image >> #asFormOnDevice:
Stefan Vogel <sv@exept.de>
parents: 4589
diff changeset
  3088
    anImage isNil ifTrue:[^ nil].
4991
ddee68d07788 device access
Claus Gittinger <cg@exept.de>
parents: 4961
diff changeset
  3089
    ^ anImage onDevice:device.
1100
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
  3090
!
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
  3091
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3092
registerImage:anImage key:aKey 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3093
    "any row can register an image with a unique identifier a key symbol"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3094
    
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3095
    |img|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3096
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3097
    (img := registererImages at:aKey ifAbsent:nil) notNil ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3098
        ^ img
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3099
    ].
2488
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  3100
    img := self imageOnMyDevice:anImage.
567
01083cbb4bae checkin from browser
ca
parents: 563
diff changeset
  3101
    registererImages at:aKey put:img.
01083cbb4bae checkin from browser
ca
parents: 563
diff changeset
  3102
    ^ img
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3103
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3104
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3105
registeredImageAt:aKey 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3106
    "any row can register an image with a unique identifier"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3107
    
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3108
    ^ registererImages at:aKey ifAbsent:nil
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3109
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3110
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3111
releaseAllRegisteredImages
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3112
    "release all registered images"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3113
    
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3114
    registererImages := IdentityDictionary new.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3115
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3116
3215
edb9fb9e4931 activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3172
diff changeset
  3117
!DSVColumnView methodsFor:'help'!
edb9fb9e4931 activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3172
diff changeset
  3118
edb9fb9e4931 activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3172
diff changeset
  3119
flyByHelpTextAt:aPoint
edb9fb9e4931 activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3172
diff changeset
  3120
    "return the helpText for aPoint (i.e. when mouse-pointer is moved over an item)."
edb9fb9e4931 activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3172
diff changeset
  3121
3248
c9e48b873e6e do not provide col-helptext if beyond the last row
Claus Gittinger <cg@exept.de>
parents: 3239
diff changeset
  3122
    |rowNr colNr col|
3215
edb9fb9e4931 activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3172
diff changeset
  3123
edb9fb9e4931 activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3172
diff changeset
  3124
    columnDescriptors isEmpty ifTrue:[^ nil].
edb9fb9e4931 activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3172
diff changeset
  3125
3248
c9e48b873e6e do not provide col-helptext if beyond the last row
Claus Gittinger <cg@exept.de>
parents: 3239
diff changeset
  3126
    rowNr := self yVisibleToRowNr:aPoint y.
c9e48b873e6e do not provide col-helptext if beyond the last row
Claus Gittinger <cg@exept.de>
parents: 3239
diff changeset
  3127
    rowNr isNil ifTrue:[^ nil ].
c9e48b873e6e do not provide col-helptext if beyond the last row
Claus Gittinger <cg@exept.de>
parents: 3239
diff changeset
  3128
3215
edb9fb9e4931 activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3172
diff changeset
  3129
    colNr := self xVisibleToColNr:aPoint x.
3217
e74188fce7c2 xVisibleToSelectionIndex:x different return value confusion
Claus Gittinger <cg@exept.de>
parents: 3215
diff changeset
  3130
    colNr notNil ifTrue:[
3215
edb9fb9e4931 activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3172
diff changeset
  3131
        col := columnDescriptors at:colNr.
3458
5f9a85c6279a Row specific active help (with DataSet)
Stefan Vogel <sv@exept.de>
parents: 3449
diff changeset
  3132
        ^ col activeHelpTextForRow:rowNr.
3215
edb9fb9e4931 activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3172
diff changeset
  3133
    ].
edb9fb9e4931 activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3172
diff changeset
  3134
    ^ nil
edb9fb9e4931 activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3172
diff changeset
  3135
edb9fb9e4931 activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3172
diff changeset
  3136
    "Created: / 26-03-2007 / 14:42:54 / cg"
3248
c9e48b873e6e do not provide col-helptext if beyond the last row
Claus Gittinger <cg@exept.de>
parents: 3239
diff changeset
  3137
    "Modified: / 16-10-2007 / 17:52:24 / cg"
3215
edb9fb9e4931 activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3172
diff changeset
  3138
! !
edb9fb9e4931 activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3172
diff changeset
  3139
2500
1477b0a5a918 method category rename
Claus Gittinger <cg@exept.de>
parents: 2488
diff changeset
  3140
!DSVColumnView methodsFor:'initialization & release'!
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3141
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3142
create
4521
727d661f5e8e class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4496
diff changeset
  3143
    |graphicsDevice|
727d661f5e8e class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4496
diff changeset
  3144
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3145
    super create.
4991
ddee68d07788 device access
Claus Gittinger <cg@exept.de>
parents: 4961
diff changeset
  3146
    graphicsDevice := device.
4521
727d661f5e8e class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4496
diff changeset
  3147
727d661f5e8e class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4496
diff changeset
  3148
    fgColor     := fgColor     onDevice:graphicsDevice.
727d661f5e8e class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4496
diff changeset
  3149
    bgColor     := bgColor     onDevice:graphicsDevice.
727d661f5e8e class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4496
diff changeset
  3150
    selectionForegroundColor := selectionForegroundColor onDevice:graphicsDevice.
727d661f5e8e class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4496
diff changeset
  3151
    selectionBackgroundColor := selectionBackgroundColor onDevice:graphicsDevice.
727d661f5e8e class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4496
diff changeset
  3152
    selectionFrameColor notNil ifTrue:[selectionFrameColor := selectionFrameColor onDevice:graphicsDevice].
727d661f5e8e class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4496
diff changeset
  3153
    selectionForegroundColorNoFocus := selectionForegroundColorNoFocus onDevice:graphicsDevice.
727d661f5e8e class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4496
diff changeset
  3154
    selectionBackgroundColorNoFocus := selectionBackgroundColorNoFocus onDevice:graphicsDevice.
727d661f5e8e class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4496
diff changeset
  3155
727d661f5e8e class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4496
diff changeset
  3156
    buttonShadowColor := buttonShadowColor onDevice:graphicsDevice.
727d661f5e8e class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4496
diff changeset
  3157
    buttonLightColor  := buttonLightColor onDevice:graphicsDevice.
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3158
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3159
    buttonHalfShadowColor notNil ifTrue:[
4521
727d661f5e8e class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4496
diff changeset
  3160
        buttonHalfShadowColor := buttonHalfShadowColor onDevice:graphicsDevice
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3161
    ].
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3162
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3163
    buttonHalfLightColor notNil ifTrue:[
4521
727d661f5e8e class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4496
diff changeset
  3164
        buttonHalfLightColor := buttonHalfLightColor onDevice:graphicsDevice
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3165
    ].
2488
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  3166
    rowSelectorForm         := self imageOnMyDevice:rowSelectorForm.
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  3167
    checkToggleActiveImage  := self imageOnMyDevice:checkToggleActiveImage.
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  3168
    checkTogglePassiveImage := self imageOnMyDevice:checkTogglePassiveImage.
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  3169
    checkToggleForm         := self imageOnMyDevice:checkToggleForm.
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  3170
    radioButtonActiveImage  := self imageOnMyDevice:radioButtonActiveImage.
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  3171
    radioButtonPassiveImage := self imageOnMyDevice:radioButtonPassiveImage.
2488
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
  3172
    comboButtonForm         := self imageOnMyDevice:comboButtonForm.
3989
5c6706e4e0d1 preps for highlight-frame color
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
  3173
5c6706e4e0d1 preps for highlight-frame color
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
  3174
    "Modified: / 20-01-2011 / 08:43:51 / cg"
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3175
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3176
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3177
initStyle
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3178
    "setup colors, etc."
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3179
1100
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
  3180
    |button widget|
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3181
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3182
    super initStyle.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3183
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3184
    DefaultForegroundColor isNil ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3185
        self class updateStyleCache
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3186
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3187
    fgColor     := DefaultForegroundColor.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3188
    bgColor     := DefaultBackgroundColor.
4875
e47db739d7d1 #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4794
diff changeset
  3189
    labelFgColor := DefaultLabelForegroundColor.
e47db739d7d1 #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4794
diff changeset
  3190
    labelBgColor := DefaultLabelBackgroundColor.
2151
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  3191
    selectionForegroundColor := DefaultHilightForegroundColor.
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  3192
    selectionBackgroundColor := DefaultHilightBackgroundColor.
3989
5c6706e4e0d1 preps for highlight-frame color
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
  3193
    selectionFrameColor      := DefaultHilightFrameColor.
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3194
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3195
    shadowColor isNil ifTrue:[
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3196
        shadowColor := Color grayPercent:40.
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3197
    ].
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3198
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3199
    lightColor isNil ifTrue:[
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3200
        lightColor := Color grayPercent:75
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3201
    ].
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3202
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3203
    buttonLightColor    := ButtonLightColor  ? lightColor.
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3204
    buttonShadowColor   := ButtonShadowColor ? shadowColor.
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3205
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3206
    (ButtonEdgeStyle == #soft) ifTrue:[
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3207
        buttonHalfShadowColor := ButtonHalfShadowColor.
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3208
        buttonHalfLightColor  := ButtonHalfLightColor.
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3209
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3210
        buttonHalfShadowColor isNil ifTrue:[
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3211
            buttonHalfShadowColor := buttonShadowColor lightened
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3212
        ]
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  3213
    ].
1490
9c418c3aaf49 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
  3214
9c418c3aaf49 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
  3215
    buttonHalfShadowColor isNil ifTrue:[
9c418c3aaf49 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
  3216
        buttonHalfShadowColor := Color gray
9c418c3aaf49 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
  3217
    ].
9c418c3aaf49 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
  3218
3138
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
  3219
    selectionForegroundColorNoFocus isNil ifTrue:[
4653
e760275fb093 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4644
diff changeset
  3220
        selectionForegroundColorNoFocus := DefaultHilightForegroundColorNoFocus.
e760275fb093 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4644
diff changeset
  3221
        selectionForegroundColorNoFocus isNil ifTrue:[
e760275fb093 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4644
diff changeset
  3222
            selectionForegroundColorNoFocus := selectionForegroundColor slightlyLightened.
e760275fb093 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4644
diff changeset
  3223
        ]
3138
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
  3224
    ].
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
  3225
    selectionBackgroundColorNoFocus isNil ifTrue:[
4644
a1734dfe9bfe class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4613
diff changeset
  3226
        selectionBackgroundColorNoFocus := DefaultHilightBackgroundColorNoFocus.
a1734dfe9bfe class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4613
diff changeset
  3227
        selectionBackgroundColorNoFocus isNil ifTrue:[
a1734dfe9bfe class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4613
diff changeset
  3228
            selectionBackgroundColor notNil ifTrue:[
4653
e760275fb093 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4644
diff changeset
  3229
                selectionBackgroundColorNoFocus := selectionBackgroundColor slightlyLightened.
4644
a1734dfe9bfe class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4613
diff changeset
  3230
                "/ selectionBackgroundColorNoFocus := Color brightness:(selectionBackgroundColor "lightened" brightness).   "/ asGray.
a1734dfe9bfe class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4613
diff changeset
  3231
            ].
4101
675d38e2ad1e changed: #initStyle
Claus Gittinger <cg@exept.de>
parents: 4095
diff changeset
  3232
        ].
3989
5c6706e4e0d1 preps for highlight-frame color
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
  3233
    ].
5c6706e4e0d1 preps for highlight-frame color
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
  3234
    selectionFrameColorNoFocus isNil ifTrue:[
4101
675d38e2ad1e changed: #initStyle
Claus Gittinger <cg@exept.de>
parents: 4095
diff changeset
  3235
        selectionFrameColor notNil ifTrue:[
675d38e2ad1e changed: #initStyle
Claus Gittinger <cg@exept.de>
parents: 4095
diff changeset
  3236
            selectionFrameColorNoFocus := selectionFrameColor lightened.  
675d38e2ad1e changed: #initStyle
Claus Gittinger <cg@exept.de>
parents: 4095
diff changeset
  3237
            "/ selectionFrameColorNoFocus := Color brightness:(selectionFrameColor "lightened" brightness).   "/ asGray
675d38e2ad1e changed: #initStyle
Claus Gittinger <cg@exept.de>
parents: 4095
diff changeset
  3238
        ]
3138
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
  3239
    ].
bf718db445b5 highlight selection dependent on has focus
ca
parents: 3130
diff changeset
  3240
2711
6cbf18e03573 category
Claus Gittinger <cg@exept.de>
parents: 2703
diff changeset
  3241
    rowSelectorForm         := self class rowSelectorImage.
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  3242
1100
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
  3243
    checkToggleActiveImage  := CheckToggleActiveImage.
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
  3244
    checkTogglePassiveImage := CheckTogglePassiveImage.
376515452be4 support of all styles; windows and next
ca
parents: 1089
diff changeset
  3245
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  3246
    CheckToggleForm isNil ifTrue:[
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  3247
        widget            := CheckToggle new.
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  3248
        CheckToggleForm   := widget label.
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  3249
        CheckToggleLevel  := widget offLevel.
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  3250
        CheckToggleExtent := widget preferredExtent.
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  3251
    ].
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  3252
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  3253
    checkToggleForm   := CheckToggleForm.
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  3254
    checkToggleLevel  := CheckToggleLevel.
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  3255
    checkToggleExtent := CheckToggleExtent.
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  3256
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  3257
    radioButtonActiveImage  := RadioButtonActiveImage.
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  3258
    radioButtonPassiveImage := RadioButtonPassiveImage.
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  3259
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3260
    ComboButtonForm isNil ifTrue:[
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3261
        widget            := ComboListView new.
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3262
        button            := widget menuButton.
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3263
        ComboButtonForm   := button label.
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3264
        ComboButtonLevel  := button offLevel.
3428
436f115aefe8 added preferredWidth & preferredHeight
Claus Gittinger <cg@exept.de>
parents: 3382
diff changeset
  3265
        ComboButtonExtent := (button preferredWidth) @ (widget preferredHeight).
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3266
    ].
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3267
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3268
    comboButtonForm   := ComboButtonForm.
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3269
    comboButtonLevel  := ComboButtonLevel.
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3270
    comboButtonExtent := ComboButtonExtent.
3989
5c6706e4e0d1 preps for highlight-frame color
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
  3271
4101
675d38e2ad1e changed: #initStyle
Claus Gittinger <cg@exept.de>
parents: 4095
diff changeset
  3272
    "Modified: / 20-01-2012 / 15:48:13 / cg"
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3273
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3274
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3275
initialize
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3276
    "set default attributes"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3277
4521
727d661f5e8e class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4496
diff changeset
  3278
    |fontOnDevice|
727d661f5e8e class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4496
diff changeset
  3279
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3280
    super initialize.
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3281
    self lineWidth:0.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3282
3488
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3283
    separatorSize      := 1.                            "/ separators mode 2D
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3284
    verticalSpacing    := self class verticalSpacing.
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3285
    horizontalSpacing  := self class horizontalSpacing.
1668
085f5ee84f9b tabing internal
ca
parents: 1665
diff changeset
  3286
    tabIntern          := true.
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3287
    useIndex           := true.
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  3288
    viewOrigin         := 0@0.
5204
fccb63f32188 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5195
diff changeset
  3289
    fontOnDevice       := gc deviceFont.
4521
727d661f5e8e class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4496
diff changeset
  3290
    rowFontAscent      := fontOnDevice ascent.
727d661f5e8e class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4496
diff changeset
  3291
    rowHeight          := verticalSpacing + fontOnDevice height + verticalSpacing + separatorSize.
2592
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  3292
    minRowHeight       := rowHeight.
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  3293
    multipleSelectOk   := false.                        "/ multiselect disabled
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  3294
    selectedRowIndex   := 0.                            "/ no selection
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  3295
    self selectedColIndex:0.    
1778
51bbd960baf9 change registeredIcons from IdentityDictionary to Dictionary
ca
parents: 1776
diff changeset
  3296
    registererImages   := Dictionary new.
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  3297
    columnDescriptors  := #().
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  3298
    beDependentOfRows  := false.
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  3299
    colorMap           := Dictionary new.
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  3300
    catchChangeEvents  := false.
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  3301
    selectRowOnDefault := true.
1749
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  3302
    autoScroll         := true.
3130
30ac624dd866 added a hook to allow for autoScrollToColumn to be disabled.
Claus Gittinger <cg@exept.de>
parents: 3091
diff changeset
  3303
    autoScrollToColumn := true.
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3304
    scrollRowWise      := false.
4613
73e2facef522 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4606
diff changeset
  3305
    sortListInPlace    := false.    "/ when false (default for backward compatibility): 
73e2facef522 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4606
diff changeset
  3306
                                    "/ if sorting, create a copy
73e2facef522 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4606
diff changeset
  3307
                                    "/ of the list, which is wrong when useIndex is on,
73e2facef522 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4606
diff changeset
  3308
                                    "/ as the application will get the index in the sorted
73e2facef522 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4606
diff changeset
  3309
                                    "/ list, which is probably different from tha apps list mode.
73e2facef522 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4606
diff changeset
  3310
                                    "/ When true (should be default, but that might break many
73e2facef522 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4606
diff changeset
  3311
                                    "/ users), the passed in list is sorted in place (i.e. possibly
73e2facef522 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4606
diff changeset
  3312
                                    "/ sorting the application's list).
5194
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
  3313
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
  3314
    updateListHolderWhenSorting := false.
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
  3315
                                    "/ when false (default for backward compatibility): 
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
  3316
                                    "/ if sorting, do not write back the sorted list into the listHolder
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
  3317
                                    "/ When true (should be default, but that might break many
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
  3318
                                    "/ users), the sorted list is written back into the listHolder,
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
  3319
                                    "/ but only if sortListInPlace is false.
b28b44a4a21e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5100
diff changeset
  3320
3223
b9d1b2cec92d Bug 623: active help during button motion
ca
parents: 3219
diff changeset
  3321
    "/ need for active help
b9d1b2cec92d Bug 623: active help during button motion
ca
parents: 3219
diff changeset
  3322
    self enableMotionEvents.
b9d1b2cec92d Bug 623: active help during button motion
ca
parents: 3219
diff changeset
  3323
3130
30ac624dd866 added a hook to allow for autoScrollToColumn to be disabled.
Claus Gittinger <cg@exept.de>
parents: 3091
diff changeset
  3324
    "Modified: / 22-10-2006 / 11:02:25 / cg"
705
d9ebfd72d506 set selection if exists after mapping
tz
parents: 667
diff changeset
  3325
!
d9ebfd72d506 set selection if exists after mapping
tz
parents: 667
diff changeset
  3326
2807
0e03635f5ced *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2804
diff changeset
  3327
mapped
0e03635f5ced *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2804
diff changeset
  3328
    "set selection (if any) after mapping"
0e03635f5ced *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2804
diff changeset
  3329
    
0e03635f5ced *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2804
diff changeset
  3330
    |idx|
0e03635f5ced *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2804
diff changeset
  3331
0e03635f5ced *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2804
diff changeset
  3332
    super mapped.
0e03635f5ced *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2804
diff changeset
  3333
    needFitColumns == true ifTrue:[
0e03635f5ced *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2804
diff changeset
  3334
        self fitColumns
0e03635f5ced *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2804
diff changeset
  3335
    ].
0e03635f5ced *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2804
diff changeset
  3336
    (idx := self firstIndexSelected) ~~ 0 ifTrue:[
0e03635f5ced *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2804
diff changeset
  3337
        self scrollToRowAt:idx colAt:0.
0e03635f5ced *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2804
diff changeset
  3338
    ].
0e03635f5ced *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2804
diff changeset
  3339
!
0e03635f5ced *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2804
diff changeset
  3340
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3341
realize
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3342
    "recompute contents and fit columns to view"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3343
    
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3344
    |selection|
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3345
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3346
    self bitGravity:#NorthWest.
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3347
    self recomputeHeightOfContents.
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3348
    selection := 0.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3349
    model notNil ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3350
        (model respondsTo:#selectionIndex) ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3351
            selection := model selectionIndex
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3352
        ] ifFalse:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3353
            model == listHolder ifFalse:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3354
                selection := model value
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3355
            ]
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3356
        ]
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3357
    ].
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3358
    self selectRowIndex:selection.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3359
    super realize.
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3360
    self fitColumns.
2011
128778a6a31d dont scroll to top on mapped
Claus Gittinger <cg@exept.de>
parents: 1971
diff changeset
  3361
!
128778a6a31d dont scroll to top on mapped
Claus Gittinger <cg@exept.de>
parents: 1971
diff changeset
  3362
2157
6cfdf247519a destroy - release
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
  3363
release
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3364
    "remove dependencies"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3365
    
2157
6cfdf247519a destroy - release
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
  3366
    self columnHolder:nil.
4219
5038c1c44e84 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
  3367
5038c1c44e84 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
  3368
    beDependentOfRows ifTrue:[self makeIndependentOfRows].
5038c1c44e84 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
  3369
    listHolder notNil ifTrue:[
5038c1c44e84 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
  3370
        listHolder removeDependent:self.
5038c1c44e84 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4176
diff changeset
  3371
    ].
2157
6cfdf247519a destroy - release
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
  3372
    columnAdaptor isValueModel ifTrue:[
6cfdf247519a destroy - release
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
  3373
        columnAdaptor removeDependent:self
6cfdf247519a destroy - release
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
  3374
    ].
6cfdf247519a destroy - release
Claus Gittinger <cg@exept.de>
parents: 2154
diff changeset
  3375
    super release
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3376
! !
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3377
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3378
!DSVColumnView methodsFor:'obsolete'!
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3379
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3380
has3Dsepartors
3770
e24ada279c5e changed:
Claus Gittinger <cg@exept.de>
parents: 3757
diff changeset
  3381
    <resource: #obsolete>
e24ada279c5e changed:
Claus Gittinger <cg@exept.de>
parents: 3757
diff changeset
  3382
    "shouldn't be used any more"
e24ada279c5e changed:
Claus Gittinger <cg@exept.de>
parents: 3757
diff changeset
  3383
e24ada279c5e changed:
Claus Gittinger <cg@exept.de>
parents: 3757
diff changeset
  3384
    self obsoleteMethodWarning.
e24ada279c5e changed:
Claus Gittinger <cg@exept.de>
parents: 3757
diff changeset
  3385
    ^ self has3Dseparators
e24ada279c5e changed:
Claus Gittinger <cg@exept.de>
parents: 3757
diff changeset
  3386
!
e24ada279c5e changed:
Claus Gittinger <cg@exept.de>
parents: 3757
diff changeset
  3387
e24ada279c5e changed:
Claus Gittinger <cg@exept.de>
parents: 3757
diff changeset
  3388
has3Dsepartors:aBool
e24ada279c5e changed:
Claus Gittinger <cg@exept.de>
parents: 3757
diff changeset
  3389
    <resource: #obsolete>
e24ada279c5e changed:
Claus Gittinger <cg@exept.de>
parents: 3757
diff changeset
  3390
 
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3391
    "shouldn't be used any more"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3392
    
3770
e24ada279c5e changed:
Claus Gittinger <cg@exept.de>
parents: 3757
diff changeset
  3393
    self obsoleteMethodWarning.
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3394
    self has3Dseparators:aBool
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3395
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3396
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3397
!DSVColumnView methodsFor:'private'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3398
1951
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  3399
anyColumnHasBackground
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  3400
    columnDescriptors isNil ifTrue:[^ false].
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  3401
    columnDescriptors do:[:eachCol |
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  3402
        |bg|
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  3403
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  3404
        bg := eachCol backgroundColor.
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  3405
        (bg notNil and:[bg isImageOrForm]) ifTrue:[^ true].
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  3406
        eachCol bgSelector notNil ifTrue:[^ true].
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  3407
    ].
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  3408
    ^ false.
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  3409
!
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  3410
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  3411
anyColumnHasPotentialNonConstantBackground
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  3412
    columnDescriptors isNil ifTrue:[^ false].
2933
ab7be1db710d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
  3413
    ^ columnDescriptors contains:[:someCol | someCol hasPotentialNonConstantBackground].
ab7be1db710d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
  3414
"/    columnDescriptors do:[:eachCol | eachCol hasPotentialNonConstantBackground ifTrue:[^ true]].
ab7be1db710d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
  3415
"/    ^ false.
1951
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  3416
!
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  3417
1111
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  3418
destroyEditView
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3419
    "destroy the edit view; release KeyboardForwarder"
2730
77bab35466a3 *** empty log message ***
ca
parents: 2728
diff changeset
  3420
2695
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  3421
    editValue notNil ifTrue:[
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  3422
        editValue removeDependent:self.
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  3423
        editValue := nil
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  3424
    ].
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  3425
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  3426
    editView notNil ifTrue:[ |winGroup focusView|
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  3427
        self hasFocus ifTrue:[focusView := self].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  3428
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  3429
        editView withAllSubViewsDo:[:aView |
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  3430
            aView hasFocus ifTrue:[focusView := self].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  3431
            aView delegate:nil
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  3432
        ].
1111
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  3433
        editView destroy.
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  3434
        editView := nil.
2730
77bab35466a3 *** empty log message ***
ca
parents: 2728
diff changeset
  3435
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  3436
        winGroup := self windowGroup.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  3437
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  3438
        winGroup notNil ifTrue:[
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  3439
            winGroup focusView:focusView.
2730
77bab35466a3 *** empty log message ***
ca
parents: 2728
diff changeset
  3440
        ]
1111
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  3441
    ].
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  3442
!
4fd0430173fa support #Tab
ca
parents: 1109
diff changeset
  3443
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3444
detectViewAt:aPoint in:aView 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3445
    "returns the view at a point"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3446
    
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3447
    aView isNil ifTrue:[
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3448
        ^ nil
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3449
    ].
2019
0d2757149700 extracted common code to detectViewAt:aPoint.
Claus Gittinger <cg@exept.de>
parents: 2011
diff changeset
  3450
    ^ aView detectViewAt:aPoint.
637
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  3451
!
e56ec99923ae VW compatible
ca
parents: 622
diff changeset
  3452
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3453
fitColumns
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3454
    "fit columns to view; "
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3455
4095
1a4c11fc0865 added: #invalidateDeviceRectangle:repairNow:
Claus Gittinger <cg@exept.de>
parents: 4073
diff changeset
  3456
    |selectedColumn columnsWithRelativeWidth 
4415
474bed6d8e60 class: DSVColumnView
ca
parents: 4359
diff changeset
  3457
     overallMinWidth restWidth anyChange oldOrgX newOrgX oldWidth|
4095
1a4c11fc0865 added: #invalidateDeviceRectangle:repairNow:
Claus Gittinger <cg@exept.de>
parents: 4073
diff changeset
  3458
1a4c11fc0865 added: #invalidateDeviceRectangle:repairNow:
Claus Gittinger <cg@exept.de>
parents: 4073
diff changeset
  3459
    realized ifFalse:[
1a4c11fc0865 added: #invalidateDeviceRectangle:repairNow:
Claus Gittinger <cg@exept.de>
parents: 4073
diff changeset
  3460
        needFitColumns := true.
1a4c11fc0865 added: #invalidateDeviceRectangle:repairNow:
Claus Gittinger <cg@exept.de>
parents: 4073
diff changeset
  3461
        ^ self
1a4c11fc0865 added: #invalidateDeviceRectangle:repairNow:
Claus Gittinger <cg@exept.de>
parents: 4073
diff changeset
  3462
    ].
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3463
3488
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3464
    cachedPreferredExtent isNil ifTrue:[
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3465
        self preferredExtent.
2956
c4319600989e *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 2933
diff changeset
  3466
    ] ifFalse:[
3488
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3467
        oldWidth := cachedPreferredExtent x.
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3468
    ].
1484
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
  3469
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
  3470
    columnDescriptors isEmpty ifTrue:[
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
  3471
        ^ self
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
  3472
    ].
4095
1a4c11fc0865 added: #invalidateDeviceRectangle:repairNow:
Claus Gittinger <cg@exept.de>
parents: 4073
diff changeset
  3473
1a4c11fc0865 added: #invalidateDeviceRectangle:repairNow:
Claus Gittinger <cg@exept.de>
parents: 4073
diff changeset
  3474
    overallMinWidth := 0.
1a4c11fc0865 added: #invalidateDeviceRectangle:repairNow:
Claus Gittinger <cg@exept.de>
parents: 4073
diff changeset
  3475
    anyChange := false.
1a4c11fc0865 added: #invalidateDeviceRectangle:repairNow:
Claus Gittinger <cg@exept.de>
parents: 4073
diff changeset
  3476
    columnsWithRelativeWidth := OrderedCollection new.
1484
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
  3477
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
  3478
    columnDescriptors do:[:aCol|
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
  3479
        aCol canResize ifTrue:[
4095
1a4c11fc0865 added: #invalidateDeviceRectangle:repairNow:
Claus Gittinger <cg@exept.de>
parents: 4073
diff changeset
  3480
            anyChange := true.
1484
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
  3481
            aCol invalidate.
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
  3482
        ].
4415
474bed6d8e60 class: DSVColumnView
ca
parents: 4359
diff changeset
  3483
        aCol hasRelativeWidth ifTrue:[columnsWithRelativeWidth add:aCol].
4095
1a4c11fc0865 added: #invalidateDeviceRectangle:repairNow:
Claus Gittinger <cg@exept.de>
parents: 4073
diff changeset
  3484
        overallMinWidth := overallMinWidth + aCol minWidth.
1a4c11fc0865 added: #invalidateDeviceRectangle:repairNow:
Claus Gittinger <cg@exept.de>
parents: 4073
diff changeset
  3485
    ].
4415
474bed6d8e60 class: DSVColumnView
ca
parents: 4359
diff changeset
  3486
4095
1a4c11fc0865 added: #invalidateDeviceRectangle:repairNow:
Claus Gittinger <cg@exept.de>
parents: 4073
diff changeset
  3487
    cachedPreferredExtent := width @(self preferredHeight).
4425
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3488
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3489
    columnsWithRelativeWidth notEmpty ifTrue:[
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3490
        restWidth := self innerWidth - overallMinWidth.
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3491
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3492
        restWidth > 0 ifTrue:[
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3493
            |sumOfAnnouncedRelativeWidths sumWeach|
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3494
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3495
            "/ distribute restwidth among remaining columns according to
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3496
            "/ their announced relative width's
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3497
            sumOfAnnouncedRelativeWidths := columnsWithRelativeWidth sum:[:each | each description width].
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3498
            sumWeach := 0.
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3499
            columnsWithRelativeWidth do:[:each |
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3500
                |eachRel wEach|
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3501
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3502
                eachRel := each description width / sumOfAnnouncedRelativeWidths.
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3503
                each == columnsWithRelativeWidth last ifTrue:[
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3504
                    wEach := restWidth - sumWeach.
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3505
                ] ifFalse:[
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3506
                    wEach := (eachRel * restWidth) truncated.
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3507
                    sumWeach := sumWeach + wEach.
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3508
                ].
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3509
                each setWidth:wEach.
4415
474bed6d8e60 class: DSVColumnView
ca
parents: 4359
diff changeset
  3510
            ].
4425
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3511
        ]
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3512
    ] ifFalse:[
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3513
        anyChange ifTrue:[
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3514
            | resizableColumns numberOfResizeable additionalOffsetX |
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3515
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3516
            overallMinWidth  := 0.
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3517
            resizableColumns := OrderedCollection new.
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3518
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3519
            columnDescriptors do:[: eachColumn |
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3520
                eachColumn canResize ifTrue:[ resizableColumns add: eachColumn ].
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3521
                eachColumn width: nil. "force a recomputation of width"
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3522
                overallMinWidth := overallMinWidth + eachColumn width.
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3523
            ].
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3524
            numberOfResizeable := resizableColumns size.
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3525
            numberOfResizeable > 0 ifTrue:[
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3526
                restWidth := self innerWidth - overallMinWidth.
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3527
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3528
                restWidth > numberOfResizeable ifTrue:[
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3529
                    additionalOffsetX := restWidth // numberOfResizeable.
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3530
                    resizableColumns do:[:aCol| aCol growWidth:additionalOffsetX ].
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3531
                    restWidth := restWidth - (additionalOffsetX * numberOfResizeable).
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3532
                ].
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3533
                restWidth > 0 ifTrue:[ resizableColumns last growWidth:restWidth ].
c013e9757f1a class: DSVColumnView
ab
parents: 4415
diff changeset
  3534
            ].
1484
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
  3535
        ].
52b16597ce48 support relative width
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
  3536
    ].
1492
eefe55529016 support tabulators
Claus Gittinger <cg@exept.de>
parents: 1490
diff changeset
  3537
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  3538
    shown ifTrue:[
4116
d79570ee3773 changed:
Stefan Vogel <sv@exept.de>
parents: 4101
diff changeset
  3539
        "have to invalidate unconditionally even if nothing has been changed here:
d79570ee3773 changed:
Stefan Vogel <sv@exept.de>
parents: 4101
diff changeset
  3540
         #fitColumns is called from #changeWidthOfColumn:deltaX:
d79570ee3773 changed:
Stefan Vogel <sv@exept.de>
parents: 4101
diff changeset
  3541
         after a manual resize"
d79570ee3773 changed:
Stefan Vogel <sv@exept.de>
parents: 4101
diff changeset
  3542
d79570ee3773 changed:
Stefan Vogel <sv@exept.de>
parents: 4101
diff changeset
  3543
        self      invalidate.
d79570ee3773 changed:
Stefan Vogel <sv@exept.de>
parents: 4101
diff changeset
  3544
        labelView invalidate.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3545
1498
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  3546
        (oldOrgX := viewOrigin x) ~~ 0 ifTrue:[
4095
1a4c11fc0865 added: #invalidateDeviceRectangle:repairNow:
Claus Gittinger <cg@exept.de>
parents: 4073
diff changeset
  3547
            |prefWidth|
1a4c11fc0865 added: #invalidateDeviceRectangle:repairNow:
Claus Gittinger <cg@exept.de>
parents: 4073
diff changeset
  3548
1498
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  3549
            "/ UPDATE VIEW-ORIGIN X
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  3550
4095
1a4c11fc0865 added: #invalidateDeviceRectangle:repairNow:
Claus Gittinger <cg@exept.de>
parents: 4073
diff changeset
  3551
            prefWidth   := self preferredWidth.
1a4c11fc0865 added: #invalidateDeviceRectangle:repairNow:
Claus Gittinger <cg@exept.de>
parents: 4073
diff changeset
  3552
            newOrgX := (prefWidth - self innerWidth) max:0.
1498
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  3553
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  3554
            newOrgX < oldOrgX ifTrue:[
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  3555
                self originWillChange.
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  3556
                viewOrigin := newOrgX @ (viewOrigin y).
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  3557
                self originChanged:((newOrgX - oldOrgX) @ 0).
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  3558
            ]
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  3559
        ].
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  3560
1930
31274c3264d6 do not scroll to selection when a column-size is changed
Claus Gittinger <cg@exept.de>
parents: 1926
diff changeset
  3561
        "/ 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
  3562
1930
31274c3264d6 do not scroll to selection when a column-size is changed
Claus Gittinger <cg@exept.de>
parents: 1926
diff changeset
  3563
"/        self hasSelection ifTrue:[
31274c3264d6 do not scroll to selection when a column-size is changed
Claus Gittinger <cg@exept.de>
parents: 1926
diff changeset
  3564
"/            editView notNil ifTrue:[
31274c3264d6 do not scroll to selection when a column-size is changed
Claus Gittinger <cg@exept.de>
parents: 1926
diff changeset
  3565
"/                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
  3566
"/            ].
31274c3264d6 do not scroll to selection when a column-size is changed
Claus Gittinger <cg@exept.de>
parents: 1926
diff changeset
  3567
"/            self scrollToSelection.
31274c3264d6 do not scroll to selection when a column-size is changed
Claus Gittinger <cg@exept.de>
parents: 1926
diff changeset
  3568
"/        ].
2319
b75af47412ff bug fix; if columns extent changed, update extent of editView
ca
parents: 2318
diff changeset
  3569
4095
1a4c11fc0865 added: #invalidateDeviceRectangle:repairNow:
Claus Gittinger <cg@exept.de>
parents: 4073
diff changeset
  3570
        "/ ca: but resize the editView (if there is any currently visible)
2319
b75af47412ff bug fix; if columns extent changed, update extent of editView
ca
parents: 2318
diff changeset
  3571
b75af47412ff bug fix; if columns extent changed, update extent of editView
ca
parents: 2318
diff changeset
  3572
        editView notNil ifTrue:[
b75af47412ff bug fix; if columns extent changed, update extent of editView
ca
parents: 2318
diff changeset
  3573
            selectedColumn := self selectedColumn.
b75af47412ff bug fix; if columns extent changed, update extent of editView
ca
parents: 2318
diff changeset
  3574
            selectedColumn notNil ifTrue:[
b75af47412ff bug fix; if columns extent changed, update extent of editView
ca
parents: 2318
diff changeset
  3575
                editView width:(selectedColumn width - (2 * separatorSize)).
b75af47412ff bug fix; if columns extent changed, update extent of editView
ca
parents: 2318
diff changeset
  3576
            ]
b75af47412ff bug fix; if columns extent changed, update extent of editView
ca
parents: 2318
diff changeset
  3577
        ].
3428
436f115aefe8 added preferredWidth & preferredHeight
Claus Gittinger <cg@exept.de>
parents: 3382
diff changeset
  3578
        oldWidth ~= self preferredWidth ifTrue:[
2956
c4319600989e *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 2933
diff changeset
  3579
            self contentsChanged.
c4319600989e *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 2933
diff changeset
  3580
        ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3581
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3582
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3583
2816
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  3584
hasSelectables
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  3585
    columnDescriptors do:[:aCol|
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  3586
        (aCol rendererType == #rowSelector) ifFalse:[
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  3587
            (aCol description canSelect) ifTrue:[^ true].
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  3588
        ]
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  3589
    ].
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  3590
    ^ false.
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  3591
!
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  3592
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3593
maxViewOriginY
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3594
    "returns the maximum possible y of the view origin"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3595
    
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3596
    |y|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3597
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3598
    y := self heightOfContents - self innerHeight.
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3599
    ^ y max:0
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3600
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3601
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3602
updateEditViewOrigin
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3603
    "update origin of the editView"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3604
    
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3605
    |x y|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3606
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3607
    editView notNil ifTrue:[
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3608
        y := self yVisibleOfRowNr:(self firstIndexSelected).
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  3609
        x := self xVisibleOfColNr:self selectedColIndex.
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  3610
        editView origin:(x @ y + separatorSize).
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3611
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3612
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3613
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3614
xVisibleOfColNr:aColNr 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3615
    "returns visible x assigned to a column number"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3616
    
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3617
    |x 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3618
     end "{ Class:SmallInteger }"|
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3619
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3620
    x := margin - viewOrigin x.
1498
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  3621
    aColNr > 1 ifTrue:[
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3622
        end := aColNr - 1.
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3623
        columnDescriptors 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3624
            from:1
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3625
            to:end
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3626
            do:[:aCol | x := x + aCol width ]
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3627
    ].
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3628
    ^ x
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3629
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3630
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3631
xVisibleToColNr:x 
3217
e74188fce7c2 xVisibleToSelectionIndex:x different return value confusion
Claus Gittinger <cg@exept.de>
parents: 3215
diff changeset
  3632
    "returns the column number for a physical x position.
5079
1ef6c9d3cdf3 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5057
diff changeset
  3633
     Returns nil if x is beyond the last column."
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3634
    
3215
edb9fb9e4931 activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3172
diff changeset
  3635
    |x0|
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3636
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3637
    x0 := x + viewOrigin x - margin.
3215
edb9fb9e4931 activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3172
diff changeset
  3638
    columnDescriptors keysAndValuesDo:[:index :aCol | 
1951
670b575a31a4 if any col has potential non-constant background,
ps
parents: 1949
diff changeset
  3639
        x0 := x0 - aCol width.
3215
edb9fb9e4931 activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3172
diff changeset
  3640
        x0 <= 0 ifTrue:[ ^ index ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3641
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3642
    ^ nil.
3215
edb9fb9e4931 activeHelpText
Claus Gittinger <cg@exept.de>
parents: 3172
diff changeset
  3643
3217
e74188fce7c2 xVisibleToSelectionIndex:x different return value confusion
Claus Gittinger <cg@exept.de>
parents: 3215
diff changeset
  3644
    "Modified: / 26-03-2007 / 15:22:01 / cg"
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3645
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3646
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3647
yVisibleOfRowNr:aRowNr 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3648
    "returns visible y assigned to the row number"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3649
    
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3650
    ^ (aRowNr - 1) * rowHeight + margin - viewOrigin y
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3651
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3652
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3653
yVisibleToRowNr:y 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3654
    "returns the row number assigned to a physical y or nil"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3655
    
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3656
    |rowNr|
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3657
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3658
    rowNr := (y + viewOrigin y - margin) // rowHeight + 1.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3659
    (rowNr between:1 and:(list size)) ifTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3660
        ^ rowNr
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3661
    ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  3662
    ^ nil
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3663
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3664
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3665
!DSVColumnView methodsFor:'queries'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3666
2728
a53382733524 +scrollToLine (listView compat.)
Claus Gittinger <cg@exept.de>
parents: 2722
diff changeset
  3667
firstLineShown
a53382733524 +scrollToLine (listView compat.)
Claus Gittinger <cg@exept.de>
parents: 2722
diff changeset
  3668
    "for protocol-compat. with listviews"
a53382733524 +scrollToLine (listView compat.)
Claus Gittinger <cg@exept.de>
parents: 2722
diff changeset
  3669
a53382733524 +scrollToLine (listView compat.)
Claus Gittinger <cg@exept.de>
parents: 2722
diff changeset
  3670
    ^ self indexOfFirstRowShown
a53382733524 +scrollToLine (listView compat.)
Claus Gittinger <cg@exept.de>
parents: 2722
diff changeset
  3671
!
a53382733524 +scrollToLine (listView compat.)
Claus Gittinger <cg@exept.de>
parents: 2722
diff changeset
  3672
1149
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  3673
hasOpenEditor
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  3674
    ^ editView notNil
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  3675
!
c212f122c8b3 allow collections of string and icons for a cell label
Claus Gittinger <cg@exept.de>
parents: 1136
diff changeset
  3676
563
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  3677
indexOfFirstRowShown
2797
9f171595edcc indexOfLastVisibleItem
Claus Gittinger <cg@exept.de>
parents: 2792
diff changeset
  3678
    "returns the index of the first shown row"
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3679
    
563
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  3680
    |idx|
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  3681
1498
3b4dc3326705 checkin from browser
tm
parents: 1497
diff changeset
  3682
    idx := (viewOrigin y // rowHeight) + 1.
2797
9f171595edcc indexOfLastVisibleItem
Claus Gittinger <cg@exept.de>
parents: 2792
diff changeset
  3683
    ^ (idx max:1)
9f171595edcc indexOfLastVisibleItem
Claus Gittinger <cg@exept.de>
parents: 2792
diff changeset
  3684
!
9f171595edcc indexOfLastVisibleItem
Claus Gittinger <cg@exept.de>
parents: 2792
diff changeset
  3685
9f171595edcc indexOfLastVisibleItem
Claus Gittinger <cg@exept.de>
parents: 2792
diff changeset
  3686
indexOfLastRowShown
9f171595edcc indexOfLastVisibleItem
Claus Gittinger <cg@exept.de>
parents: 2792
diff changeset
  3687
    "returns the index of the last shown row"
9f171595edcc indexOfLastVisibleItem
Claus Gittinger <cg@exept.de>
parents: 2792
diff changeset
  3688
    
9f171595edcc indexOfLastVisibleItem
Claus Gittinger <cg@exept.de>
parents: 2792
diff changeset
  3689
    |idx|
9f171595edcc indexOfLastVisibleItem
Claus Gittinger <cg@exept.de>
parents: 2792
diff changeset
  3690
9f171595edcc indexOfLastVisibleItem
Claus Gittinger <cg@exept.de>
parents: 2792
diff changeset
  3691
    idx := (viewOrigin y + height - 1 // rowHeight) + 1.
9f171595edcc indexOfLastVisibleItem
Claus Gittinger <cg@exept.de>
parents: 2792
diff changeset
  3692
    ^ (idx min:list size)
563
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  3693
!
826871ce82c9 bug fix:
ca
parents: 561
diff changeset
  3694
1805
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
  3695
isEnabled
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
  3696
    ^ enableChannel value ~~ false
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
  3697
!
66792febb315 add enableChannel
tm
parents: 1778
diff changeset
  3698
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3699
isRowSelectable:aRowNumber 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3700
    "returne true if a row number is selectable"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3701
    
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3702
    (aRowNumber notNil and:[ aRowNumber ~~ 0 ]) ifTrue:[
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3703
        selectConditionBlock isNil ifTrue:[
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3704
            ^ true
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3705
        ].
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  3706
        ^ (selectConditionBlock value:aRowNumber)
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  3707
    ].
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  3708
    ^ false
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  3709
!
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  3710
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3711
numberOfColumns
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3712
    "returns number of columns"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3713
    
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3714
    ^ columnDescriptors size
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3715
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3716
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3717
numberOfRows
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3718
    "returns number of raws"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3719
    
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3720
    ^ list size
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3721
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3722
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3723
rowHeight
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3724
    "get the height of the highest row in pixels"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3725
    
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3726
    ^ rowHeight
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3727
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3728
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3729
separatorSize
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3730
    "returns vertical/horizontal size of a separator dependent on the
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3731
     3D effect."
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3732
    
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  3733
    ^ separatorSize
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3734
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3735
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3736
size
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3737
    "returns number of raws"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3738
    
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3739
    ^ list size
4486
3407ac48b630 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4459
diff changeset
  3740
!
3407ac48b630 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4459
diff changeset
  3741
3407ac48b630 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4459
diff changeset
  3742
yVisibleToLineNr:yVisible
3407ac48b630 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4459
diff changeset
  3743
    ^ self yVisibleToRowNr:yVisible.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3744
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3745
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3746
!DSVColumnView methodsFor:'recomputation'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3747
647
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  3748
hasPreferredExtent
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3749
    "returns true if preferred extent is accumulated"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3750
    
3488
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3751
    ^ cachedPreferredExtent notNil
647
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  3752
!
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  3753
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3754
preferredExtent
3488
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3755
    "return my preferred extent"
4415
474bed6d8e60 class: DSVColumnView
ca
parents: 4359
diff changeset
  3756
3488
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3757
    |numRows prefWidth prefHeight|
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3758
3566
44235ce5af57 changed #preferredExtent - use explicitExtent instvar
Stefan Vogel <sv@exept.de>
parents: 3536
diff changeset
  3759
    "/ If I have an explicit preferredExtent..
44235ce5af57 changed #preferredExtent - use explicitExtent instvar
Stefan Vogel <sv@exept.de>
parents: 3536
diff changeset
  3760
    explicitExtent notNil ifTrue:[
44235ce5af57 changed #preferredExtent - use explicitExtent instvar
Stefan Vogel <sv@exept.de>
parents: 3536
diff changeset
  3761
        ^ explicitExtent
44235ce5af57 changed #preferredExtent - use explicitExtent instvar
Stefan Vogel <sv@exept.de>
parents: 3536
diff changeset
  3762
    ].
44235ce5af57 changed #preferredExtent - use explicitExtent instvar
Stefan Vogel <sv@exept.de>
parents: 3536
diff changeset
  3763
44235ce5af57 changed #preferredExtent - use explicitExtent instvar
Stefan Vogel <sv@exept.de>
parents: 3536
diff changeset
  3764
    "/ If I have a cached preferredExtent value..
5310
8b7aff55b666 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5308
diff changeset
  3765
    "/ cg: you don't need two cached variables - do you ?
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3766
    preferredExtent notNil ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3767
        ^ preferredExtent
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3768
    ].
3488
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3769
    cachedPreferredExtent notNil ifTrue:[
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3770
        ^ cachedPreferredExtent
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3771
    ].
4961
3aa86bd7a0ce #BUGFIX
matilk
parents: 4875
diff changeset
  3772
3488
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3773
    "/ cg: ????? why 3
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3774
    prefWidth := 3.
4961
3aa86bd7a0ce #BUGFIX
matilk
parents: 4875
diff changeset
  3775
    prefWidth := (columnDescriptors size - 1) max:0.  "/ for the separators
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3776
    columnDescriptors do:[:aCol | 
2592
ab64fbe4fb1e resize #rowHeight if a display label does not match the computed rowHeight
ca
parents: 2580
diff changeset
  3777
        minRowHeight := (aCol heightOfHighestRow) max:minRowHeight.
4415
474bed6d8e60 class: DSVColumnView
ca
parents: 4359
diff changeset
  3778
        prefWidth := prefWidth + (aCol minWidth max:5).
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3779
    ].
3488
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3780
"/    rowHeight := (minRowHeight + separatorSize + verticalSpacing 
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3781
"/                + verticalSpacing + 1) 
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3782
"/                // 2 * 2.
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3783
    numRows := list size.
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3784
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3785
    rowHeight := (verticalSpacing + minRowHeight + verticalSpacing + separatorSize). 
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3786
    "/ no need for a separator after the last row.
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3787
    prefHeight := (numRows * rowHeight) - separatorSize.
3676
ba60c90f1cc3 fixed preferredExtent (dont add in the title-height)
Claus Gittinger <cg@exept.de>
parents: 3672
diff changeset
  3788
    prefHeight := "(self preferredLabelViewHeight) +" separatorSize + prefHeight + separatorSize.
3488
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3789
3494
da2c27c005e0 oops - preferredExtent
Claus Gittinger <cg@exept.de>
parents: 3488
diff changeset
  3790
    cachedPreferredExtent := prefWidth @ prefHeight.
3488
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3791
    ^ cachedPreferredExtent
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3792
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3793
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3794
preferredExtentChanged
3519
9102be1f145c fix typo in comment
Stefan Vogel <sv@exept.de>
parents: 3518
diff changeset
  3795
    "called if the preferred extent changed"
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3796
    
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3797
    |x "{ Class:SmallInteger }"
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3798
     y "{ Class:SmallInteger }"|
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3799
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3800
    y := viewOrigin y.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3801
    x := viewOrigin x.
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3802
    (y ~~ 0 or:[ x ~~ 0 ]) ifTrue:[
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3803
        self originWillChange.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3804
        viewOrigin := 0 @ 0.
3488
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3805
        cachedPreferredExtent := nil.
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3806
        self originChanged:(x negated @ y negated).
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3807
    ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3808
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3809
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3810
recomputeHeightOfContents
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3811
    "recompute height of contents( scrolling )"
3488
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3812
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3813
    cachedPreferredExtent := nil.
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3814
"/    cachedPreferredExtent notNil ifTrue:[
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3815
"/        cachedPreferredExtent y:(rowHeight * list size)
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3816
"/    ] ifFalse:[
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3817
"/        self preferredExtent
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3818
"/    ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3819
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3820
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3821
!DSVColumnView methodsFor:'scroller interface'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3822
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3823
innerHeight
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3824
    "returns the inner height of the contents shown"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3825
    
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3826
    ^ height - margin - margin
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3827
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3828
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3829
verticalScrollStep
3500
d2adfa92fa6d comment
Claus Gittinger <cg@exept.de>
parents: 3494
diff changeset
  3830
    "return the amount to scroll when stepping up/down (also used for mouseWheel)."
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3831
    
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3832
    ^ rowHeight
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3833
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3834
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3835
viewOrigin
5252
06aa7602b274 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5214
diff changeset
  3836
    "return the viewOrigin; 
06aa7602b274 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5214
diff changeset
  3837
     that's the coordinate of the contents which is shown topLeft in the view."
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3838
    
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3839
    ^ viewOrigin
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3840
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3841
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3842
widthOfContents
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3843
    "return the width of the contents in pixels"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3844
    
3488
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3845
    cachedPreferredExtent isNil ifTrue:[
647
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  3846
        self preferredExtent
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  3847
    ].
3488
d30da03147fe preferredExtent changes & fixes (ubs)
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  3848
    ^ cachedPreferredExtent x
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3849
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3850
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3851
xOriginOfContents
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3852
    "return the horizontal origin of the contents in pixels"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3853
    
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3854
    ^ viewOrigin x
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3855
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3856
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3857
yOriginOfContents
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3858
    "return the vertical origin of the contents in pixels"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3859
    
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3860
    ^ viewOrigin y
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3861
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3862
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3863
!DSVColumnView methodsFor:'scrolling'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3864
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3865
scrollTo:anOrigin redraw:doRedraw
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3866
    "change origin to have newOrigin be visible at the top-left."
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3867
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3868
    |newOrg dltOrg wg
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3869
     h       "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3870
     w       "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3871
     x       "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3872
     x0      "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3873
     x1      "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3874
     y       "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3875
     y0      "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3876
     y1      "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3877
     dX      "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3878
     dY      "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3879
     innerHG "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3880
     innerWT "{ Class:SmallInteger }"
2146
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3881
     lMargin
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3882
    |
2146
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3883
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3884
    shown ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3885
        ^ self
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3886
    ].
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  3887
1448
b389b8c76479 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1416
diff changeset
  3888
    (wg := self windowGroup) notNil ifTrue:[
b389b8c76479 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1416
diff changeset
  3889
        wg processRealExposeEventsFor:self.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3890
    ].
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  3891
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3892
    innerWT := self innerWidth.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3893
    innerHG := self innerHeight.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3894
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3895
    h := viewOrigin y.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3896
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3897
    (y := anOrigin y) > h ifTrue:[              "/ end of contents
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3898
        y > (dY := self maxViewOriginY) ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3899
            y := dY max:h
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3900
        ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3901
    ] ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3902
        y := y max:0.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3903
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3904
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3905
    (x := anOrigin x) > 0 ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3906
        x := x min:(self widthOfContents - innerWT).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3907
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3908
    x      := x max:0.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3909
    newOrg := (x @ y).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3910
    dltOrg := newOrg - viewOrigin.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3911
    dX     := dltOrg x.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3912
    dY     := dltOrg y.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3913
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3914
    (dX == 0 and:[dY == 0]) ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3915
        ^ self
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3916
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3917
    self originWillChange.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3918
    viewOrigin := newOrg.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3919
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3920
    doRedraw ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3921
        ^ self originChanged:dltOrg
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3922
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3923
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3924
    dY ~~ 0 ifTrue:[                            "/ SCROLL VERTICAL
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3925
        dY := dY abs.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3926
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3927
        (dX ~~ 0 or:[innerHG - dY < 20]) ifTrue:[
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3928
            self invalidate.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3929
        ] ifFalse:[                             "/ COPY VERTICAL
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3930
            y0 := y1 := margin + dY.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3931
            h  := innerHG - dY.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3932
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3933
            dltOrg y < 0 ifTrue:[y0 := margin. y := y0]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3934
                        ifFalse:[y1 := margin. y := y1 + h].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3935
1460
2fe0ac4bc4d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1448
diff changeset
  3936
            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
  3937
            self invalidateX:margin y:y width:innerWT height:(innerHG - h).
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3938
        ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3939
    ] ifFalse:[                                 "/ SCROLL HORIZONTAL
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3940
        dX := dX abs.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3941
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3942
        innerWT - dX < 20 ifTrue:[
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3943
            labelView invalidate.
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  3944
            self invalidate.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3945
        ] ifFalse:[                             "/ COPY HORIZONTAL
643
bfd44867347f adding: bug fix
ca
parents: 642
diff changeset
  3946
            x0 := x1 := dX + margin.
2146
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3947
            w  := width - dX.
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3948
            lMargin := labelView margin.
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3949
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3950
            dltOrg x < 0 ifTrue:[
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3951
                " ->"
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3952
                x0 := x := margin. 
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3953
                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
  3954
                self invalidateX:margin y:margin width:dX height:innerHG.
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3955
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3956
                labelView notNil ifTrue:[
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3957
                    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
  3958
                    labelView invalidateX:lMargin y:lMargin width:dX height:labelView innerHeight.
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3959
                ].
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3960
            ] ifFalse:[
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3961
                x1 := margin. x := w.
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3962
                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
  3963
                self invalidateX:width-margin-dX y:margin width:dX height:innerHG.
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3964
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3965
                labelView notNil ifTrue:[
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3966
                    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
  3967
                    labelView invalidateX:labelView width-lMargin-dX y:lMargin width:dX height:labelView innerHeight.
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3968
                ].
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  3969
            ].
2146
4ae1ec9f5307 level fixes;
penk
parents: 2125
diff changeset
  3970
            labelView repairDamage.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3971
        ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3972
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3973
    self originChanged:dltOrg.
1123
ea32a2e3d44d care for sensor becoming nil while handling exposeEvents
Claus Gittinger <cg@exept.de>
parents: 1115
diff changeset
  3974
2458
0411397ef0a2 readraw after scroll: process expose events.
Claus Gittinger <cg@exept.de>
parents: 2445
diff changeset
  3975
    wg notNil ifTrue:[
0411397ef0a2 readraw after scroll: process expose events.
Claus Gittinger <cg@exept.de>
parents: 2445
diff changeset
  3976
        wg processRealExposeEventsFor:self.
0411397ef0a2 readraw after scroll: process expose events.
Claus Gittinger <cg@exept.de>
parents: 2445
diff changeset
  3977
    ].
0411397ef0a2 readraw after scroll: process expose events.
Claus Gittinger <cg@exept.de>
parents: 2445
diff changeset
  3978
1123
ea32a2e3d44d care for sensor becoming nil while handling exposeEvents
Claus Gittinger <cg@exept.de>
parents: 1115
diff changeset
  3979
    "Modified: / 7.9.1998 / 16:39:49 / cg"
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3980
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3981
2728
a53382733524 +scrollToLine (listView compat.)
Claus Gittinger <cg@exept.de>
parents: 2722
diff changeset
  3982
scrollToLine:aLineNr
a53382733524 +scrollToLine (listView compat.)
Claus Gittinger <cg@exept.de>
parents: 2722
diff changeset
  3983
    "for compat. with listViews"
a53382733524 +scrollToLine (listView compat.)
Claus Gittinger <cg@exept.de>
parents: 2722
diff changeset
  3984
a53382733524 +scrollToLine (listView compat.)
Claus Gittinger <cg@exept.de>
parents: 2722
diff changeset
  3985
    self scrollToRowAt:aLineNr colAt:1.
a53382733524 +scrollToLine (listView compat.)
Claus Gittinger <cg@exept.de>
parents: 2722
diff changeset
  3986
!
a53382733524 +scrollToLine (listView compat.)
Claus Gittinger <cg@exept.de>
parents: 2722
diff changeset
  3987
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  3988
scrollToRowAt:aRowNr colAt:aColNr
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3989
    "make row at a row number in column at a column number visible"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  3990
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3991
    |x  "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3992
     y  "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3993
     l  "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3994
     dY "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3995
     dX "{ Class:SmallInteger }"
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3996
    |
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3997
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3998
    (    (aRowNr between:1 and:(list size))
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  3999
     and:[aColNr between:0 and:(columnDescriptors size)]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4000
    ) ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4001
        ^ self
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4002
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4003
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4004
    dY := dX := 0.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4005
    y  := self yVisibleOfRowNr:aRowNr.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4006
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4007
    y < margin ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4008
        dY := margin - y.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4009
    ] ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4010
        y := y + rowHeight.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4011
        l := height - margin.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4012
        y > l ifTrue:[dY := l - y]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4013
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4014
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4015
    aColNr == 0 ifTrue:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4016
        dY == 0 ifTrue:[^ self].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4017
        dX := 0.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4018
    ] ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4019
        x  := self xVisibleOfColNr:aColNr.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4020
1163
f46f69609c53 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1149
diff changeset
  4021
        x <= margin ifTrue:[
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4022
            dX := margin - x
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4023
        ] ifFalse:[
1497
d9b55a308c9e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1492
diff changeset
  4024
            x := x + (columnDescriptors at:aColNr) width.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4025
            l := width - margin.
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4026
            x > l ifTrue:[dX := l - x]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4027
        ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4028
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4029
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4030
    (dX == 0 and:[dY == 0]) ifFalse:[
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4031
        self scrollTo:(viewOrigin - (dX @ dY)).
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4032
    ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4033
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4034
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4035
scrollToSelection
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4036
    "make selection visible"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4037
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4038
    |rowNr|
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4039
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4040
    (rowNr := self firstIndexSelected) ~~ 0 ifTrue:[
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4041
        self scrollToRowAt:rowNr colAt:self selectedColIndex
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4042
    ]
1506
4935ddbc8f6e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1498
diff changeset
  4043
!
4935ddbc8f6e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1498
diff changeset
  4044
4935ddbc8f6e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1498
diff changeset
  4045
scrollVerticalTo:aPixelOffset
4935ddbc8f6e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1498
diff changeset
  4046
    "change origin to make aPixelOffset be the top line"
4935ddbc8f6e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1498
diff changeset
  4047
4935ddbc8f6e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1498
diff changeset
  4048
    |orgX orgY|
4935ddbc8f6e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1498
diff changeset
  4049
4935ddbc8f6e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1498
diff changeset
  4050
    orgX := viewOrigin x.
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4051
    scrollRowWise ifTrue:[
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4052
        orgY := (aPixelOffset + rowHeight - 1) // rowHeight * rowHeight.
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4053
    ] ifFalse:[
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4054
        orgY := aPixelOffset.
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4055
    ].
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4056
    ^ self scrollTo:(orgX @ orgY).
1749
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  4057
!
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  4058
2670
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  4059
startAutoScroll:aSelectorOrBlock distance:aDistance
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  4060
    "setup for auto-scroll (when button-press-moving below/above view);
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4061
     - timeDelta for scroll is computed from distance"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4062
2670
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  4063
    |timeDelta scrollBlock|
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  4064
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  4065
    autoScroll ifFalse:[
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  4066
        self stopAutoScroll.
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  4067
        ^ self
1749
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  4068
    ].
2670
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  4069
1749
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  4070
    autoScrollBlock notNil ifTrue:[
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  4071
        Processor removeTimedBlock:autoScrollBlock.
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  4072
    ] ifFalse:[
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  4073
        self compressMotionEvents:false.
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  4074
    ].
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  4075
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  4076
    timeDelta := 0.5 / (aDistance abs).
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  4077
2670
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  4078
    scrollBlock := 
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  4079
        [
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  4080
            aSelectorOrBlock isSymbol ifTrue:[
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  4081
                self perform:aSelectorOrBlock.
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  4082
            ] ifFalse:[
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  4083
                aSelectorOrBlock value
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  4084
            ].
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  4085
            autoScrollBlock notNil ifTrue:[
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  4086
                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
  4087
            ]
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  4088
        ].
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  4089
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2637
diff changeset
  4090
    autoScrollBlock := [self sensor pushUserEvent:#value for:scrollBlock].
1749
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  4091
    Processor addTimedBlock:autoScrollBlock afterSeconds:timeDelta.
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  4092
!
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  4093
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  4094
stopAutoScroll
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4095
    "stop any autoScroll"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4096
1749
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  4097
    autoScrollBlock notNil ifTrue:[
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  4098
        Processor removeTimedBlock:autoScrollBlock.
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  4099
        autoScrollBlock := nil.
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  4100
        self compressMotionEvents:true.
e78e17ead1ce support of auto scrolling
ca
parents: 1722
diff changeset
  4101
    ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4102
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4103
3382
a812cae515a5 add #findFirstRowWithString:from:to:ignoreCase:
fm
parents: 3302
diff changeset
  4104
!DSVColumnView methodsFor:'searching'!
a812cae515a5 add #findFirstRowWithString:from:to:ignoreCase:
fm
parents: 3302
diff changeset
  4105
5347
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4106
findFirstColumnWithStringFrom:start to:stop
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4107
    start to:stop do:[:eachNr| 
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4108
        |row lbl|
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4109
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4110
        row := self at:eachNr.
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4111
        columnDescriptors keysAndValuesDo:[:colNr :col |    
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4112
            lbl := col shownValueForRow:row rowNr:eachNr.
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4113
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4114
            lbl isNonByteCollection ifTrue:[
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4115
                lbl := lbl isEmpty ifTrue:[nil] ifFalse:[lbl first].
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4116
            ].
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4117
            (lbl respondsTo:#string) ifTrue:[
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4118
                lbl := lbl string.
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4119
            ].
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4120
            (lbl size ~~ 0 and:[(lbl at:1) isCharacter]) ifTrue:[
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4121
                ^ colNr
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4122
            ]
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4123
        ]
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4124
    ].
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4125
    ^ nil
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4126
!
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4127
3382
a812cae515a5 add #findFirstRowWithString:from:to:ignoreCase:
fm
parents: 3302
diff changeset
  4128
findFirstRowWithString: aString from:start to:stop by: step ignoreCase:ignoreCase
a812cae515a5 add #findFirstRowWithString:from:to:ignoreCase:
fm
parents: 3302
diff changeset
  4129
    "Return the rowNr from the first row that matches aString.
5347
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4130
     The search is performed between the start and stop row numbers and incrementing by a step"
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4131
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4132
    |stringToMatch|
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4133
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4134
    aString isEmptyOrNil ifTrue:[
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4135
        ^ self
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4136
    ].
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4137
    stringToMatch := '*', aString, '*'.
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4138
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4139
    start to:stop by:step do:[:rowNr| 
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4140
        |row lbl|
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4141
3382
a812cae515a5 add #findFirstRowWithString:from:to:ignoreCase:
fm
parents: 3302
diff changeset
  4142
        row := self at:rowNr.
a812cae515a5 add #findFirstRowWithString:from:to:ignoreCase:
fm
parents: 3302
diff changeset
  4143
        columnDescriptors keysAndValuesDo:[:colNr :col |    
a812cae515a5 add #findFirstRowWithString:from:to:ignoreCase:
fm
parents: 3302
diff changeset
  4144
            lbl := col shownValueForRow:row rowNr:rowNr.
a812cae515a5 add #findFirstRowWithString:from:to:ignoreCase:
fm
parents: 3302
diff changeset
  4145
5347
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4146
            lbl isNonByteCollection ifTrue:[
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4147
                lbl := lbl isEmpty ifTrue:[nil] ifFalse:[lbl first].
3382
a812cae515a5 add #findFirstRowWithString:from:to:ignoreCase:
fm
parents: 3302
diff changeset
  4148
            ].
a812cae515a5 add #findFirstRowWithString:from:to:ignoreCase:
fm
parents: 3302
diff changeset
  4149
            (lbl respondsTo:#string) ifTrue:[
a812cae515a5 add #findFirstRowWithString:from:to:ignoreCase:
fm
parents: 3302
diff changeset
  4150
                lbl := lbl string.
a812cae515a5 add #findFirstRowWithString:from:to:ignoreCase:
fm
parents: 3302
diff changeset
  4151
            ].
a812cae515a5 add #findFirstRowWithString:from:to:ignoreCase:
fm
parents: 3302
diff changeset
  4152
            lbl isNumber ifTrue:[
a812cae515a5 add #findFirstRowWithString:from:to:ignoreCase:
fm
parents: 3302
diff changeset
  4153
                lbl := lbl printString.
a812cae515a5 add #findFirstRowWithString:from:to:ignoreCase:
fm
parents: 3302
diff changeset
  4154
            ].
a812cae515a5 add #findFirstRowWithString:from:to:ignoreCase:
fm
parents: 3302
diff changeset
  4155
5347
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4156
            (lbl size ~~ 0 
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4157
                and:[(lbl at:1) isCharacter 
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4158
                and:[stringToMatch match:lbl caseSensitive:ignoreCase not
4359
bb6d48846f0d class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4333
diff changeset
  4159
            ]]) ifTrue:[
3382
a812cae515a5 add #findFirstRowWithString:from:to:ignoreCase:
fm
parents: 3302
diff changeset
  4160
                ^ rowNr
a812cae515a5 add #findFirstRowWithString:from:to:ignoreCase:
fm
parents: 3302
diff changeset
  4161
            ]
a812cae515a5 add #findFirstRowWithString:from:to:ignoreCase:
fm
parents: 3302
diff changeset
  4162
        ]
a812cae515a5 add #findFirstRowWithString:from:to:ignoreCase:
fm
parents: 3302
diff changeset
  4163
    ].
a812cae515a5 add #findFirstRowWithString:from:to:ignoreCase:
fm
parents: 3302
diff changeset
  4164
    ^ nil
a812cae515a5 add #findFirstRowWithString:from:to:ignoreCase:
fm
parents: 3302
diff changeset
  4165
!
a812cae515a5 add #findFirstRowWithString:from:to:ignoreCase:
fm
parents: 3302
diff changeset
  4166
a812cae515a5 add #findFirstRowWithString:from:to:ignoreCase:
fm
parents: 3302
diff changeset
  4167
findFirstRowWithString: aString from:start to:stop ignoreCase:ignoreCase
a812cae515a5 add #findFirstRowWithString:from:to:ignoreCase:
fm
parents: 3302
diff changeset
  4168
    "Return the rowNr from the first row that matches aString.
5347
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4169
     The search is performed between the start and stop row numbers"
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4170
e0b26e38ee0f #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 5310
diff changeset
  4171
    ^ self findFirstRowWithString:aString from:start to:stop by:1 ignoreCase:ignoreCase
3382
a812cae515a5 add #findFirstRowWithString:from:to:ignoreCase:
fm
parents: 3302
diff changeset
  4172
! !
a812cae515a5 add #findFirstRowWithString:from:to:ignoreCase:
fm
parents: 3302
diff changeset
  4173
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4174
!DSVColumnView methodsFor:'selection'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4175
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4176
addRowToSelection:aRowNr 
2370
8d1fadf4e4f6 #addRowToSelection: omit redraws
ca
parents: 2363
diff changeset
  4177
    "add a row to the selection
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4178
     if a column is selected, the column will be closed"
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4179
    
2370
8d1fadf4e4f6 #addRowToSelection: omit redraws
ca
parents: 2363
diff changeset
  4180
    |newSelection|
8d1fadf4e4f6 #addRowToSelection: omit redraws
ca
parents: 2363
diff changeset
  4181
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4182
    (self isRowSelectable:aRowNr) ifFalse:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4183
        ^ self
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4184
    ].
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  4185
    self numberOfSelections == 0 ifTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  4186
        self selectColIndex:0 rowIndex:aRowNr.
2370
8d1fadf4e4f6 #addRowToSelection: omit redraws
ca
parents: 2363
diff changeset
  4187
        ^ self
2363
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  4188
    ].
2907
c4a8cac87053 ctrl-select fixed
Claus Gittinger <cg@exept.de>
parents: 2886
diff changeset
  4189
    (self isInSelection:aRowNr) ifTrue:[
c4a8cac87053 ctrl-select fixed
Claus Gittinger <cg@exept.de>
parents: 2886
diff changeset
  4190
        ^ self
c4a8cac87053 ctrl-select fixed
Claus Gittinger <cg@exept.de>
parents: 2886
diff changeset
  4191
    ].
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  4192
    multipleSelectOk ifFalse:[
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4193
        self selectColIndex:0 rowIndex:aRowNr.
2370
8d1fadf4e4f6 #addRowToSelection: omit redraws
ca
parents: 2363
diff changeset
  4194
        ^ self
8d1fadf4e4f6 #addRowToSelection: omit redraws
ca
parents: 2363
diff changeset
  4195
    ].
2371
2bc91b1b59a5 bugfix when adding to selection
ca
parents: 2370
diff changeset
  4196
    newSelection := selectedRowIndex copyWith:aRowNr.
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4197
    self selectedColIndex ~~ 0 ifTrue:[
2370
8d1fadf4e4f6 #addRowToSelection: omit redraws
ca
parents: 2363
diff changeset
  4198
        self selectColIndex:0 rowIndex:newSelection.
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  4199
    ] ifFalse:[
2907
c4a8cac87053 ctrl-select fixed
Claus Gittinger <cg@exept.de>
parents: 2886
diff changeset
  4200
        selectedRowIndex := newSelection.
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  4201
        self invalidateRowAt:aRowNr.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  4202
        self selectionChanged.
2370
8d1fadf4e4f6 #addRowToSelection: omit redraws
ca
parents: 2363
diff changeset
  4203
    ].
2363
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  4204
!
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  4205
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4206
deselect
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4207
    self selectColIndex:0 rowIndex:0
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4208
!
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4209
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4210
firstIndexSelected
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4211
    "returns index of first row selected or 0"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4212
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4213
    multipleSelectOk ifFalse:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4214
        ^ selectedRowIndex
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4215
    ].
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4216
    selectedRowIndex size ~~ 0 ifTrue:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4217
        ^ selectedRowIndex at:1
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4218
    ].
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4219
    ^ 0
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4220
!
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4221
2695
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4222
forceAcceptInEditor
2722
18c5bd340b1b close editor when clicking outside
ca
parents: 2714
diff changeset
  4223
    editView notNil ifTrue:[
18c5bd340b1b close editor when clicking outside
ca
parents: 2714
diff changeset
  4224
        editView 
18c5bd340b1b close editor when clicking outside
ca
parents: 2714
diff changeset
  4225
            allSubViewsDo:[:aSubView | 
18c5bd340b1b close editor when clicking outside
ca
parents: 2714
diff changeset
  4226
                (aSubView respondsTo:#accept) ifTrue:[
18c5bd340b1b close editor when clicking outside
ca
parents: 2714
diff changeset
  4227
                    aSubView accept
18c5bd340b1b close editor when clicking outside
ca
parents: 2714
diff changeset
  4228
                ].
18c5bd340b1b close editor when clicking outside
ca
parents: 2714
diff changeset
  4229
            ]
18c5bd340b1b close editor when clicking outside
ca
parents: 2714
diff changeset
  4230
    ]
2695
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4231
!
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4232
2151
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  4233
hasRowSelection
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  4234
    "returns true if a selection exists, and its a complete row
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4235
     (as opposed to either no selection, or a columnSelection)"
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4236
    
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4237
    ^ self hasSelection and:[ self selectedColIndex == 0 ]
2151
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  4238
!
50f8723054e7 selected row is highlighted over the full width;
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
  4239
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4240
hasSelection
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4241
    "returns true if a selection exists"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4242
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4243
    ^ self numberOfSelections ~~ 0
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4244
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4245
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4246
isInSelection:aRowNr
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4247
    "returns true, if row, aRowNr is in the selection"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4248
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4249
    aRowNr ~~ 0 ifTrue:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4250
        multipleSelectOk ifFalse:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4251
            ^ aRowNr == selectedRowIndex
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4252
        ].
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4253
        selectedRowIndex size ~~ 0 ifTrue:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4254
            ^ selectedRowIndex includes:aRowNr
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4255
        ]
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4256
    ].
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4257
    ^ false
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4258
!
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4259
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4260
isRowSelected:aRowNr 
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4261
    "returns true, if row is in the selection"
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4262
    
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4263
    self selectedColIndex == 0 ifTrue:[
647
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  4264
        ^ self isInSelection:aRowNr
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  4265
    ].
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  4266
    ^ false
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  4267
!
ee98a1976972 support of different styles
ca
parents: 645
diff changeset
  4268
2263
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  4269
isRowVisible:aRowNr
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  4270
    |y h|
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  4271
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  4272
    h := rowHeight.
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  4273
    y := self yVisibleOfRowNr:aRowNr.
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  4274
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  4275
    y < margin ifTrue:[
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  4276
        (h := h + y) <= margin ifTrue:[
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  4277
            ^ false
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  4278
        ].                                            
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  4279
    ] ifFalse:[
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  4280
        y >= (height-margin) ifTrue:[^ false].
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  4281
    ].
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  4282
    ^ true
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  4283
!
e7648d72264f + #isRowVisible
penk
parents: 2247
diff changeset
  4284
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4285
isSelected:aRowNr inColumn:aColNr 
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  4286
    "returns true if cell in a row; a row number, in a column, a column
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4287
     number is selected."
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4288
    
1042
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
  4289
    multipleSelectOk ifFalse:[
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
  4290
        aRowNr ~~ selectedRowIndex ifTrue:[
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
  4291
            ^ false
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
  4292
        ]
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
  4293
    ] ifTrue:[
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4294
        (selectedRowIndex size ~~ 0 and:[ selectedRowIndex includes:aRowNr ]) ifFalse:[
1042
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
  4295
            ^ false
b2b27ac9a550 change rowSelector icon;
ca
parents: 1034
diff changeset
  4296
        ]
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4297
    ].
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4298
    ^ (self selectedColIndex == 0 or:[ self selectedColIndex == aColNr ])
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4299
!
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4300
2276
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  4301
isSelectionVisibleIn:anExtentPoint
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  4302
    self selectionIndicesDo:[:selRowNr |
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  4303
        |y|
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  4304
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  4305
        y := self yVisibleOfRowNr:selRowNr.
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  4306
        (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
  4307
    ].
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  4308
    ^ false.
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  4309
!
19de72502874 dont make selection visible after resize, if it was not visible before
ca
parents: 2263
diff changeset
  4310
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  4311
lastIndexSelected
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4312
    "returns index of last selected row or 0"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4313
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  4314
    multipleSelectOk ifFalse:[
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  4315
        ^ selectedRowIndex
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  4316
    ].
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  4317
    selectedRowIndex size ~~ 0 ifTrue:[
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  4318
        ^ selectedRowIndex last
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  4319
    ].
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  4320
    ^ 0
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  4321
!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  4322
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4323
makeLineVisible:aLine 
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4324
    "scroll to make aLine visible"
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4325
    
2363
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  4326
    |colNr|
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  4327
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4328
    aLine == 0 ifTrue:[
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4329
        ^ self
2363
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  4330
    ].
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4331
    (self isRowVisible:aLine) ifTrue:[
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4332
        ^ self
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4333
    ].
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4334
    (self selectedColIndex notNil and:[ self selectedColIndex ~~ 0 ]) ifTrue:[
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4335
        colNr := self selectedColIndex
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4336
    ] ifFalse:[ colNr := 1 ].
2363
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  4337
    self scrollToRowAt:aLine colAt:colNr
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  4338
!
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  4339
2246
5d59b5e2e00c makeSelectionVisible after #sizeChanged:
ca
parents: 2237
diff changeset
  4340
makeSelectionVisible
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4341
    "scroll to make the selection line visible"
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4342
    
2246
5d59b5e2e00c makeSelectionVisible after #sizeChanged:
ca
parents: 2237
diff changeset
  4343
    |rowNr colNr|
5d59b5e2e00c makeSelectionVisible after #sizeChanged:
ca
parents: 2237
diff changeset
  4344
5d59b5e2e00c makeSelectionVisible after #sizeChanged:
ca
parents: 2237
diff changeset
  4345
    rowNr := self firstIndexSelected.
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4346
    rowNr == 0 ifTrue:[
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4347
        ^ self
2246
5d59b5e2e00c makeSelectionVisible after #sizeChanged:
ca
parents: 2237
diff changeset
  4348
    ].
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4349
    (self selectedColIndex notNil and:[ self selectedColIndex ~~ 0 ]) ifTrue:[
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4350
        colNr := self selectedColIndex
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4351
    ] ifFalse:[ colNr := 1 ].
2246
5d59b5e2e00c makeSelectionVisible after #sizeChanged:
ca
parents: 2237
diff changeset
  4352
    self scrollToRowAt:rowNr colAt:colNr
5d59b5e2e00c makeSelectionVisible after #sizeChanged:
ca
parents: 2237
diff changeset
  4353
!
5d59b5e2e00c makeSelectionVisible after #sizeChanged:
ca
parents: 2237
diff changeset
  4354
2363
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  4355
maxIndexSelected
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4356
    "return the largest index selected or 0"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4357
2363
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  4358
    multipleSelectOk ifFalse:[
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  4359
        ^ selectedRowIndex
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  4360
    ].
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  4361
    selectedRowIndex size ~~ 0 ifTrue:[
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  4362
        ^ selectedRowIndex max
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  4363
    ].
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  4364
    ^ 0
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  4365
!
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  4366
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  4367
minIndexSelected
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4368
    "return the smallest index selected or 0"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4369
2363
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  4370
    multipleSelectOk ifFalse:[
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  4371
        ^ selectedRowIndex
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  4372
    ].
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  4373
    selectedRowIndex size ~~ 0 ifTrue:[
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  4374
        ^ selectedRowIndex min
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  4375
    ].
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  4376
    ^ 0
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  4377
!
72cda227e48d shift + cursorUp/Down adds to selection
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  4378
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4379
numberOfSelections
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4380
    "return the number of selected rows"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4381
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4382
    multipleSelectOk ifFalse:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4383
        ^ selectedRowIndex ~~ 0 ifTrue:[1] ifFalse:[0]
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4384
    ].
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4385
    ^ selectedRowIndex size
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4386
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4387
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4388
openEditorOnSelection
3855
41653ef27914 changed: #openEditorOnSelection
Claus Gittinger <cg@exept.de>
parents: 3779
diff changeset
  4389
     |colIdx column rowIdx editorAndModel winGroup
3770
e24ada279c5e changed:
Claus Gittinger <cg@exept.de>
parents: 3757
diff changeset
  4390
      editor filter keyBrdFwd selColor|
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4391
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4392
    (shown and:[editView isNil]) ifFalse:[
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4393
        ^ self
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4394
    ].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4395
    winGroup := self windowGroup.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4396
    winGroup isNil ifTrue:[^ self ].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4397
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4398
    colIdx := self selectedColIndex ? 0.
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4399
    column := self columnDescriptorAt:colIdx.
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4400
    column isNil ifTrue:[^ self].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4401
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4402
    rowIdx := self selectedRowIndex ? 0.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4403
    rowIdx == 0 ifTrue:[^ self ].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4404
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4405
    rowIdx isSequenceable ifTrue:[
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4406
        rowIdx := rowIdx at:1 ifAbsent:[ ^ self ].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4407
    ].
3855
41653ef27914 changed: #openEditorOnSelection
Claus Gittinger <cg@exept.de>
parents: 3779
diff changeset
  4408
41653ef27914 changed: #openEditorOnSelection
Claus Gittinger <cg@exept.de>
parents: 3779
diff changeset
  4409
    editorAndModel := column editorForRowAt:rowIdx.      
41653ef27914 changed: #openEditorOnSelection
Claus Gittinger <cg@exept.de>
parents: 3779
diff changeset
  4410
    editorAndModel isNil ifTrue:[^ self].
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4411
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4412
    autoScrollToColumn == true ifTrue:[
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4413
        self scrollToRowAt:rowIdx colAt:colIdx.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4414
    ].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4415
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4416
    editView := SimpleView 
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4417
                extent:((column width - (2 * separatorSize)) 
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4418
                        @ (rowHeight - (2 * separatorSize)))
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4419
                in:self.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4420
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4421
    self updateEditViewOrigin.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4422
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4423
    (column containsText or:[ column showSelectionHighLighted not ]) ifTrue:[
3149
66df7168e377 bug fix
ca
parents: 3141
diff changeset
  4424
        selColor := (column backgroundColorAt:rowIdx)
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4425
    ] ifFalse:[
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4426
        selColor := selectionBackgroundColor
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4427
    ].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4428
    editView viewBackground:selectionBackgroundColor.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4429
3855
41653ef27914 changed: #openEditorOnSelection
Claus Gittinger <cg@exept.de>
parents: 3779
diff changeset
  4430
    editor := editorAndModel editor.
3770
e24ada279c5e changed:
Claus Gittinger <cg@exept.de>
parents: 3757
diff changeset
  4431
    editView add:editor.
3855
41653ef27914 changed: #openEditorOnSelection
Claus Gittinger <cg@exept.de>
parents: 3779
diff changeset
  4432
    editorAndModel editorNeedsCursorKeys ifTrue:[
41653ef27914 changed: #openEditorOnSelection
Claus Gittinger <cg@exept.de>
parents: 3779
diff changeset
  4433
        editorAndModel editorNeedsReturnKey ifTrue:[
41653ef27914 changed: #openEditorOnSelection
Claus Gittinger <cg@exept.de>
parents: 3779
diff changeset
  4434
            "/ only steal TAB from the editor
4176
915f6fa47e09 class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4163
diff changeset
  4435
            filter := [:aKey | #( #Tab #NonInsertingTab #BackTab ) includes:aKey ]
3855
41653ef27914 changed: #openEditorOnSelection
Claus Gittinger <cg@exept.de>
parents: 3779
diff changeset
  4436
        ] ifFalse:[
41653ef27914 changed: #openEditorOnSelection
Claus Gittinger <cg@exept.de>
parents: 3779
diff changeset
  4437
            "/ steal TAB and RETURN from the editor
4176
915f6fa47e09 class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4163
diff changeset
  4438
            filter := [:aKey | #( #Tab #NonInsertingTab #BackTab #Return ) includes:aKey ]
3855
41653ef27914 changed: #openEditorOnSelection
Claus Gittinger <cg@exept.de>
parents: 3779
diff changeset
  4439
        ].
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4440
    ] ifFalse:[
3855
41653ef27914 changed: #openEditorOnSelection
Claus Gittinger <cg@exept.de>
parents: 3779
diff changeset
  4441
        editorAndModel editorNeedsReturnKey ifTrue:[
41653ef27914 changed: #openEditorOnSelection
Claus Gittinger <cg@exept.de>
parents: 3779
diff changeset
  4442
            "/ only steal TAB and Curosr Keys from the editor
4176
915f6fa47e09 class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4163
diff changeset
  4443
            filter := [:aKey | #( #Tab #NonInsertingTab #BackTab #CursorUp #CursorDown ) includes:aKey ]
3855
41653ef27914 changed: #openEditorOnSelection
Claus Gittinger <cg@exept.de>
parents: 3779
diff changeset
  4444
        ] ifFalse:[
41653ef27914 changed: #openEditorOnSelection
Claus Gittinger <cg@exept.de>
parents: 3779
diff changeset
  4445
            "/ steal TAB, RETURN and Curosr Keys from the editor
4176
915f6fa47e09 class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4163
diff changeset
  4446
            filter := [:aKey | #( #Tab #NonInsertingTab #BackTab #CursorUp #CursorDown #Return ) includes:aKey ]
3855
41653ef27914 changed: #openEditorOnSelection
Claus Gittinger <cg@exept.de>
parents: 3779
diff changeset
  4447
        ].
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4448
    ].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4449
    keyBrdFwd := KeyboardForwarder 
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4450
                toView:self
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4451
                condition:nil
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4452
                filter:filter.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4453
    editView 
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4454
        withAllSubViewsDo:[:aView | 
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4455
            aView delegate:keyBrdFwd.
4496
229bdd6b4754 class: DSVColumnView
Stefan Vogel <sv@exept.de>
parents: 4489
diff changeset
  4456
            aView font:self font.
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4457
        ].
3141
095e746ebc1d bug fix
ca
parents: 3140
diff changeset
  4458
3855
41653ef27914 changed: #openEditorOnSelection
Claus Gittinger <cg@exept.de>
parents: 3779
diff changeset
  4459
    (editValue := editorAndModel model) notNil ifTrue:[
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4460
        editValue addDependent:self.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4461
    ].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4462
    editView realize.
3770
e24ada279c5e changed:
Claus Gittinger <cg@exept.de>
parents: 3757
diff changeset
  4463
    editor canTab:true.
3962
0b5f7e526d0f changed:
Claus Gittinger <cg@exept.de>
parents: 3961
diff changeset
  4464
3770
e24ada279c5e changed:
Claus Gittinger <cg@exept.de>
parents: 3757
diff changeset
  4465
    winGroup focusView:editor.
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4466
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4467
    self processAllExposeEvents.
3960
20b0047e59c6 +PreselectAllWhenOpeningEditor
Claus Gittinger <cg@exept.de>
parents: 3924
diff changeset
  4468
3962
0b5f7e526d0f changed:
Claus Gittinger <cg@exept.de>
parents: 3961
diff changeset
  4469
    "Modified: / 02-11-2010 / 22:04:01 / cg"
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4470
!
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4471
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4472
processAllExposeEvents
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4473
    |sensor|
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4474
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4475
    sensor := self sensor.
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4476
    [ 
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4477
        sensor hasExposeEventFor:nil
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4478
    ] whileTrue:[
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4479
        self windowGroup processExposeEvents
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4480
    ].
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4481
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4482
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4483
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4484
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4485
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4486
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4487
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4488
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4489
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4490
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4491
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4492
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4493
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4494
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4495
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4496
!
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4497
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  4498
removeRowFromSelection:aRowNr
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4499
    "remove a row from the selection"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4500
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  4501
    (self isInSelection:aRowNr) ifFalse:[^ self].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  4502
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  4503
    self numberOfSelections == 1 ifTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  4504
        self deselect.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  4505
    ] ifFalse:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  4506
        selectedRowIndex := selectedRowIndex copyWithout:aRowNr.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  4507
        self invalidateRowAt:aRowNr.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  4508
        self selectionChanged.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  4509
    ].
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  4510
!
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  4511
1947
1e11b36633b2 added selectAllRows (Alt-Shift-A) key function
Claus Gittinger <cg@exept.de>
parents: 1946
diff changeset
  4512
selectAllRows
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4513
    "select all"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4514
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4515
    multipleSelectOk ifFalse:[^ self].
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4516
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4517
    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
  4518
    self selectionChanged.
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4519
    self invalidate.
1947
1e11b36633b2 added selectAllRows (Alt-Shift-A) key function
Claus Gittinger <cg@exept.de>
parents: 1946
diff changeset
  4520
!
1e11b36633b2 added selectAllRows (Alt-Shift-A) key function
Claus Gittinger <cg@exept.de>
parents: 1946
diff changeset
  4521
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4522
selectColIndex:aColNr rowIndex:aRowNr
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4523
    "change selection with notification"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4524
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4525
    self selectColIndex:aColNr rowIndex:aRowNr openEditor:true.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4526
!
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4527
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4528
selectColIndex:aColNr rowIndex:aRowNr openEditor:openEditor
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4529
    "change selection with notification"
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4530
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4531
    |oC oR|
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4532
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4533
    oC := self selectedColIndex.
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4534
    oR := self selectedRowIndex.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4535
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4536
    self setSelectColIndex:aColNr rowIndex:aRowNr openEditor:openEditor.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4537
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4538
    (oC ~~ self selectedColIndex or:[oR ~= self selectedRowIndex]) ifTrue:[
3302
6725ecddd8e3 pass colNr down to selectionChanged
Claus Gittinger <cg@exept.de>
parents: 3248
diff changeset
  4539
        self selectionChanged:aColNr
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4540
    ].
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4541
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4542
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4543
selectRow:something
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4544
    "select a row"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4545
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4546
    ^ self selectedRowIndex:something
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4547
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4548
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  4549
selectRowAt:rowNr colAt:colNr atPoint:aPoint
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4550
    self selectRowAt:rowNr colAt:colNr atPoint:aPoint openEditor:true.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4551
!
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4552
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4553
selectRowAt:rowNr colAt:colNr atPoint:aPoint openEditor:openEditor
4459
0fd01d06e0b4 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4425
diff changeset
  4554
    |view p shouldClick editorType|
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4555
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4556
    view := editView.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4557
    self selectColIndex:colNr rowIndex:rowNr openEditor:openEditor.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4558
    openEditor ifFalse:[ ^ self ].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4559
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4560
    editView isNil ifTrue:[
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4561
        "/ might be a reselection
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4562
        self openEditorOnSelection.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4563
        editView isNil ifTrue:[^ self].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4564
    ] ifFalse:[
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4565
        editView == view ifTrue:[^ self].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4566
    ].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4567
    view := self detectViewAt:aPoint ignoreInvisible:true.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4568
4459
0fd01d06e0b4 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4425
diff changeset
  4569
    shouldClick := true.
0fd01d06e0b4 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4425
diff changeset
  4570
    "/ when PreselectAllWhenOpeningEditor is true, we should not click into
0fd01d06e0b4 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4425
diff changeset
  4571
    "/ the editor, as this couldclear the selection.
0fd01d06e0b4 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4425
diff changeset
  4572
    "/ however, for non-text editors, it is a good idea to do so...
0fd01d06e0b4 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4425
diff changeset
  4573
    PreselectAllWhenOpeningEditor == true ifTrue:[
0fd01d06e0b4 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4425
diff changeset
  4574
        shouldClick := false.
0fd01d06e0b4 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4425
diff changeset
  4575
0fd01d06e0b4 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4425
diff changeset
  4576
        editorType := self selectedColumn editorType.
0fd01d06e0b4 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4425
diff changeset
  4577
        editorType == #ComboList ifTrue:[ shouldClick := true ].
0fd01d06e0b4 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4425
diff changeset
  4578
        "/ TODO: more heuristics here...
0fd01d06e0b4 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4425
diff changeset
  4579
        "/ editorType == #RadioButton ifTrue:[ ].
0fd01d06e0b4 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4425
diff changeset
  4580
    ].
0fd01d06e0b4 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4425
diff changeset
  4581
0fd01d06e0b4 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4425
diff changeset
  4582
    shouldClick ifTrue:[
2125
67e0f2c9ad4d event types are private to WindowEvent;
ca
parents: 2101
diff changeset
  4583
        "/ simulate clicking into the editor
4459
0fd01d06e0b4 class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4425
diff changeset
  4584
        self breakPoint:#ca.
3962
0b5f7e526d0f changed:
Claus Gittinger <cg@exept.de>
parents: 3961
diff changeset
  4585
        (view ~~ self and:[view notNil]) ifTrue:[ 
4991
ddee68d07788 device access
Claus Gittinger <cg@exept.de>
parents: 4961
diff changeset
  4586
            p := device translatePoint:aPoint fromView:self toView:view.
3960
20b0047e59c6 +PreselectAllWhenOpeningEditor
Claus Gittinger <cg@exept.de>
parents: 3924
diff changeset
  4587
            self sensor 
20b0047e59c6 +PreselectAllWhenOpeningEditor
Claus Gittinger <cg@exept.de>
parents: 3924
diff changeset
  4588
                    pushEvent:(WindowEvent   buttonPress:1 x:p x y:p y view:view);
20b0047e59c6 +PreselectAllWhenOpeningEditor
Claus Gittinger <cg@exept.de>
parents: 3924
diff changeset
  4589
                    pushEvent:(WindowEvent buttonRelease:1 x:p x y:p y view:view).
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4590
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4591
"/        "/ a very special hack for radioButtons:
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4592
"/        "/ if the button is now on, all other cells must be turned off !!
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4593
"/        self selectedColumn editorType == #RadioButton ifTrue:[
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4594
"/            1 tolist size do:[:eachRowNr |
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4595
"/                eachRowNr ~~ rowNr ifTrue:[
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4596
"/                    self at:eachRowNr put:false
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4597
"/                ].
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4598
"/            ].
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4599
"/        ].
3960
20b0047e59c6 +PreselectAllWhenOpeningEditor
Claus Gittinger <cg@exept.de>
parents: 3924
diff changeset
  4600
        ].
20b0047e59c6 +PreselectAllWhenOpeningEditor
Claus Gittinger <cg@exept.de>
parents: 3924
diff changeset
  4601
    ].
20b0047e59c6 +PreselectAllWhenOpeningEditor
Claus Gittinger <cg@exept.de>
parents: 3924
diff changeset
  4602
4073
14b8653c124f changed: #selectRowAt:colAt:atPoint:openEditor:
Claus Gittinger <cg@exept.de>
parents: 4059
diff changeset
  4603
    "Modified: / 07-09-2011 / 16:08:45 / cg"
809
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  4604
!
0206d997fe99 support styleSheet and set preferred extent for drawing
ca
parents: 765
diff changeset
  4605
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4606
selectRowFrom:start to:stop 
2470
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  4607
    |step oldSelection newSelection|
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  4608
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  4609
    start == stop ifTrue:[
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  4610
        self selectColIndex:0 rowIndex:start.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  4611
        ^ self
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  4612
    ].
2470
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  4613
    step := (start <= stop) ifTrue:1 ifFalse:-1.
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4614
    newSelection := (start to:stop by:step) 
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4615
                select:[:idx | self isRowSelectable:idx ].
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4616
    self selectedColIndex ~~ 0 ifTrue:[
2470
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  4617
        self selectColIndex:0 rowIndex:newSelection.
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  4618
        ^ self
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  4619
    ].
2470
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  4620
    oldSelection := selectedRowIndex ? #().
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  4621
    selectedRowIndex := newSelection.
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  4622
    newSelection 
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4623
        select:[:i | (oldSelection includes:i) not ]
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4624
        thenDo:[:i | self invalidateRowAt:i ].
2470
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  4625
    oldSelection 
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4626
        select:[:i | (newSelection includes:i) not ]
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4627
        thenDo:[:i | self invalidateRowAt:i ].
2398
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  4628
    self selectionChanged.
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  4629
!
bea17c9648e4 *** empty log message ***
ca
parents: 2371
diff changeset
  4630
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4631
selectRowIndex:something 
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4632
    "set selection of rows"
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4633
    
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4634
    self selectColIndex:self selectedColIndex rowIndex:something
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4635
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4636
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4637
selectedColIndex
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4638
    "returns selected column number or 0"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4639
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4640
    ^ self selectedColIndexHolder value
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4641
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4642
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4643
selectedColumn
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4644
    "returns selected column or nil"
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4645
    
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4646
    ^ columnDescriptors at:self selectedColIndex ifAbsent:nil.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4647
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4648
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4649
selectedRow
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4650
    "returns the selected row (or collection if multiple selection) or nil"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4651
    
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4652
    multipleSelectOk ifFalse:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4653
        ^ self at:selectedRowIndex ifAbsent:nil
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4654
    ].
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4655
    selectedRowIndex size ~~ 0 ifTrue:[
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4656
        ^ selectedRowIndex collect:[:i | self at:i ]
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4657
    ].
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4658
    ^ nil
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4659
!
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4660
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4661
selectedRow:something 
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4662
    "select something"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4663
    
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4664
    self selectedRowIndex:something
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4665
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4666
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4667
selectedRowIndex
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4668
    "returns selected row number or 0"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4669
    
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4670
    ^ selectedRowIndex
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4671
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4672
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4673
selectedRowIndex:something 
2470
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  4674
    "set the row selection (single or multiple rows);
2816
7e36fce15001 return-key handling;
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
  4675
     does NOT change the selected column."
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4676
    
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4677
    self selectColIndex:self selectedColIndex rowIndex:something
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4678
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4679
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4680
selectionChanged
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4681
    "selection has changed"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4682
    
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  4683
    |val|
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  4684
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  4685
    model notNil ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  4686
        val := self selectedRowIndex copy.
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  4687
        (model respondsTo:#selectionIndex:) ifTrue:[
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  4688
            model selectionIndex:val
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  4689
        ] ifFalse:[
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4690
            useIndex ifFalse:[
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4691
                model value:(self selectedRow)
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4692
            ] ifTrue:[
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4693
                model value:val
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4694
            ]
1487
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  4695
        ]
fd003e2156cc bug fixes + rework
Claus Gittinger <cg@exept.de>
parents: 1484
diff changeset
  4696
    ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4697
    actionBlock notNil ifTrue:[
4794
73a3ffcaf58c class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4772
diff changeset
  4698
        actionBlock valueWithOptionalArgument:(self selectedRowIndex)
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4699
    ]
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4700
!
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4701
3302
6725ecddd8e3 pass colNr down to selectionChanged
Claus Gittinger <cg@exept.de>
parents: 3248
diff changeset
  4702
selectionChanged:colNr
6725ecddd8e3 pass colNr down to selectionChanged
Claus Gittinger <cg@exept.de>
parents: 3248
diff changeset
  4703
    "selection has changed"
6725ecddd8e3 pass colNr down to selectionChanged
Claus Gittinger <cg@exept.de>
parents: 3248
diff changeset
  4704
    
6725ecddd8e3 pass colNr down to selectionChanged
Claus Gittinger <cg@exept.de>
parents: 3248
diff changeset
  4705
    |val|
6725ecddd8e3 pass colNr down to selectionChanged
Claus Gittinger <cg@exept.de>
parents: 3248
diff changeset
  4706
6725ecddd8e3 pass colNr down to selectionChanged
Claus Gittinger <cg@exept.de>
parents: 3248
diff changeset
  4707
    model notNil ifTrue:[
6725ecddd8e3 pass colNr down to selectionChanged
Claus Gittinger <cg@exept.de>
parents: 3248
diff changeset
  4708
        val := self selectedRowIndex copy.
6725ecddd8e3 pass colNr down to selectionChanged
Claus Gittinger <cg@exept.de>
parents: 3248
diff changeset
  4709
        (model respondsTo:#selectionIndex:) ifTrue:[
6725ecddd8e3 pass colNr down to selectionChanged
Claus Gittinger <cg@exept.de>
parents: 3248
diff changeset
  4710
            model selectionIndex:val
6725ecddd8e3 pass colNr down to selectionChanged
Claus Gittinger <cg@exept.de>
parents: 3248
diff changeset
  4711
        ] ifFalse:[
6725ecddd8e3 pass colNr down to selectionChanged
Claus Gittinger <cg@exept.de>
parents: 3248
diff changeset
  4712
            useIndex ifFalse:[
6725ecddd8e3 pass colNr down to selectionChanged
Claus Gittinger <cg@exept.de>
parents: 3248
diff changeset
  4713
                model value:(self selectedRow)
6725ecddd8e3 pass colNr down to selectionChanged
Claus Gittinger <cg@exept.de>
parents: 3248
diff changeset
  4714
            ] ifTrue:[
6725ecddd8e3 pass colNr down to selectionChanged
Claus Gittinger <cg@exept.de>
parents: 3248
diff changeset
  4715
                model value:val
6725ecddd8e3 pass colNr down to selectionChanged
Claus Gittinger <cg@exept.de>
parents: 3248
diff changeset
  4716
            ]
6725ecddd8e3 pass colNr down to selectionChanged
Claus Gittinger <cg@exept.de>
parents: 3248
diff changeset
  4717
        ]
6725ecddd8e3 pass colNr down to selectionChanged
Claus Gittinger <cg@exept.de>
parents: 3248
diff changeset
  4718
    ].
6725ecddd8e3 pass colNr down to selectionChanged
Claus Gittinger <cg@exept.de>
parents: 3248
diff changeset
  4719
    actionBlock notNil ifTrue:[
6725ecddd8e3 pass colNr down to selectionChanged
Claus Gittinger <cg@exept.de>
parents: 3248
diff changeset
  4720
        actionBlock valueWithOptionalArgument:(self selectedRowIndex) and:colNr
6725ecddd8e3 pass colNr down to selectionChanged
Claus Gittinger <cg@exept.de>
parents: 3248
diff changeset
  4721
    ]
6725ecddd8e3 pass colNr down to selectionChanged
Claus Gittinger <cg@exept.de>
parents: 3248
diff changeset
  4722
!
6725ecddd8e3 pass colNr down to selectionChanged
Claus Gittinger <cg@exept.de>
parents: 3248
diff changeset
  4723
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4724
selectionIndicesDo:aOneArgBlock 
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4725
    "evaluate block on each row selected; the argument to the row
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4726
     is the index of the selected row"
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4727
    
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4728
    multipleSelectOk ifFalse:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4729
        selectedRowIndex ~~ 0 ifTrue:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4730
            aOneArgBlock value:selectedRowIndex
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4731
        ]
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4732
    ] ifTrue:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4733
        selectedRowIndex size ~~ 0 ifTrue:[
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4734
            selectedRowIndex do:aOneArgBlock
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4735
        ]
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4736
    ]
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4737
!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4738
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4739
setSelectColIndex:colNrArg rowIndex:rowNrArg 
2714
f0d55d0e204d categories; AEG stuff removed
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  4740
    "change selection without notification"
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4741
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4742
    self setSelectColIndex:colNrArg rowIndex:rowNrArg openEditor:true
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4743
!
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4744
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4745
setSelectColIndex:colNrArg rowIndex:rowNrArg openEditor:openEditor
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4746
    "change selection without notification"
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4747
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4748
    |rowNr colNr newCol oldCol oldRow sglSelRow oldSz winGroup|
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4749
2470
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  4750
    rowNr := self validateSelection:rowNrArg.
64aae46d9d4e code cleanup
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  4751
    colNr := colNrArg.
2695
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4752
    rowNr == 0 ifTrue:[
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4753
        colNr := 0.
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4754
    ] ifFalse:[
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4755
        multipleSelectOk ifTrue:[
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4756
            (rowNr size == 1) ifFalse:[
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4757
                colNr := 0
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4758
            ]
2695
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4759
        ].
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4760
    ].
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4761
    (colNr := colNr ? 0) ~~ 0 ifTrue:[
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4762
        newCol := self columnDescriptorAt:colNr.
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4763
        newCol rendererType == #rowSelector ifTrue:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4764
            colNr := 0.
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4765
            newCol := nil
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4766
        ] ifFalse:[
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4767
            multipleSelectOk ifTrue:[
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4768
                sglSelRow := rowNr at:1
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4769
            ] ifFalse:[
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4770
                sglSelRow := rowNr
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4771
            ].
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4772
            (newCol canSelect:sglSelRow) ifFalse:[
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4773
                newCol := nil.
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4774
                colNr := 0.
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  4775
                selectRowOnDefault ifFalse:[
3449
2ba8e55953aa some comments changed into reasonable english
Claus Gittinger <cg@exept.de>
parents: 3428
diff changeset
  4776
                    rowNr := multipleSelectOk ifTrue:[nil] ifFalse:[0]
1112
81f2a7f0afdc draw routines for interactors
ca
parents: 1111
diff changeset
  4777
                ]
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4778
            ]
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4779
        ]
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4780
    ].
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4781
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4782
    (rowNr = selectedRowIndex and:[ colNr == self selectedColIndex ]) ifTrue:[
643
bfd44867347f adding: bug fix
ca
parents: 642
diff changeset
  4783
        ^ self
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4784
    ].
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4785
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4786
    "/ release old selection
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4787
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4788
    oldSz := self numberOfSelections.
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4789
    oldCol := self selectedColIndex.
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4790
    oldRow := selectedRowIndex.
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  4791
    oldSz == 1 ifTrue:[
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4792
        multipleSelectOk ifTrue:[
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4793
            oldRow := oldRow at:1
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4794
        ].
2695
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4795
        self updateColumnFromEditValueAndDestroyEditView.
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  4796
    ].
3091
ca
parents: 2961
diff changeset
  4797
    rowNr ~= selectedRowIndex ifTrue:[
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4798
        selectedRowIndex := rowNr.
3302
6725ecddd8e3 pass colNr down to selectionChanged
Claus Gittinger <cg@exept.de>
parents: 3248
diff changeset
  4799
        self selectionChanged:colNr.
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4800
    ].
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4801
    self selectedColIndex:colNr.
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4802
    shown ifFalse:[ ^ self ].
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4803
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4804
    winGroup := self windowGroup.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4805
    winGroup isNil ifTrue:[^ self ].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4806
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4807
    oldSz > 1 ifTrue:[
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4808
        "/ redraw old selection
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4809
        oldRow do:[:aRowNr | 
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4810
            "/ unselected if visible
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  4811
            self invalidateRowAt:aRowNr colAt:0
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  4812
        ]
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  4813
    ] ifFalse:[
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  4814
        oldSz == 1 ifTrue:[
1408
1cda0a4fb566 use invalidate... insteat of redraw...
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
  4815
            self invalidateRowAt:oldRow colAt:oldCol
618
6a79bf9b4cd3 support list with undefined rows
ca
parents: 612
diff changeset
  4816
        ]
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4817
    ].
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4818
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4819
    "/ show new selection
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4820
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4821
    newCol notNil ifTrue:[
3140
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4822
        openEditor ifTrue:[
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4823
            self openEditorOnSelection.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4824
            editView notNil ifTrue:[^ self].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4825
        ].
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4826
        self invalidateRowAt:sglSelRow colAt:colNr.
6f2bc099fb35 new selectionHandling - buttonPress
ca
parents: 3138
diff changeset
  4827
3130
30ac624dd866 added a hook to allow for autoScrollToColumn to be disabled.
Claus Gittinger <cg@exept.de>
parents: 3091
diff changeset
  4828
        autoScrollToColumn == true ifTrue:[
30ac624dd866 added a hook to allow for autoScrollToColumn to be disabled.
Claus Gittinger <cg@exept.de>
parents: 3091
diff changeset
  4829
            self scrollToRowAt:sglSelRow colAt:colNr.
30ac624dd866 added a hook to allow for autoScrollToColumn to be disabled.
Claus Gittinger <cg@exept.de>
parents: 3091
diff changeset
  4830
        ].
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  4831
    ] ifFalse:[
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4832
        self selectionIndicesDo:[:i | self invalidateRowAt:i colAt:0 ].
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  4833
        self scrollToRowAt:(self firstIndexSelected) colAt:0
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  4834
    ].
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4835
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4836
    self processAllExposeEvents.
612
af7786327bd4 add columnHolder
ca
parents: 610
diff changeset
  4837
4055
4373923243d3 comment/format in: #setSelectColIndex:rowIndex:openEditor:
Claus Gittinger <cg@exept.de>
parents: 4020
diff changeset
  4838
    "Modified: / 12-07-2011 / 14:22:42 / cg"
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4839
!
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4840
2695
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4841
updateColumnFromEditValueAndDestroyEditView
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4842
    |edValue selCol selRow|
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4843
2960
1bb470bcdb64 colIndex as a holder;
fm
parents: 2958
diff changeset
  4844
    selCol := self selectedColIndex.
2695
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4845
    selRow := selectedRowIndex.
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4846
    editValue notNil ifTrue:[
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4847
        editValue removeDependent:self
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4848
    ].
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4849
    editView notNil ifTrue:[
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4850
        self forceAcceptInEditor
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4851
    ].
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4852
    editValue notNil ifTrue:[
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4853
        edValue := editValue value.
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4854
        edValue isSequenceable ifTrue:[
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4855
            edValue size == 0 ifTrue:[
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4856
                edValue := nil
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4857
            ] ifFalse:[
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4858
                edValue isString ifFalse:[
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4859
                    edValue := edValue select:[:el | el notNil ].
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4860
                    edValue size == 0 ifTrue:[
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4861
                        edValue := nil
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4862
                    ]
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4863
                ]
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4864
            ]
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4865
        ].
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4866
        selRow isNumber ifFalse:[
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4867
            "/ ??? should we do ???:
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4868
            "/ selRow do:[:eachRow |
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4869
            "/     (self columnAt:selCol) at:eachRow put:edValue.
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4870
            "/ ]
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4871
            selRow := selRow first
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4872
        ].
3504
7a480e6164ea refactored;
Claus Gittinger <cg@exept.de>
parents: 3500
diff changeset
  4873
        (self columnDescriptorAt:selCol) at:selRow put:edValue.
2695
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4874
        modifiedChannel notNil ifTrue:[
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4875
            modifiedChannel value:true
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4876
        ].
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4877
        editValue := nil
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4878
    ].
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4879
    self destroyEditView.
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4880
!
02d2039ec6a6 WO's changes
werner
parents: 2670
diff changeset
  4881
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4882
validateSelection:aSelection
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4883
    |newSel|
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4884
2733
7b5a0d80c4a8 Change by cg.
martin
parents: 2732
diff changeset
  4885
    (list size == 0 or:[aSelection isNil or:[aSelection == 0]]) ifTrue:[
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4886
        ^ multipleSelectOk ifFalse:[0] ifTrue:[nil]
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4887
    ].
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4888
2733
7b5a0d80c4a8 Change by cg.
martin
parents: 2732
diff changeset
  4889
    newSel := aSelection.
7b5a0d80c4a8 Change by cg.
martin
parents: 2732
diff changeset
  4890
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4891
    multipleSelectOk ifFalse:[
2732
0d3258f88f58 *** empty log message ***
martin
parents: 2730
diff changeset
  4892
        newSel isInteger ifFalse:[
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4893
            newSel := self identityIndexOfRow:aSelection.
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4894
        ].
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4895
        ^ (self isRowSelectable:newSel) ifTrue:[newSel] ifFalse:[0].
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4896
    ].
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4897
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4898
    "multiple selection
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4899
    "
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4900
    aSelection size ~~ 0 ifTrue:[
2732
0d3258f88f58 *** empty log message ***
martin
parents: 2730
diff changeset
  4901
        aSelection first isInteger ifTrue:[
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4902
            newSel := aSelection select:[:idx| self isRowSelectable:idx ].
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4903
        ] ifFalse:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4904
            newSel := aSelection 
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4905
                            collect:[:el| self identityIndexOfRow:el ]
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4906
                            thenSelect:[:idx| self isRowSelectable:idx ].
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4907
        ].
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4908
        newSel notEmpty ifTrue:[
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4909
            ^ newSel
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4910
        ].
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4911
    ] ifFalse:[
2733
7b5a0d80c4a8 Change by cg.
martin
parents: 2732
diff changeset
  4912
        newSel isInteger ifFalse:[
7b5a0d80c4a8 Change by cg.
martin
parents: 2732
diff changeset
  4913
            newSel := self identityIndexOfRow:aSelection.
7b5a0d80c4a8 Change by cg.
martin
parents: 2732
diff changeset
  4914
        ].
7b5a0d80c4a8 Change by cg.
martin
parents: 2732
diff changeset
  4915
        (self isRowSelectable:newSel) ifTrue:[
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4916
            ^ Array with:newSel
2733
7b5a0d80c4a8 Change by cg.
martin
parents: 2732
diff changeset
  4917
        ]
607
a5e0c2bf1370 support of multiple select:rows
ca
parents: 596
diff changeset
  4918
    ].
2636
103067a67ff9 add selectConditionBlock: to enable the selection of a row
ca
parents: 2593
diff changeset
  4919
    ^ nil
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4920
! !
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4921
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4922
!DSVColumnView class methodsFor:'documentation'!
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4923
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4924
version
4794
73a3ffcaf58c class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4772
diff changeset
  4925
    ^ '$Header$'
3757
05d3a8228fdd changed: #at:
Claus Gittinger <cg@exept.de>
parents: 3742
diff changeset
  4926
!
05d3a8228fdd changed: #at:
Claus Gittinger <cg@exept.de>
parents: 3742
diff changeset
  4927
05d3a8228fdd changed: #at:
Claus Gittinger <cg@exept.de>
parents: 3742
diff changeset
  4928
version_CVS
4794
73a3ffcaf58c class: DSVColumnView
Claus Gittinger <cg@exept.de>
parents: 4772
diff changeset
  4929
    ^ '$Header$'
542
e22c45e26653 intitial checkin
ca
parents:
diff changeset
  4930
! !
4161
4722a6575ff0 class: DSVColumnView
ca
parents: 4123
diff changeset
  4931