SelectionInListModelView.st
author Claus Gittinger <cg@exept.de>
Tue, 27 Mar 2018 12:47:11 +0200
changeset 5729 2bbfe888300a
parent 5684 bba053081b4e
child 5733 7b192c9c2a99
permissions -rw-r--r--
#FEATURE by cg class: SelectionInListModelView better support for multiselect added: #selectElements: #selectElements:ifAnyAbsent: comment/format in: #selectWithoutScroll:redraw: #selectedIndex #selection:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1431
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
     1
"
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
     2
 COPYRIGHT (c) 1999 by eXept Software AG
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
     3
	      All Rights Reserved
1431
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
     4
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
     5
 This software is furnished under a license and may be used
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
     6
 only in accordance with the terms of that license and with the
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
     8
 be provided or otherwise made available to, or used by, any
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
     9
 other person.  No title to or ownership of the software is
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    10
 hereby transferred.
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    11
"
1752
1c11b6e4ab37 use isHierarchicalItem instead of hack variable
ca
parents: 1748
diff changeset
    12
"{ Package: 'stx:libwidg2' }"
1c11b6e4ab37 use isHierarchicalItem instead of hack variable
ca
parents: 1748
diff changeset
    13
4692
433047d28c93 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4667
diff changeset
    14
"{ NameSpace: Smalltalk }"
433047d28c93 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4667
diff changeset
    15
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
ListModelView subclass:#SelectionInListModelView
4571
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
    17
	instanceVariableNames:'selection multipleSelectOk actionBlock doubleClickActionBlock
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
    18
		selectConditionBlock buttonMotionAction buttonReleaseAction
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
    19
		highlightMode useIndex ignoreReselect toggleSelect hilightFgColor
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
    20
		hilightBgColor hilightFgColorNoFocus hilightBgColorNoFocus
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
    21
		hilightLevel hilightFrameColor hilightStyle dropSource editorView
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
    22
		openEditorAction closeEditorAction highlightEnterItem enterItem
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
    23
		cursorItem lineMask keyActionStyle returnKeyActionStyle strikeOut
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
    24
		modelChangedDuringButtonPress selectOnButtonPress
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
    25
		selectOnMenuButton minimumEditorHeight extraSpaceAtBottomForDrop'
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
	classVariableNames:'DefaultHilightStyle DefaultHilightBackgroundColor
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
		DefaultHilightForegroundColor DefaultHilightLevel
4648
5c5c17b052fb class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4647
diff changeset
    28
		DefaultHilightFrameColor DefaultHilightBackgroundColorNoFocus
5c5c17b052fb class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4647
diff changeset
    29
		DefaultHilightForegroundColorNoFocus'
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
	poolDictionaries:''
1430
ae9e48cc7b9d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1423
diff changeset
    31
	category:'Views-Lists'
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
!SelectionInListModelView class methodsFor:'documentation'!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
3526
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
    36
claus
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
    37
"
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
    38
self claus
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
    39
"
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
    40
    |top list view|
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
    41
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
    42
    list := List new.
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
    43
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
    44
    1 to:100 do:[:i| list add:('element: ', i printString) ].
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
    45
4948
4745ae5aeaba #BUGFIX
mawalch
parents: 4873
diff changeset
    46
    top  := StandardSystemView extent:300@300.
3526
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
    47
    view := ScrollableView for:SelectionInListModelView miniScroller:true
4948
4745ae5aeaba #BUGFIX
mawalch
parents: 4873
diff changeset
    48
                        origin:0.0@0.0 corner:1.0@1.0 in:top.
3526
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
    49
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
    50
    view minimumEditorHeight:100.
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
    51
    view openEditorAction:[:ln :aGC| |f|
4948
4745ae5aeaba #BUGFIX
mawalch
parents: 4873
diff changeset
    52
        f := SimpleView in:aGC.
4745ae5aeaba #BUGFIX
mawalch
parents: 4873
diff changeset
    53
        f viewBackground:(Color red).
4745ae5aeaba #BUGFIX
mawalch
parents: 4873
diff changeset
    54
        f
3526
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
    55
    ].
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
    56
    view list:list.
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
    57
    top  open.
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
    58
!
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
    59
1431
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    60
copyright
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    61
"
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    62
 COPYRIGHT (c) 1999 by eXept Software AG
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
    63
	      All Rights Reserved
1431
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    64
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    65
 This software is furnished under a license and may be used
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    66
 only in accordance with the terms of that license and with the
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    67
 inclusion of the above copyright notice.   This software may not
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    68
 be provided or otherwise made available to, or used by, any
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    69
 other person.  No title to or ownership of the software is
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    70
 hereby transferred.
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    71
"
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    72
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    73
!
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    74
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
documentation
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
    SelectionInListModelView is mostly like SelectionInListView,
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
    but derives from the ListModelView and thus the list is kept
3387
6da21b625d1e warning comments
Claus Gittinger <cg@exept.de>
parents: 3385
diff changeset
    79
    in the list.
6da21b625d1e warning comments
Claus Gittinger <cg@exept.de>
parents: 3385
diff changeset
    80
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
    [Instance variables:]
2228
5268b9c3be4a add behavior: selectOnButtonMenu; update documentation
ca
parents: 2225
diff changeset
    82
4571
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
    83
        selection               <misc>       the current selection. nil, a number or collection of numbers
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
    84
        multipleSelectOk        <Boolean>    allow/disallow multiple selections( default:false )
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
    85
        selectMenuButton        <Boolean>    enable/disable selection will change on menu pressed
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
    86
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
    87
        buttonReleaseAction     <Action>     called if the mouse button is released
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
    88
        buttonMotionAction      <Action>     called during mouse motion with one argument the point
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
    89
                                             under the mouse.
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
    90
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
    91
        actionBlock             <Block>      action evaluated on single click (0/1/2 arguments)
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
    92
        doubleClickActionBlock  <Block>      action evaluated on double click (0/1/2 arguments)
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
    93
        selectConditionBlock    <Block>      action evaluated before selection changed (0/1/2 arguments)
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
    94
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
    95
        keyActionStyle          <Symbol>     controls how to respond to keyboard selects
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
    96
        returnKeyActionStyle    <Symbol>     controls how to respond to return key
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
    97
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
    98
        useIndex                <Boolean>    representation of the model selection
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
    99
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
   100
        ignoreReselect          <Boolean>    if set, a click on an already selected entry is ignored
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
   101
        toggleSelect            <Boolean>    a click on an entry unselects it and vice versa
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
   102
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
   103
        highlightMode           <Symbol>     how to draw the selection
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
   104
        hilightFgColor          <Color>      foregroundColor of highlighted items
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
   105
        hilightBgColor          <Color>      backgroundColor of highlighted items
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
   106
        hilightLevel            <Integer>    level to draw selections (i.e. for 3D effect)
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
   107
        hilightFrameColor       <Color>      rectangle around highlighted items
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
   108
        hilightStyle            <Boolean>    actions on widget are enabled/disabled
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
   109
        strikeOut               <Boolean>    turn on/off strikeOut mode
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
   110
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
   111
        dropTarget              <DropTarget> keeps information about the drop operation
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
   112
        dropSource              <DropSource> keeps information about the drag operation
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
   113
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
   114
        editorView              <View>       editor on current selected item
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
   115
        openEditorAction        <Action>     action to get an editor on the current selection from user
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
   116
        closeEditorAction       <Action>     action invoked before the editor is closed.
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
   117
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
   118
        enterItem               <Item/nil>   item over which the mouse pointer is located
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
   119
                                             or nil
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
   120
        highlightEnterItem      <Boolean>    enable or disable highlight of enterItem
2323
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
   121
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
    [author:]
4571
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
   123
        Claus Atzkern
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
    [see also:]
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
4571
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
   127
        ListModelView
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
   128
        HierarchicalListView
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
examples
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
"
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   134
									[exBegin]
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
    |top list view|
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
    list := List new.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
    1 to:100 do:[:i| list add:('element: ', i printString) ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
    top  := StandardSystemView new; extent:300@300.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
    view := ScrollableView for:SelectionInListModelView miniScroller:true
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   142
			origin:0.0@0.0 corner:1.0@1.0 in:top.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
    view list:list.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
    top  open.
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   145
									[exEnd]
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   146
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   147
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   148
									[exBegin]
1915
2f57720597d3 bug fix when opening editor on current selected line
ca
parents: 1909
diff changeset
   149
    |top list view|
2f57720597d3 bug fix when opening editor on current selected line
ca
parents: 1909
diff changeset
   150
2f57720597d3 bug fix when opening editor on current selected line
ca
parents: 1909
diff changeset
   151
    list := List new.
2f57720597d3 bug fix when opening editor on current selected line
ca
parents: 1909
diff changeset
   152
2f57720597d3 bug fix when opening editor on current selected line
ca
parents: 1909
diff changeset
   153
    1 to:100 do:[:i| list add:('element: ', i printString) ].
2f57720597d3 bug fix when opening editor on current selected line
ca
parents: 1909
diff changeset
   154
    top  := StandardSystemView new; extent:300@300.
2f57720597d3 bug fix when opening editor on current selected line
ca
parents: 1909
diff changeset
   155
    view := ScrollableView for:SelectionInListModelView miniScroller:true
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   156
			origin:0.0@0.0 corner:1.0@1.0 in:top.
1915
2f57720597d3 bug fix when opening editor on current selected line
ca
parents: 1909
diff changeset
   157
    view list:list.
2f57720597d3 bug fix when opening editor on current selected line
ca
parents: 1909
diff changeset
   158
2f57720597d3 bug fix when opening editor on current selected line
ca
parents: 1909
diff changeset
   159
    view openEditorAction:[:ln :aGC| |field|
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   160
	field := EditField new.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   161
	field level:0.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   162
	field acceptOnLostFocus:true.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   163
	field acceptAction:[:x| list at:ln put:(field contents) ].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   164
	field font:(aGC font).
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   165
	field contents:(list at:ln).
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   166
	field
1915
2f57720597d3 bug fix when opening editor on current selected line
ca
parents: 1909
diff changeset
   167
    ].
2f57720597d3 bug fix when opening editor on current selected line
ca
parents: 1909
diff changeset
   168
    top open.
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   169
									[exEnd]
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   170
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   171
									[exBegin]
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
    |top list view item|
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
    list := HierarchicalList new.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
    item := HierarchicalItem::Example labeled:'Test'.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
    item expand.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
    list showRoot:false.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
    list root:item.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
    top  := StandardSystemView new; extent:300@300.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
    view := ScrollableView for:SelectionInListModelView miniScroller:true
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   182
			origin:0.0@0.0 corner:1.0@1.0 in:top.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
    view list:list.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
    view doubleClickAction:[:i| (list at:i) toggleExpand ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
    top  open.
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   187
									[exEnd]
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
!SelectionInListModelView class methodsFor:'defaults'!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
updateStyleCache
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
    "extract values from the styleSheet and cache them in class variables"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
    <resource: #style   (
3927
Claus Gittinger <cg@exept.de>
parents: 3918
diff changeset
   198
                        #'selection.hilightForegroundColor' #'selection.hilightBackgroundColor'
4648
5c5c17b052fb class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4647
diff changeset
   199
                        #'selection.hilightForegroundColorNoFocus' #'selection.hilightBackgroundColorNoFocus'
3927
Claus Gittinger <cg@exept.de>
parents: 3918
diff changeset
   200
                        #'selection.hilightFrameColor'      #'selection.hilightLevel'
Claus Gittinger <cg@exept.de>
parents: 3918
diff changeset
   201
                        #'selection.foregroundColor'        #'selection.backgroundColor'
Claus Gittinger <cg@exept.de>
parents: 3918
diff changeset
   202
                        #'selection.shadowColor'            #'selection.lightColor'
Claus Gittinger <cg@exept.de>
parents: 3918
diff changeset
   203
                        #'selection.font'                   #'selection.hilightStyle'
Claus Gittinger <cg@exept.de>
parents: 3918
diff changeset
   204
                        #'text.foregroundColor'
Claus Gittinger <cg@exept.de>
parents: 3918
diff changeset
   205
                        )>
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
    DefaultHilightForegroundColor  := StyleSheet colorAt:'selection.hilightForegroundColor'.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
    DefaultHilightBackgroundColor  := StyleSheet colorAt:'selection.hilightBackgroundColor'.
4648
5c5c17b052fb class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4647
diff changeset
   209
    DefaultHilightForegroundColorNoFocus  := StyleSheet colorAt:'selection.hilightForegroundColorNoFocus'.
5c5c17b052fb class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4647
diff changeset
   210
    DefaultHilightBackgroundColorNoFocus  := StyleSheet colorAt:'selection.hilightBackgroundColorNoFocus'.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
    DefaultHilightFrameColor       := StyleSheet colorAt:'selection.hilightFrameColor'.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
    DefaultHilightLevel            := StyleSheet at:'selection.hilightLevel' default:0.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
    DefaultHilightStyle            := StyleSheet at:'selection.hilightStyle' default:(StyleSheet name).
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
    DefaultForegroundColor         := StyleSheet colorAt:'selection.foregroundColor'.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
    DefaultBackgroundColor         := StyleSheet colorAt:'selection.backgroundColor'.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
    DefaultShadowColor             := StyleSheet colorAt:'selection.shadowColor'.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
    DefaultLightColor              := StyleSheet colorAt:'selection.lightColor'.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
    DefaultForegroundColor isNil ifTrue:[
4515
6ca475e94989 class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4512
diff changeset
   220
        DefaultForegroundColor := StyleSheet colorAt:'text.foregroundColor' default:Color black
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
    ].
3927
Claus Gittinger <cg@exept.de>
parents: 3918
diff changeset
   222
Claus Gittinger <cg@exept.de>
parents: 3918
diff changeset
   223
    DefaultFont := SelectionInListView defaultFont. 
Claus Gittinger <cg@exept.de>
parents: 3918
diff changeset
   224
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   225
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
     self updateStyleCache
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
3927
Claus Gittinger <cg@exept.de>
parents: 3918
diff changeset
   229
    "Modified: / 14-08-2010 / 11:55:20 / cg"
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
!SelectionInListModelView methodsFor:'accessing'!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
2377
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
   234
cursorLine
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
   235
    "returns the index of the cursor line or 0
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
   236
    "
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
   237
    |index|
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
   238
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
   239
    cursorItem isNil ifTrue:[^ 0 ].
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
   240
2408
8b0d11537dc0 accessing list indirect
ca
parents: 2404
diff changeset
   241
    index := self identityIndexOf:cursorItem.
2377
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
   242
    index == 0 ifTrue:[ cursorItem := nil ].
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
   243
    ^ index
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
   244
!
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
   245
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
list:aList
1547
f72d75aaec14 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1545
diff changeset
   247
    self deselectWithoutRedraw.
2867
bbdc2721ec0b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2856
diff changeset
   248
    ^ super list:aList
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1772
diff changeset
   251
!SelectionInListModelView methodsFor:'accessing-actions'!
1641
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   252
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   253
action
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   254
    "get the action block to be performed on select
2416
dd563121a967 instead of #numArgs use: #valueWithOptionalArgument:and
ca
parents: 2413
diff changeset
   255
dd563121a967 instead of #numArgs use: #valueWithOptionalArgument:and
ca
parents: 2413
diff changeset
   256
     The arguments to the block are:
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   257
	- no argument
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   258
	-  1 argument     index or item
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   259
	-  2 argument     index or item, self
1641
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   260
    "
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   261
    ^ actionBlock
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   262
!
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   263
4700
29ddd6d5a8e7 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4692
diff changeset
   264
action:anUpToTwoArgBlock
1641
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   265
    "set the action block to be performed on select
2416
dd563121a967 instead of #numArgs use: #valueWithOptionalArgument:and
ca
parents: 2413
diff changeset
   266
dd563121a967 instead of #numArgs use: #valueWithOptionalArgument:and
ca
parents: 2413
diff changeset
   267
     The arguments to the block are:
4700
29ddd6d5a8e7 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4692
diff changeset
   268
        - no argument
29ddd6d5a8e7 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4692
diff changeset
   269
        -  1 argument     index or item
29ddd6d5a8e7 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4692
diff changeset
   270
        -  2 argument     index or item, self
1641
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   271
    "
4700
29ddd6d5a8e7 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4692
diff changeset
   272
    actionBlock := anUpToTwoArgBlock
1641
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   273
!
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   274
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   275
doubleClickAction
2416
dd563121a967 instead of #numArgs use: #valueWithOptionalArgument:and
ca
parents: 2413
diff changeset
   276
    "get the action block to be performed on doubleclick.
dd563121a967 instead of #numArgs use: #valueWithOptionalArgument:and
ca
parents: 2413
diff changeset
   277
dd563121a967 instead of #numArgs use: #valueWithOptionalArgument:and
ca
parents: 2413
diff changeset
   278
     The arguments to the block are:
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   279
	- no argument
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   280
	-  1 argument     selectedIndex
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   281
	-  2 argument     selectedIndex, self
1641
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   282
    "
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   283
    ^ doubleClickActionBlock
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   284
!
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   285
4700
29ddd6d5a8e7 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4692
diff changeset
   286
doubleClickAction:anUpToTwoArgBlock
2416
dd563121a967 instead of #numArgs use: #valueWithOptionalArgument:and
ca
parents: 2413
diff changeset
   287
    "set the action block to be performed on doubleclick.
dd563121a967 instead of #numArgs use: #valueWithOptionalArgument:and
ca
parents: 2413
diff changeset
   288
dd563121a967 instead of #numArgs use: #valueWithOptionalArgument:and
ca
parents: 2413
diff changeset
   289
     The arguments to the block are:
4700
29ddd6d5a8e7 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4692
diff changeset
   290
        - no argument
29ddd6d5a8e7 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4692
diff changeset
   291
        -  1 argument     selectedIndex
29ddd6d5a8e7 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4692
diff changeset
   292
        -  2 argument     selectedIndex, self
1641
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   293
    "
4700
29ddd6d5a8e7 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4692
diff changeset
   294
    doubleClickActionBlock := anUpToTwoArgBlock
1641
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   295
!
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   296
2418
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   297
keyActionStyle
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   298
    "defines how the view should respond to alpha-keys pressed.
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   299
     Possible values are:
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   300
	#select               -> will select next entry starting with that
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   301
				 character and perform the click-action
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   302
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   303
	#selectAndDoubleclick -> will select next & perform double-click action
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   304
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   305
	#pass                 -> will pass key to superclass (i.e. no special treatment)
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   306
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   307
	nil                   -> will ignore key
2418
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   308
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   309
     the default (set in #initialize) is #select
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   310
    "
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   311
    ^ keyActionStyle
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   312
!
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   313
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   314
keyActionStyle:aSymbol
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   315
    "defines how the view should respond to alpha-keys pressed.
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   316
     Possible values are:
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   317
	#select               -> will select next entry starting with that
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   318
				 character and perform the click-action
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   319
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   320
	#selectAndDoubleclick -> will select next & perform double-click action
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   321
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   322
	#pass                 -> will pass key to superclass (i.e. no special treatment)
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   323
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   324
	nil                   -> will ignore key
2418
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   325
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   326
     the default (set in #initialize) is #select
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   327
    "
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   328
    keyActionStyle := aSymbol
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   329
!
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   330
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   331
returnKeyActionStyle
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   332
    "defines how the view should respond to a return key pressed.
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   333
     Possible values are:
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   334
	#doubleClick          -> perform double-click action
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   335
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   336
	#pass                 -> will pass key to superclass (i.e. no special treatment)
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   337
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   338
	nil                   -> will ignore key
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   339
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   340
     the default (set in #initialize) is #doubleClick
2418
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   341
    "
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   342
    ^ returnKeyActionStyle
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   343
!
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   344
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   345
returnKeyActionStyle:aSymbol
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   346
    "defines how the view should respond to a return key pressed.
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   347
     Possible values are:
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   348
	#doubleClick          -> perform double-click action
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   349
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   350
	#pass                 -> will pass key to superclass (i.e. no special treatment)
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   351
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   352
	nil                   -> will ignore key
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   353
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   354
     the default (set in #initialize) is #doubleClick
2418
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   355
    "
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   356
    returnKeyActionStyle := aSymbol
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   357
!
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   358
1641
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   359
selectConditionBlock
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   360
    "set the conditionBlock; this block is evaluated before a selection
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   361
     change is performed; the change will not be done, if the evaluation
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   362
     returns false
2416
dd563121a967 instead of #numArgs use: #valueWithOptionalArgument:and
ca
parents: 2413
diff changeset
   363
dd563121a967 instead of #numArgs use: #valueWithOptionalArgument:and
ca
parents: 2413
diff changeset
   364
     The arguments to the block are:
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   365
	- no argument
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   366
	-  1 argument     index
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   367
	-  2 argument     index, isForAdd
1641
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   368
    "
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   369
    ^ selectConditionBlock
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   370
!
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   371
4700
29ddd6d5a8e7 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4692
diff changeset
   372
selectConditionBlock:anUpToTwoArgBlock
1641
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   373
    "set the conditionBlock; this block is evaluated before a selection
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   374
     change is performed; the change will not be done, if the evaluation
2416
dd563121a967 instead of #numArgs use: #valueWithOptionalArgument:and
ca
parents: 2413
diff changeset
   375
     returns false.
dd563121a967 instead of #numArgs use: #valueWithOptionalArgument:and
ca
parents: 2413
diff changeset
   376
dd563121a967 instead of #numArgs use: #valueWithOptionalArgument:and
ca
parents: 2413
diff changeset
   377
     The arguments to the block are:
4700
29ddd6d5a8e7 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4692
diff changeset
   378
        - no argument
29ddd6d5a8e7 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4692
diff changeset
   379
        -  1 argument     index
29ddd6d5a8e7 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4692
diff changeset
   380
        -  2 argument     index, isForAdd
1641
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   381
    "
4700
29ddd6d5a8e7 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4692
diff changeset
   382
    selectConditionBlock := anUpToTwoArgBlock.
1641
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   383
! !
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
   384
2418
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   385
!SelectionInListModelView methodsFor:'accessing-attributes'!
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   386
2323
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
   387
highlightEnterItem
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
   388
    "enable or disable to highlight the item over which the mouse pointer is located
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
   389
    "
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
   390
    ^ highlightEnterItem
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
   391
!
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
   392
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
   393
highlightEnterItem:aBool
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
   394
    "enable or disable to highlight the item over which the mouse pointer is located
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
   395
    "
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
   396
    highlightEnterItem ~~ aBool ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   397
	highlightEnterItem := aBool.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   398
	self pointerEntersItem:nil.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   399
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   400
	highlightEnterItem ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   401
	    self enableMotionEvents
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   402
	].
2323
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
   403
    ].
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
   404
!
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
   405
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   406
highlightMode
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   407
    "get the mode how to draw a selected line:
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   408
	#line           draw whole line selected
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   409
	#label          draw label selected
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   410
	#dropMode       set during drop
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   411
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   412
    ^ highlightMode
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   413
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   414
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   415
highlightMode:aMode
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   416
    "set the mode how to draw a selected line:
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   417
	#line           draw whole line selected
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   418
	#label          draw label selected
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   419
	#dropMode       set during drop
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   420
    "
2418
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   421
    highlightMode ~~ aMode ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   422
	highlightMode := aMode.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   423
	self invalidateSelection.
2418
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   424
    ].
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   425
!
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   426
3338
01ad784543fc no underline-highlighting
Claus Gittinger <cg@exept.de>
parents: 3275
diff changeset
   427
highlightWithUnderline
01ad784543fc no underline-highlighting
Claus Gittinger <cg@exept.de>
parents: 3275
diff changeset
   428
    ^ false
01ad784543fc no underline-highlighting
Claus Gittinger <cg@exept.de>
parents: 3275
diff changeset
   429
!
01ad784543fc no underline-highlighting
Claus Gittinger <cg@exept.de>
parents: 3275
diff changeset
   430
2644
78ca3bd5eef1 prepared for table
ca
parents: 2642
diff changeset
   431
hilightBackgroundColor
78ca3bd5eef1 prepared for table
ca
parents: 2642
diff changeset
   432
    "returns the color used for the hilighted background
78ca3bd5eef1 prepared for table
ca
parents: 2642
diff changeset
   433
    "
78ca3bd5eef1 prepared for table
ca
parents: 2642
diff changeset
   434
    ^ hilightBgColor
78ca3bd5eef1 prepared for table
ca
parents: 2642
diff changeset
   435
!
78ca3bd5eef1 prepared for table
ca
parents: 2642
diff changeset
   436
78ca3bd5eef1 prepared for table
ca
parents: 2642
diff changeset
   437
hilightForegroundColor
78ca3bd5eef1 prepared for table
ca
parents: 2642
diff changeset
   438
    "returns the color used for the hilighted foreground
78ca3bd5eef1 prepared for table
ca
parents: 2642
diff changeset
   439
    "
78ca3bd5eef1 prepared for table
ca
parents: 2642
diff changeset
   440
    ^ hilightFgColor
78ca3bd5eef1 prepared for table
ca
parents: 2642
diff changeset
   441
!
78ca3bd5eef1 prepared for table
ca
parents: 2642
diff changeset
   442
2418
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   443
strikeout
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   444
    "turn on/off strikeOut mode
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   445
    "
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   446
    ^ strikeOut
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   447
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   448
2418
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   449
strikeout:aBoolean
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   450
    "turn on/off strikeOut mode
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   451
    "
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   452
    strikeOut ~~ aBoolean ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   453
	strikeOut := aBoolean.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   454
	self invalidateSelection.
2418
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   455
    ].
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   456
! !
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   457
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   458
!SelectionInListModelView methodsFor:'accessing-behavior'!
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   459
1741
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   460
ignoreReselect
5663
6d448f6cb44d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5550
diff changeset
   461
    "controls if clicking on an already selected item should
6d448f6cb44d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5550
diff changeset
   462
     be ignored or should perform the select action again.
6d448f6cb44d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5550
diff changeset
   463
     By default, these are ignored"
6d448f6cb44d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5550
diff changeset
   464
1741
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   465
    ^ ignoreReselect
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   466
!
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   467
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   468
ignoreReselect:aBoolean
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   469
    "set/clear the ignoreReselect flag -
1741
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   470
     if set, a click on an already selected entry is ignored.
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   471
     Otherwise the notification is done, even if no
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   472
     change in the selection occurs.
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   473
     (for example, in browser to update a method).
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   474
     Setting ignoreReselect to false makes sense if data is shown
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   475
     which may change by itself (i.e. without the user doing anything)
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   476
     For example, the inspector uses this, and redisplays the value,
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   477
     if the selection is the same.
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   478
     The default is true, meaning that a click on an already selected
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   479
     does not lead to a notification via the actionBlock/change mechanism.
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   480
    "
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   481
    ignoreReselect := aBoolean
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   482
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   483
!
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   484
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   485
multipleSelectOk
4667
dc071f35a463 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4652
diff changeset
   486
    "return true if multiple selections are allowed; the default is false"
dc071f35a463 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4652
diff changeset
   487
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   488
    ^ multipleSelectOk
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   489
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   490
4667
dc071f35a463 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4652
diff changeset
   491
multipleSelectOk:aBoolean
2381
713c81fd86ad bugfix: update selection if multipleSelecktOk changed
ca
parents: 2377
diff changeset
   492
    "allow/disallow multiple selections. If enabled, the
713c81fd86ad bugfix: update selection if multipleSelecktOk changed
ca
parents: 2377
diff changeset
   493
     user may select multiple entries in the list, and the program
713c81fd86ad bugfix: update selection if multipleSelecktOk changed
ca
parents: 2377
diff changeset
   494
     always gets a collection of selected items (indexes if useIndex is true,
4667
dc071f35a463 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4652
diff changeset
   495
     values otherwise). The default is false, for single selections."
dc071f35a463 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4652
diff changeset
   496
2381
713c81fd86ad bugfix: update selection if multipleSelecktOk changed
ca
parents: 2377
diff changeset
   497
    |state|
713c81fd86ad bugfix: update selection if multipleSelecktOk changed
ca
parents: 2377
diff changeset
   498
4667
dc071f35a463 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4652
diff changeset
   499
    state := aBoolean ? false.
2381
713c81fd86ad bugfix: update selection if multipleSelecktOk changed
ca
parents: 2377
diff changeset
   500
713c81fd86ad bugfix: update selection if multipleSelecktOk changed
ca
parents: 2377
diff changeset
   501
    multipleSelectOk == state ifTrue:[ ^ self ].
713c81fd86ad bugfix: update selection if multipleSelecktOk changed
ca
parents: 2377
diff changeset
   502
713c81fd86ad bugfix: update selection if multipleSelecktOk changed
ca
parents: 2377
diff changeset
   503
    selection isNil ifTrue:[
4667
dc071f35a463 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4652
diff changeset
   504
        multipleSelectOk := state.
dc071f35a463 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4652
diff changeset
   505
        ^ self.
2381
713c81fd86ad bugfix: update selection if multipleSelecktOk changed
ca
parents: 2377
diff changeset
   506
    ].
713c81fd86ad bugfix: update selection if multipleSelecktOk changed
ca
parents: 2377
diff changeset
   507
713c81fd86ad bugfix: update selection if multipleSelecktOk changed
ca
parents: 2377
diff changeset
   508
    multipleSelectOk ifFalse:[
4667
dc071f35a463 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4652
diff changeset
   509
        selection := Array with:selection.
dc071f35a463 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4652
diff changeset
   510
        multipleSelectOk := true.
dc071f35a463 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4652
diff changeset
   511
        ^ self
2381
713c81fd86ad bugfix: update selection if multipleSelecktOk changed
ca
parents: 2377
diff changeset
   512
    ].
713c81fd86ad bugfix: update selection if multipleSelecktOk changed
ca
parents: 2377
diff changeset
   513
713c81fd86ad bugfix: update selection if multipleSelecktOk changed
ca
parents: 2377
diff changeset
   514
    selection size == 1 ifTrue:[
4667
dc071f35a463 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4652
diff changeset
   515
        selection := selection first.
2381
713c81fd86ad bugfix: update selection if multipleSelecktOk changed
ca
parents: 2377
diff changeset
   516
    ] ifFalse:[
4667
dc071f35a463 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4652
diff changeset
   517
        self selection:nil
2381
713c81fd86ad bugfix: update selection if multipleSelecktOk changed
ca
parents: 2377
diff changeset
   518
    ].
713c81fd86ad bugfix: update selection if multipleSelecktOk changed
ca
parents: 2377
diff changeset
   519
    multipleSelectOk := false.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   520
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   521
2815
0c05fbd33df6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2792
diff changeset
   522
selectOnButtonMenu
3438
a8ce9823cc1e english
Claus Gittinger <cg@exept.de>
parents: 3391
diff changeset
   523
    <resource: #obsolete>
a8ce9823cc1e english
Claus Gittinger <cg@exept.de>
parents: 3391
diff changeset
   524
    self obsoleteMethodWarning:'use selectOnMenuButton'.
a8ce9823cc1e english
Claus Gittinger <cg@exept.de>
parents: 3391
diff changeset
   525
    ^ self selectOnMenuButton
2228
5268b9c3be4a add behavior: selectOnButtonMenu; update documentation
ca
parents: 2225
diff changeset
   526
!
5268b9c3be4a add behavior: selectOnButtonMenu; update documentation
ca
parents: 2225
diff changeset
   527
2815
0c05fbd33df6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2792
diff changeset
   528
selectOnButtonMenu:aBoolean
3438
a8ce9823cc1e english
Claus Gittinger <cg@exept.de>
parents: 3391
diff changeset
   529
    <resource: #obsolete>
a8ce9823cc1e english
Claus Gittinger <cg@exept.de>
parents: 3391
diff changeset
   530
    self obsoleteMethodWarning:'use selectOnMenuButton:'.
a8ce9823cc1e english
Claus Gittinger <cg@exept.de>
parents: 3391
diff changeset
   531
    self selectOnMenuButton:aBoolean.
2228
5268b9c3be4a add behavior: selectOnButtonMenu; update documentation
ca
parents: 2225
diff changeset
   532
!
5268b9c3be4a add behavior: selectOnButtonMenu; update documentation
ca
parents: 2225
diff changeset
   533
3370
5199f62a817d Add posibility to configure the select behaviour (select on button press
ab
parents: 3367
diff changeset
   534
selectOnButtonPress
5199f62a817d Add posibility to configure the select behaviour (select on button press
ab
parents: 3367
diff changeset
   535
    "get the selectOnButtonPress flag - see method #selectOnButtonPress: for more details
5199f62a817d Add posibility to configure the select behaviour (select on button press
ab
parents: 3367
diff changeset
   536
    "
5199f62a817d Add posibility to configure the select behaviour (select on button press
ab
parents: 3367
diff changeset
   537
    ^ selectOnButtonPress ? true
5199f62a817d Add posibility to configure the select behaviour (select on button press
ab
parents: 3367
diff changeset
   538
!
5199f62a817d Add posibility to configure the select behaviour (select on button press
ab
parents: 3367
diff changeset
   539
5199f62a817d Add posibility to configure the select behaviour (select on button press
ab
parents: 3367
diff changeset
   540
selectOnButtonPress:aBoolean
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   541
    "set/clear the selectOnButtonPress flag -
3370
5199f62a817d Add posibility to configure the select behaviour (select on button press
ab
parents: 3367
diff changeset
   542
     if set (default), the selection changed on button press. This was the
5199f62a817d Add posibility to configure the select behaviour (select on button press
ab
parents: 3367
diff changeset
   543
     behaviour until now.
5199f62a817d Add posibility to configure the select behaviour (select on button press
ab
parents: 3367
diff changeset
   544
     if cleared, the selection is changed on button release. This new behaviour allows to start
5199f62a817d Add posibility to configure the select behaviour (select on button press
ab
parents: 3367
diff changeset
   545
     a drag without changing the real selection. The selection is changed during the
5199f62a817d Add posibility to configure the select behaviour (select on button press
ab
parents: 3367
diff changeset
   546
     drag and restored after the drop.
5199f62a817d Add posibility to configure the select behaviour (select on button press
ab
parents: 3367
diff changeset
   547
    "
5199f62a817d Add posibility to configure the select behaviour (select on button press
ab
parents: 3367
diff changeset
   548
    selectOnButtonPress := aBoolean
5199f62a817d Add posibility to configure the select behaviour (select on button press
ab
parents: 3367
diff changeset
   549
!
5199f62a817d Add posibility to configure the select behaviour (select on button press
ab
parents: 3367
diff changeset
   550
3438
a8ce9823cc1e english
Claus Gittinger <cg@exept.de>
parents: 3391
diff changeset
   551
selectOnMenuButton
a8ce9823cc1e english
Claus Gittinger <cg@exept.de>
parents: 3391
diff changeset
   552
    "define the button-menu-press behavior; if true the line under the mouse
a8ce9823cc1e english
Claus Gittinger <cg@exept.de>
parents: 3391
diff changeset
   553
     will be selected before the menu is opened. Otherwise the menu is opened
a8ce9823cc1e english
Claus Gittinger <cg@exept.de>
parents: 3391
diff changeset
   554
     on the current selection."
a8ce9823cc1e english
Claus Gittinger <cg@exept.de>
parents: 3391
diff changeset
   555
3461
eb3980ed82ad bugfix: selectTreeElementOnRightClick behaviour
ca
parents: 3455
diff changeset
   556
    selectOnMenuButton isNil ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   557
	^ UserPreferences current selectOnRightClick
3461
eb3980ed82ad bugfix: selectTreeElementOnRightClick behaviour
ca
parents: 3455
diff changeset
   558
    ].
3438
a8ce9823cc1e english
Claus Gittinger <cg@exept.de>
parents: 3391
diff changeset
   559
    ^ selectOnMenuButton
a8ce9823cc1e english
Claus Gittinger <cg@exept.de>
parents: 3391
diff changeset
   560
!
a8ce9823cc1e english
Claus Gittinger <cg@exept.de>
parents: 3391
diff changeset
   561
a8ce9823cc1e english
Claus Gittinger <cg@exept.de>
parents: 3391
diff changeset
   562
selectOnMenuButton:aBoolean
a8ce9823cc1e english
Claus Gittinger <cg@exept.de>
parents: 3391
diff changeset
   563
    "define the button-menu-press behavior; if true the line under the mouse
a8ce9823cc1e english
Claus Gittinger <cg@exept.de>
parents: 3391
diff changeset
   564
     will be selected before the menu is opened. Otherwise the menu is opened
a8ce9823cc1e english
Claus Gittinger <cg@exept.de>
parents: 3391
diff changeset
   565
     on the current selection."
a8ce9823cc1e english
Claus Gittinger <cg@exept.de>
parents: 3391
diff changeset
   566
a8ce9823cc1e english
Claus Gittinger <cg@exept.de>
parents: 3391
diff changeset
   567
    selectOnMenuButton := aBoolean.
a8ce9823cc1e english
Claus Gittinger <cg@exept.de>
parents: 3391
diff changeset
   568
!
a8ce9823cc1e english
Claus Gittinger <cg@exept.de>
parents: 3391
diff changeset
   569
1741
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   570
toggleSelect
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   571
    "get the toggleSelect flag - see method #toggleSelect: for more details
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   572
    "
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   573
    ^ toggleSelect
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   574
!
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   575
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   576
toggleSelect:aBoolean
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   577
    "turn on/off toggle select. If true, clicking on a selected entry
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   578
     unselects it and vice versa. The default is false, which means
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   579
     that clicking on an already selected entry does not change its
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   580
     select status (see also ignoreReselect:).
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   581
    "
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   582
    toggleSelect := aBoolean.
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   583
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   584
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   585
!
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
   586
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   587
useIndex
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   588
    "set/clear the useIndex flag.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   589
     the selection writen to the model are the indices into the list
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   590
     or the elements selected.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   591
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   592
    ^ useIndex
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   593
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   594
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   595
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   596
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   597
useIndex:aBoolean
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   598
    "set/clear the useIndex flag.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   599
     the selection writen to the model are the indices into the list
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   600
     or the elements selected.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   601
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   602
    useIndex := aBoolean ? true
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   603
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   604
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   605
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   606
2404
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   607
!SelectionInListModelView methodsFor:'accessing-editor'!
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   608
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   609
closeEditor
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   610
    "close the current editor
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   611
    "
2596
771e23c6d9cf access actions by call and not by reference
ca
parents: 2572
diff changeset
   612
    |editor action|
2404
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   613
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   614
    (editor := editorView) notNil ifTrue:[
2856
d3a3253d3851 forget editor after it really did close itself.
Claus Gittinger <cg@exept.de>
parents: 2821
diff changeset
   615
"/        editorView := nil.
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   616
	action := self closeEditorAction.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   617
	action notNil ifTrue:[action value:editor.].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   618
	editor destroy.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   619
	editorView := nil.
2404
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   620
    ].
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   621
!
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   622
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   623
closeEditorAction
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   624
    "get the block which is evaluated before the editor is closed; the argument
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   625
     to the action is the editor.
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   626
    "
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   627
    ^ closeEditorAction
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   628
!
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   629
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   630
closeEditorAction:anOneArgAction
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   631
    "get the block which is evaluated before the editor is closed; the argument
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   632
     to the action is the editor.
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   633
    "
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   634
    closeEditorAction := anOneArgAction.
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   635
!
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   636
2527
a07a74ff7e3e add a hasOpenEditor selector
penk
parents: 2522
diff changeset
   637
hasOpenEditor
a07a74ff7e3e add a hasOpenEditor selector
penk
parents: 2522
diff changeset
   638
a07a74ff7e3e add a hasOpenEditor selector
penk
parents: 2522
diff changeset
   639
    ^ editorView notNil
a07a74ff7e3e add a hasOpenEditor selector
penk
parents: 2522
diff changeset
   640
!
a07a74ff7e3e add a hasOpenEditor selector
penk
parents: 2522
diff changeset
   641
3524
854b6484c001 minimumEditorHeight
ca
parents: 3482
diff changeset
   642
minimumEditorHeight
854b6484c001 minimumEditorHeight
ca
parents: 3482
diff changeset
   643
    "answer the minumium height of the editor or nil.
854b6484c001 minimumEditorHeight
ca
parents: 3482
diff changeset
   644
     If the height is nil the height of the line is used"
854b6484c001 minimumEditorHeight
ca
parents: 3482
diff changeset
   645
854b6484c001 minimumEditorHeight
ca
parents: 3482
diff changeset
   646
    ^ minimumEditorHeight
854b6484c001 minimumEditorHeight
ca
parents: 3482
diff changeset
   647
!
854b6484c001 minimumEditorHeight
ca
parents: 3482
diff changeset
   648
854b6484c001 minimumEditorHeight
ca
parents: 3482
diff changeset
   649
minimumEditorHeight:aHeightOrNil
854b6484c001 minimumEditorHeight
ca
parents: 3482
diff changeset
   650
    "set the minumium height of the editor or nil.
854b6484c001 minimumEditorHeight
ca
parents: 3482
diff changeset
   651
     If the height is nil the height of the line is used"
854b6484c001 minimumEditorHeight
ca
parents: 3482
diff changeset
   652
854b6484c001 minimumEditorHeight
ca
parents: 3482
diff changeset
   653
    minimumEditorHeight := aHeightOrNil.
854b6484c001 minimumEditorHeight
ca
parents: 3482
diff changeset
   654
!
854b6484c001 minimumEditorHeight
ca
parents: 3482
diff changeset
   655
2404
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   656
openEditor
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   657
    "opens the editor on the current selection;
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   658
     returns the editorView or nil if no openEditorAction is defined
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   659
     or no single selection exists ...
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   660
    "
2596
771e23c6d9cf access actions by call and not by reference
ca
parents: 2572
diff changeset
   661
    |lnNr action|
2404
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   662
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   663
    self closeEditor.
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   664
    shown ifFalse:[^ nil].
2596
771e23c6d9cf access actions by call and not by reference
ca
parents: 2572
diff changeset
   665
771e23c6d9cf access actions by call and not by reference
ca
parents: 2572
diff changeset
   666
    action := self openEditorAction.
771e23c6d9cf access actions by call and not by reference
ca
parents: 2572
diff changeset
   667
    action isNil ifTrue:[^ nil].
771e23c6d9cf access actions by call and not by reference
ca
parents: 2572
diff changeset
   668
2404
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   669
    lnNr := self selectedIndex.
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   670
    lnNr == 0 ifTrue:[^ nil].
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   671
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   672
    self makeSelectionVisible.
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   673
2596
771e23c6d9cf access actions by call and not by reference
ca
parents: 2572
diff changeset
   674
    editorView := action valueWithOptionalArgument:lnNr and:self.
2404
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   675
    editorView isNil ifTrue:[^ nil].
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   676
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   677
    editorView superView isNil ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   678
	self addSubView:editorView
2404
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   679
    ].
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   680
    self computeEditorLayout.
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   681
    editorView realize.
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   682
    self windowGroup focusView:editorView.
2416
dd563121a967 instead of #numArgs use: #valueWithOptionalArgument:and
ca
parents: 2413
diff changeset
   683
    ^ editorView
2404
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   684
!
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   685
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   686
openEditorAction
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   687
    "get the block which is evaluated to get the editor which is set for the
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   688
     line; the arguments to the block is the line number and the widget itself
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   689
    "
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   690
    ^ openEditorAction
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   691
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   692
!
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   693
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   694
openEditorAction:aTwoArgAction
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   695
    "set the block which is evaluated to get the editor which is set for the
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   696
     line; the arguments to the block is the line number and the widget itself
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   697
    "
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   698
    openEditorAction := aTwoArgAction.
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   699
! !
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2401
diff changeset
   700
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   701
!SelectionInListModelView methodsFor:'change & update'!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   702
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   703
argForChangeMessage
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   704
    "return the argument for a selectionChange;
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   705
     depending on the setting of useIndex, this is either the numeric
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   706
     index of the selection or the value (i.e. the string)
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   707
    "
2409
68095c891ceb reuse selection methods (prepared for common controller)
ca
parents: 2408
diff changeset
   708
    useIndex         ifFalse:[ ^ self selectionValue ].
68095c891ceb reuse selection methods (prepared for common controller)
ca
parents: 2408
diff changeset
   709
    multipleSelectOk ifFalse:[ ^ selection ? 0 ].
68095c891ceb reuse selection methods (prepared for common controller)
ca
parents: 2408
diff changeset
   710
    ^ selection ? #()
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   711
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   712
1755
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
   713
contentsChanged
4258
d6ea83906c4e class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4242
diff changeset
   714
    "this one is sent, whenever contents changes its size"
d6ea83906c4e class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4242
diff changeset
   715
1755
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
   716
    super contentsChanged.
3482
1ee6b7daa983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3461
diff changeset
   717
    self computeEditorLayout.
1755
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
   718
!
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
   719
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
   720
lineChangedAt:aLnNr with:arg
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
   721
    super lineChangedAt:aLnNr with:arg.
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
   722
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
   723
    (editorView notNil and:[aLnNr == self selectedIndex]) ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   724
	self computeEditorLayout.
1755
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
   725
    ]
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
   726
!
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
   727
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   728
listSizeChanged:aLnNr nLines:aDeltaLines
1563
f67940c89977 checkin from browser
ca
parents: 1561
diff changeset
   729
    |changed cnts|
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   730
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   731
    super listSizeChanged:aLnNr nLines:aDeltaLines.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   732
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   733
    selection isNil ifTrue:[^ self].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   734
2408
8b0d11537dc0 accessing list indirect
ca
parents: 2404
diff changeset
   735
    self size == 0 ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   736
	selection := nil.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   737
	^ self selectionChanged
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   738
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   739
1563
f67940c89977 checkin from browser
ca
parents: 1561
diff changeset
   740
    multipleSelectOk ifFalse:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   741
	selection < aLnNr ifTrue:[^ self].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   742
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   743
	selection := selection + aDeltaLines.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   744
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   745
	(aDeltaLines < 0 and:[selection < aLnNr]) ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   746
	    selection := nil.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   747
	    ^ self selectionChanged
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   748
	]
1563
f67940c89977 checkin from browser
ca
parents: 1561
diff changeset
   749
    ] ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   750
	changed := false.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   751
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   752
	aDeltaLines < 0  ifFalse:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   753
	    selection keysAndValuesDo:[:i :ln|
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   754
		ln >= aLnNr ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   755
		    changed := true.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   756
		    selection at:i put:(ln + aDeltaLines)
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   757
		]
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   758
	    ]
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   759
	] ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   760
	    cnts := 0.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   761
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   762
	    selection keysAndValuesDo:[:i :ln||new|
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   763
		ln >= aLnNr ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   764
		    changed := true.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   765
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   766
		    (new := ln + aDeltaLines) < aLnNr ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   767
			cnts := cnts + 1.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   768
			new  := nil
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   769
		    ].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   770
		    selection at:i put:new
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   771
		]
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   772
	    ].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   773
	    cnts ~~ 0 ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   774
		cnts == selection size ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   775
		    selection := nil
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   776
		] ifFalse:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   777
		    selection := selection select:[:ln| ln notNil]
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   778
		].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   779
		^ self selectionChanged.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   780
	    ].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   781
	].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   782
	changed ifFalse:[^ self].
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   783
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   784
1563
f67940c89977 checkin from browser
ca
parents: 1561
diff changeset
   785
    (useIndex and:[model notNil]) ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   786
	model setValue:(self argForChangeMessage)
1563
f67940c89977 checkin from browser
ca
parents: 1561
diff changeset
   787
    ].
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   788
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   789
1755
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
   790
originChanged:delta
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
   791
    "setup the origin of the editing view
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
   792
    "
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
   793
    self computeEditorLayout.
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
   794
    super originChanged:delta.
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
   795
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
   796
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
   797
!
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
   798
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   799
selectionChanged
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   800
    "selection has changed. Call actionblock and/or send changeMessage if defined
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   801
    "
1554
c45cac3c4d31 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
   802
    |arg|
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   803
1755
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
   804
    self closeEditor.
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
   805
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   806
    (model isNil and:[actionBlock isNil]) ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   807
	^ self
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   808
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   809
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   810
    arg := self argForChangeMessage.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   811
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   812
    model notNil ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   813
	model removeDependent:self.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   814
	"/ change models value to force a change notification: reselect mode
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   815
	arg = model value ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   816
	    model setValue:(arg isNil ifTrue:[0] ifFalse:[nil]).
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   817
	].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   818
	self sendChangeMessage:#value: with:arg.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   819
	model notNil ifTrue:[  "/ argggh could be nilled
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   820
	    model addDependent:self.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   821
	    self updateFromModel. "/ care for possibly lost change notification, due to #removeDependent
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   822
	]
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   823
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   824
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   825
    actionBlock notNil ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   826
	actionBlock valueWithOptionalArgument:arg and:self
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   827
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   828
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   829
1554
c45cac3c4d31 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
   830
updateFromModel
2302
5a2a1d5d09f8 remove asynchronous handling of changes; always disabled because doesn't work
ca
parents: 2275
diff changeset
   831
    "update selection from the model
5a2a1d5d09f8 remove asynchronous handling of changes; always disabled because doesn't work
ca
parents: 2275
diff changeset
   832
    "
2522
a3ddd460ea91 copy selection from model in #updateFromModel
james
parents: 2501
diff changeset
   833
    |value newSelection|
2302
5a2a1d5d09f8 remove asynchronous handling of changes; always disabled because doesn't work
ca
parents: 2275
diff changeset
   834
5a2a1d5d09f8 remove asynchronous handling of changes; always disabled because doesn't work
ca
parents: 2275
diff changeset
   835
    model isNil ifTrue:[
4273
d56dfb04df83 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4258
diff changeset
   836
        ^ self
2302
5a2a1d5d09f8 remove asynchronous handling of changes; always disabled because doesn't work
ca
parents: 2275
diff changeset
   837
    ].
2401
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
   838
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
   839
    buttonMotionAction notNil ifTrue:[
4273
d56dfb04df83 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4258
diff changeset
   840
        "running in button motion; discard change notification
d56dfb04df83 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4258
diff changeset
   841
        "
d56dfb04df83 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4258
diff changeset
   842
        ^ self
2302
5a2a1d5d09f8 remove asynchronous handling of changes; always disabled because doesn't work
ca
parents: 2275
diff changeset
   843
    ].
5a2a1d5d09f8 remove asynchronous handling of changes; always disabled because doesn't work
ca
parents: 2275
diff changeset
   844
5a2a1d5d09f8 remove asynchronous handling of changes; always disabled because doesn't work
ca
parents: 2275
diff changeset
   845
    value := model value.
5a2a1d5d09f8 remove asynchronous handling of changes; always disabled because doesn't work
ca
parents: 2275
diff changeset
   846
5a2a1d5d09f8 remove asynchronous handling of changes; always disabled because doesn't work
ca
parents: 2275
diff changeset
   847
    (useIndex or:[value isNil or:[value isNumber]]) ifFalse:[
4273
d56dfb04df83 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4258
diff changeset
   848
        multipleSelectOk ifFalse:[
d56dfb04df83 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4258
diff changeset
   849
            newSelection := self identityIndexOf:value
d56dfb04df83 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4258
diff changeset
   850
        ] ifTrue:[
d56dfb04df83 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4258
diff changeset
   851
            value size == 0 ifTrue:[
d56dfb04df83 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4258
diff changeset
   852
                newSelection := nil
d56dfb04df83 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4258
diff changeset
   853
            ] ifFalse:[
d56dfb04df83 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4258
diff changeset
   854
                newSelection := OrderedCollection new.
d56dfb04df83 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4258
diff changeset
   855
d56dfb04df83 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4258
diff changeset
   856
                value do:[:e||index|
d56dfb04df83 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4258
diff changeset
   857
                    index := self identityIndexOf:e.
d56dfb04df83 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4258
diff changeset
   858
                    index ~~ 0 ifTrue:[ newSelection add:index ].
d56dfb04df83 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4258
diff changeset
   859
                ].
d56dfb04df83 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4258
diff changeset
   860
                newSelection := newSelection asNilIfEmpty.
d56dfb04df83 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4258
diff changeset
   861
            ]
d56dfb04df83 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4258
diff changeset
   862
        ].
2522
a3ddd460ea91 copy selection from model in #updateFromModel
james
parents: 2501
diff changeset
   863
    ] ifTrue:[
4273
d56dfb04df83 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4258
diff changeset
   864
        newSelection := value copy
2302
5a2a1d5d09f8 remove asynchronous handling of changes; always disabled because doesn't work
ca
parents: 2275
diff changeset
   865
    ].
2522
a3ddd460ea91 copy selection from model in #updateFromModel
james
parents: 2501
diff changeset
   866
    self setSelection:newSelection.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   867
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   868
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   869
!SelectionInListModelView methodsFor:'drag & drop'!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   870
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   871
canDrag
3918
612f8c92da9a comment/format
Claus Gittinger <cg@exept.de>
parents: 3899
diff changeset
   872
    "returns true if dragging is enabled"
612f8c92da9a comment/format
Claus Gittinger <cg@exept.de>
parents: 3899
diff changeset
   873
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   874
    ^ dropSource notNil
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   875
3918
612f8c92da9a comment/format
Claus Gittinger <cg@exept.de>
parents: 3899
diff changeset
   876
    "Modified: / 18-07-2010 / 09:07:20 / cg"
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   877
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   878
2572
e370dbc5fbcb support autoScroll during drag operation
ca
parents: 2527
diff changeset
   879
dragAutoScroll:aContext
e370dbc5fbcb support autoScroll during drag operation
ca
parents: 2527
diff changeset
   880
    "called by the DragAndDropManager to scroll during a drag/drop operation
e370dbc5fbcb support autoScroll during drag operation
ca
parents: 2527
diff changeset
   881
     if necassery (decided by the widget itself); If a scroll is done return
3918
612f8c92da9a comment/format
Claus Gittinger <cg@exept.de>
parents: 3899
diff changeset
   882
     true otherwise false (used to restore the background)"
612f8c92da9a comment/format
Claus Gittinger <cg@exept.de>
parents: 3899
diff changeset
   883
3899
ef976a181075 changed: #dragAutoScroll: Call q986469 scrool in tree
ca
parents: 3889
diff changeset
   884
    |scrollUp targetY deltaY pixels|
ef976a181075 changed: #dragAutoScroll: Call q986469 scrool in tree
ca
parents: 3889
diff changeset
   885
ef976a181075 changed: #dragAutoScroll: Call q986469 scrool in tree
ca
parents: 3889
diff changeset
   886
    targetY  := aContext targetPoint y.
ef976a181075 changed: #dragAutoScroll: Call q986469 scrool in tree
ca
parents: 3889
diff changeset
   887
    scrollUp := (targetY < (height // 2)).
ef976a181075 changed: #dragAutoScroll: Call q986469 scrool in tree
ca
parents: 3889
diff changeset
   888
ef976a181075 changed: #dragAutoScroll: Call q986469 scrool in tree
ca
parents: 3889
diff changeset
   889
    scrollUp ifTrue:[
ef976a181075 changed: #dragAutoScroll: Call q986469 scrool in tree
ca
parents: 3889
diff changeset
   890
        self yOriginOfContents = 0 ifTrue:[ ^ false].
ef976a181075 changed: #dragAutoScroll: Call q986469 scrool in tree
ca
parents: 3889
diff changeset
   891
        deltaY := targetY.
2572
e370dbc5fbcb support autoScroll during drag operation
ca
parents: 2527
diff changeset
   892
    ] ifFalse:[
3899
ef976a181075 changed: #dragAutoScroll: Call q986469 scrool in tree
ca
parents: 3889
diff changeset
   893
        deltaY := height - targetY.
ef976a181075 changed: #dragAutoScroll: Call q986469 scrool in tree
ca
parents: 3889
diff changeset
   894
        self yOriginOfContents < self maxViewOriginY ifFalse:[ ^ false ].
2572
e370dbc5fbcb support autoScroll during drag operation
ca
parents: 2527
diff changeset
   895
    ].
3899
ef976a181075 changed: #dragAutoScroll: Call q986469 scrool in tree
ca
parents: 3889
diff changeset
   896
    pixels := 24 min:(height // 4).
ef976a181075 changed: #dragAutoScroll: Call q986469 scrool in tree
ca
parents: 3889
diff changeset
   897
    deltaY > pixels ifTrue:[^ false].
ef976a181075 changed: #dragAutoScroll: Call q986469 scrool in tree
ca
parents: 3889
diff changeset
   898
ef976a181075 changed: #dragAutoScroll: Call q986469 scrool in tree
ca
parents: 3889
diff changeset
   899
    deltaY <= (pixels // 2) ifTrue:[
ef976a181075 changed: #dragAutoScroll: Call q986469 scrool in tree
ca
parents: 3889
diff changeset
   900
        deltaY <= (pixels // 4)
ef976a181075 changed: #dragAutoScroll: Call q986469 scrool in tree
ca
parents: 3889
diff changeset
   901
            ifTrue:[ pixels := pixels * 3]
ef976a181075 changed: #dragAutoScroll: Call q986469 scrool in tree
ca
parents: 3889
diff changeset
   902
            ifFalse:[ pixels := pixels * 2 ].            
ef976a181075 changed: #dragAutoScroll: Call q986469 scrool in tree
ca
parents: 3889
diff changeset
   903
    ].
2572
e370dbc5fbcb support autoScroll during drag operation
ca
parents: 2527
diff changeset
   904
    aContext contentsWillChange.
e370dbc5fbcb support autoScroll during drag operation
ca
parents: 2527
diff changeset
   905
3918
612f8c92da9a comment/format
Claus Gittinger <cg@exept.de>
parents: 3899
diff changeset
   906
    scrollUp 
612f8c92da9a comment/format
Claus Gittinger <cg@exept.de>
parents: 3899
diff changeset
   907
        ifTrue:[ self scrollUp:pixels ]
612f8c92da9a comment/format
Claus Gittinger <cg@exept.de>
parents: 3899
diff changeset
   908
        ifFalse:[ self scrollDown:pixels ].
2572
e370dbc5fbcb support autoScroll during drag operation
ca
parents: 2527
diff changeset
   909
e370dbc5fbcb support autoScroll during drag operation
ca
parents: 2527
diff changeset
   910
    ^ true
3918
612f8c92da9a comment/format
Claus Gittinger <cg@exept.de>
parents: 3899
diff changeset
   911
612f8c92da9a comment/format
Claus Gittinger <cg@exept.de>
parents: 3899
diff changeset
   912
    "Modified: / 18-07-2010 / 09:08:29 / cg"
2572
e370dbc5fbcb support autoScroll during drag operation
ca
parents: 2527
diff changeset
   913
!
e370dbc5fbcb support autoScroll during drag operation
ca
parents: 2527
diff changeset
   914
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   915
dropSource
2891
78a14c0ed73c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2886
diff changeset
   916
    "returns the dropSource or nil"
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   917
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   918
    ^ dropSource
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   919
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   920
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   921
dropSource:aDropSourceOrNil
2891
78a14c0ed73c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2886
diff changeset
   922
    "set the dropSource or nil"
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   923
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   924
    dropSource := aDropSourceOrNil.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   925
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   926
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   927
startDragAt:aPoint
3918
612f8c92da9a comment/format
Claus Gittinger <cg@exept.de>
parents: 3899
diff changeset
   928
    "start drag at a point"
612f8c92da9a comment/format
Claus Gittinger <cg@exept.de>
parents: 3899
diff changeset
   929
2976
136d983423ab drag & drop activation if moving horizontal n pixels
ca
parents: 2964
diff changeset
   930
    buttonMotionAction := buttonReleaseAction := nil.
136d983423ab drag & drop activation if moving horizontal n pixels
ca
parents: 2964
diff changeset
   931
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   932
    dropSource notNil ifTrue:[
3918
612f8c92da9a comment/format
Claus Gittinger <cg@exept.de>
parents: 3899
diff changeset
   933
        dropSource startDragSelector notNil ifTrue:[
612f8c92da9a comment/format
Claus Gittinger <cg@exept.de>
parents: 3899
diff changeset
   934
            ^ dropSource startDragIn:self at:aPoint
612f8c92da9a comment/format
Claus Gittinger <cg@exept.de>
parents: 3899
diff changeset
   935
        ] ifFalse:[
612f8c92da9a comment/format
Claus Gittinger <cg@exept.de>
parents: 3899
diff changeset
   936
            ^ DragAndDropManager new
612f8c92da9a comment/format
Claus Gittinger <cg@exept.de>
parents: 3899
diff changeset
   937
                startDragFrom:self dropSource:dropSource offset:#center
612f8c92da9a comment/format
Claus Gittinger <cg@exept.de>
parents: 3899
diff changeset
   938
        ]
3370
5199f62a817d Add posibility to configure the select behaviour (select on button press
ab
parents: 3367
diff changeset
   939
    ].
3684
8e409d2d8a52 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
   940
    ^ nil
3918
612f8c92da9a comment/format
Claus Gittinger <cg@exept.de>
parents: 3899
diff changeset
   941
612f8c92da9a comment/format
Claus Gittinger <cg@exept.de>
parents: 3899
diff changeset
   942
    "Modified: / 18-07-2010 / 09:07:26 / cg"
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   943
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   944
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   945
!SelectionInListModelView methodsFor:'drawing'!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   946
2642
27174081058f move methods to super class; prepared for table
ca
parents: 2641
diff changeset
   947
drawElementsFrom:start to:stop x:x y:y w:w
27174081058f move methods to super class; prepared for table
ca
parents: 2641
diff changeset
   948
    "draw the items between start to stop without clearing the background
27174081058f move methods to super class; prepared for table
ca
parents: 2641
diff changeset
   949
    "
27174081058f move methods to super class; prepared for table
ca
parents: 2641
diff changeset
   950
    |y0 "{ Class:SmallInteger }"
27174081058f move methods to super class; prepared for table
ca
parents: 2641
diff changeset
   951
     y1 "{ Class:SmallInteger }"
27174081058f move methods to super class; prepared for table
ca
parents: 2641
diff changeset
   952
     x0 "{ Class:SmallInteger }"
27174081058f move methods to super class; prepared for table
ca
parents: 2641
diff changeset
   953
    |
27174081058f move methods to super class; prepared for table
ca
parents: 2641
diff changeset
   954
    x0 := textStartLeft - viewOrigin x.
27174081058f move methods to super class; prepared for table
ca
parents: 2641
diff changeset
   955
    y1 := y.
27174081058f move methods to super class; prepared for table
ca
parents: 2641
diff changeset
   956
27174081058f move methods to super class; prepared for table
ca
parents: 2641
diff changeset
   957
    start to:stop do:[:i|
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   958
	y0 := y1.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   959
	y1 := self yVisibleOfLine:(i + 1).
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   960
	self drawLabelAt:i x:x0 y:y0 h:(y1 - y0)
2642
27174081058f move methods to super class; prepared for table
ca
parents: 2641
diff changeset
   961
    ].
27174081058f move methods to super class; prepared for table
ca
parents: 2641
diff changeset
   962
27174081058f move methods to super class; prepared for table
ca
parents: 2641
diff changeset
   963
27174081058f move methods to super class; prepared for table
ca
parents: 2641
diff changeset
   964
!
27174081058f move methods to super class; prepared for table
ca
parents: 2641
diff changeset
   965
1533
609fce5df829 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1508
diff changeset
   966
drawFrom:start to:stop x:x y:y w:w
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   967
    "draw the lines between start to stop without clearing the background
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   968
    "
1557
e3feb8bc17b0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
   969
    highlightMode notNil ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   970
	self selectionDo:[:lnNr|
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   971
	    (lnNr between:start and:stop) ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   972
		self drawSelectionFrameAt:lnNr x:x w:w
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   973
	    ]
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
   974
	]
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   975
    ].
2642
27174081058f move methods to super class; prepared for table
ca
parents: 2641
diff changeset
   976
    super drawFrom:start to:stop x:x y:y w:w.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   977
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   978
2377
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
   979
drawLabelAt:anIndex x:xI y:y h:h
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   980
    "draw the label at position x/y without clearing the background
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   981
    "
4702
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
   982
    |item y0 x1 x w drawStrikeOut xOut0 xOut1 isHighlightedAsSelected|
1554
c45cac3c4d31 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
   983
2377
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
   984
    x := xI + 1.
1755
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
   985
    editorView notNil ifTrue:[
4702
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
   986
        "/ there is an open editor for the line; thus no redraw for the label (hidden by editor)
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
   987
        self selectedIndex == anIndex ifTrue:[^ self].
1755
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
   988
    ].
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
   989
2408
8b0d11537dc0 accessing list indirect
ca
parents: 2404
diff changeset
   990
    item := self at:anIndex ifAbsent:nil.
2377
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
   991
    item isNil ifTrue:[^ self].
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   992
2418
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   993
    drawStrikeOut := false.
4702
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
   994
    isHighlightedAsSelected := false.
2418
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
   995
2377
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
   996
    (highlightMode notNil and:[self isInSelection:anIndex]) ifTrue:[
4702
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
   997
        strikeOut ifTrue:[
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
   998
            drawStrikeOut := true.
5426
ac12d5426c18 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5381
diff changeset
   999
            gc paint:fgColor on:bgColor
4702
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
  1000
        ] ifFalse:[
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
  1001
            (highlightMode == #dropMode or:[self hasFocus not]) ifTrue:[
5426
ac12d5426c18 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5381
diff changeset
  1002
                gc paint:hilightFgColorNoFocus on:hilightBgColorNoFocus.
4702
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
  1003
            ] ifFalse:[
5426
ac12d5426c18 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5381
diff changeset
  1004
                gc paint:hilightFgColor on:hilightBgColor
4702
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
  1005
            ].
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
  1006
            isHighlightedAsSelected := true.
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
  1007
        ]
2377
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1008
    ] ifFalse:[
4702
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
  1009
        enterItem == item ifTrue:[
5426
ac12d5426c18 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5381
diff changeset
  1010
            gc paint:hilightBgColor on:bgColor.
4702
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
  1011
        ] ifFalse:[
5426
ac12d5426c18 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5381
diff changeset
  1012
            gc paint:fgColor on:bgColor.
4702
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
  1013
        ].
2377
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1014
    ].
4702
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
  1015
    listRenderer display:item atX:x y:y lineHeight:h isHighlightedAsSelected:isHighlightedAsSelected.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1016
2418
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1017
    drawStrikeOut ifTrue:[
4702
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
  1018
        xOut0 := self xVisibleOfItem:item.
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
  1019
        highlightMode == #label ifTrue:[
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
  1020
            xOut1 := xOut0 + (listRenderer widthFor:item).
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
  1021
        ] ifFalse:[
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
  1022
            xOut1 := width - margin.
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
  1023
        ].
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
  1024
        y0 := y + (h // 2).
5426
ac12d5426c18 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5381
diff changeset
  1025
        gc displayLineFromX:xOut0 y:y0 toX:xOut1 y:y0.
4702
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
  1026
        y0 := y0 - 1.
5426
ac12d5426c18 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5381
diff changeset
  1027
        gc displayLineFromX:xOut0 y:y0 toX:xOut1 y:y0.
2418
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1028
    ].
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1029
3338
01ad784543fc no underline-highlighting
Claus Gittinger <cg@exept.de>
parents: 3275
diff changeset
  1030
    cursorItem == item ifTrue:[
4702
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
  1031
        "/ textStartLeft
5426
ac12d5426c18 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5381
diff changeset
  1032
        gc maskOrigin:((self viewOrigin + (0 @ 1)) \\ (lineMask extent)).
ac12d5426c18 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5381
diff changeset
  1033
        gc mask:lineMask.
4702
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
  1034
        w := listRenderer widthFor:item.
5426
ac12d5426c18 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5381
diff changeset
  1035
        gc displayRectangleX:x -1 y:(y+2) width:w+2 height:(h - 4).
ac12d5426c18 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5381
diff changeset
  1036
        gc mask:nil.
3338
01ad784543fc no underline-highlighting
Claus Gittinger <cg@exept.de>
parents: 3275
diff changeset
  1037
    ] ifFalse:[
4702
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
  1038
        enterItem == item ifTrue:[
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
  1039
            self highlightWithUnderline ifTrue:[
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
  1040
                "/ underline the hilite...
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
  1041
                y0 := y + h - 2.
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
  1042
                x1 := x + (listRenderer widthFor:item).
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
  1043
5426
ac12d5426c18 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5381
diff changeset
  1044
                gc displayLineFromX:x y:y0 toX:x1 y:y0.
4702
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
  1045
            ]
e7e4cf796487 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4700
diff changeset
  1046
        ].
2377
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1047
    ].
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1048
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1049
1554
c45cac3c4d31 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
  1050
drawSelectionFrameAt:lnNr x:x w:w
c45cac3c4d31 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
  1051
    "draw the background and foreground of the selection frame
c45cac3c4d31 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
  1052
     at a lineNr.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1053
    "
2646
8be2becc5152 drawSelectionFrameAt:.. clear damaged background not items background
ca
parents: 2644
diff changeset
  1054
    |item xMax xLftDmg xRgtDmg x0 x1 y0 y1 hL wL|
8be2becc5152 drawSelectionFrameAt:.. clear damaged background not items background
ca
parents: 2644
diff changeset
  1055
8be2becc5152 drawSelectionFrameAt:.. clear damaged background not items background
ca
parents: 2644
diff changeset
  1056
    (strikeOut or:[highlightMode isNil]) ifTrue:[
4318
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1057
        ^ self
2646
8be2becc5152 drawSelectionFrameAt:.. clear damaged background not items background
ca
parents: 2644
diff changeset
  1058
    ].
1755
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  1059
    editorView notNil ifTrue:[
4318
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1060
        "/ there is an open editor; do not redraw selected
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1061
        ^ self
1755
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  1062
    ].
3367
29f38ac1bac1 support highlightMode (selection) #dropMode
ca
parents: 3345
diff changeset
  1063
29f38ac1bac1 support highlightMode (selection) #dropMode
ca
parents: 3345
diff changeset
  1064
    (    highlightMode == #line
29f38ac1bac1 support highlightMode (selection) #dropMode
ca
parents: 3345
diff changeset
  1065
     or:[highlightMode == #label
29f38ac1bac1 support highlightMode (selection) #dropMode
ca
parents: 3345
diff changeset
  1066
     or:[highlightMode == #dropMode]]
29f38ac1bac1 support highlightMode (selection) #dropMode
ca
parents: 3345
diff changeset
  1067
    ) ifFalse:[
4318
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1068
        "/ highlightMode not supported
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1069
        ^ self
2646
8be2becc5152 drawSelectionFrameAt:.. clear damaged background not items background
ca
parents: 2644
diff changeset
  1070
    ].
2408
8b0d11537dc0 accessing list indirect
ca
parents: 2404
diff changeset
  1071
    (item := self at:lnNr ifAbsent:nil) isNil ifTrue:[
4318
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1072
        "/ list might change during drawing; item no longer visible
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1073
        ^ self
1554
c45cac3c4d31 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
  1074
    ].
2646
8be2becc5152 drawSelectionFrameAt:.. clear damaged background not items background
ca
parents: 2644
diff changeset
  1075
    xMax := x + w.
1554
c45cac3c4d31 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
  1076
c45cac3c4d31 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
  1077
    "/ CLEAR THE BACKGROUND
c45cac3c4d31 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
  1078
c45cac3c4d31 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
  1079
    y0 := self yVisibleOfLine:lnNr.
c45cac3c4d31 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
  1080
    y1 := self yVisibleOfLine:(lnNr + 1).
c45cac3c4d31 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
  1081
    hL := y1 - y0.
c45cac3c4d31 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
  1082
c45cac3c4d31 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
  1083
    highlightMode == #line ifTrue:[
4318
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1084
        x0 := x.
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1085
        x1 := xMax.
3367
29f38ac1bac1 support highlightMode (selection) #dropMode
ca
parents: 3345
diff changeset
  1086
    ] ifFalse:[ "/ is #label or #rectangle
4318
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1087
        x0 := (self xVisibleOfItem:item) - (textStartLeft // 2).
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1088
        x0 >= xMax ifTrue:[ ^ self ].
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1089
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1090
        x1 := x0 + (listRenderer widthFor:item) + textStartLeft + 1.
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1091
        x1 < x ifTrue:[ ^ self ].
1554
c45cac3c4d31 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
  1092
    ].
2646
8be2becc5152 drawSelectionFrameAt:.. clear damaged background not items background
ca
parents: 2644
diff changeset
  1093
    xLftDmg := x0 max:x.
8be2becc5152 drawSelectionFrameAt:.. clear damaged background not items background
ca
parents: 2644
diff changeset
  1094
    xRgtDmg := x1 min:xMax.
8be2becc5152 drawSelectionFrameAt:.. clear damaged background not items background
ca
parents: 2644
diff changeset
  1095
    xRgtDmg > xLftDmg ifFalse:[^ self].
1554
c45cac3c4d31 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
  1096
3367
29f38ac1bac1 support highlightMode (selection) #dropMode
ca
parents: 3345
diff changeset
  1097
    (highlightMode == #dropMode or:[self hasFocus not]) ifTrue:[
5426
ac12d5426c18 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5381
diff changeset
  1098
        gc paint:hilightBgColorNoFocus.
3367
29f38ac1bac1 support highlightMode (selection) #dropMode
ca
parents: 3345
diff changeset
  1099
    ] ifFalse:[
5426
ac12d5426c18 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5381
diff changeset
  1100
        gc paint:hilightBgColor.
3137
7e8fae56b94c highlight selection dependent on has focus
ca
parents: 3081
diff changeset
  1101
    ].
5426
ac12d5426c18 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5381
diff changeset
  1102
    gc fillRectangleX:xLftDmg y:y0 width:(xRgtDmg - xLftDmg) height:hL.
2646
8be2becc5152 drawSelectionFrameAt:.. clear damaged background not items background
ca
parents: 2644
diff changeset
  1103
    wL := x1 - x0.
1554
c45cac3c4d31 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
  1104
c45cac3c4d31 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
  1105
    "/ DRAW THE FRAME
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1106
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1107
    hilightFrameColor notNil ifTrue:[
4318
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1108
        hilightLevel == 0 ifTrue:[
5426
ac12d5426c18 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5381
diff changeset
  1109
            gc paint:hilightFrameColor.
4318
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1110
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1111
            highlightMode == #line ifTrue:[
5426
ac12d5426c18 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5381
diff changeset
  1112
                gc displayLineFromX:x0 y:y0 toX:x1 y:y0.
4318
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1113
                y1 := y0 + hL - 1.
5426
ac12d5426c18 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5381
diff changeset
  1114
                gc displayLineFromX:x0 y:y1 toX:x1 y:y1.
4318
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1115
            ] ifFalse:[
5426
ac12d5426c18 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5381
diff changeset
  1116
                gc displayRectangleX:x0 y:y0 width:wL height:hL
4318
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1117
            ].
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1118
            ^ self.
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1119
        ]
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1120
    ] ifFalse:[
4318
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1121
        hilightStyle == #motif ifTrue:[
5426
ac12d5426c18 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5381
diff changeset
  1122
            gc paint:bgColor.
4318
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1123
            y1 := y0 + 1.
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1124
            highlightMode == #line ifTrue:[
5426
ac12d5426c18 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5381
diff changeset
  1125
                gc displayLineFromX:x0 y:y1 toX:x1 y:y1.
4318
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1126
                y1 := y0 + hL - 2.
5426
ac12d5426c18 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5381
diff changeset
  1127
                gc displayLineFromX:x0 y:y1 toX:x1 y:y1.
4318
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1128
            ] ifFalse:[
5426
ac12d5426c18 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 5381
diff changeset
  1129
                gc displayRectangleX:x0 + 1 y:y1 width:wL - 2 height:hL - 2
4318
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1130
            ]
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1131
        ].
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1132
        hilightLevel == 0 ifTrue:[ ^ self ].
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1133
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1134
2646
8be2becc5152 drawSelectionFrameAt:.. clear damaged background not items background
ca
parents: 2644
diff changeset
  1135
    "/ draw edge
8be2becc5152 drawSelectionFrameAt:.. clear damaged background not items background
ca
parents: 2644
diff changeset
  1136
    highlightMode == #line ifTrue:[
4318
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1137
        x0 := margin.
ee2c154ee065 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4273
diff changeset
  1138
        wL := width - margin - margin.
2646
8be2becc5152 drawSelectionFrameAt:.. clear damaged background not items background
ca
parents: 2644
diff changeset
  1139
    ].
8be2becc5152 drawSelectionFrameAt:.. clear damaged background not items background
ca
parents: 2644
diff changeset
  1140
    self drawEdgesForX:x0 y:y0 width:wL height:hL level:hilightLevel.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1141
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1142
4206
95f294d62b07 Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4181
diff changeset
  1143
drawSelectionFrameFrom:start to:stop x:x y:y w:w
95f294d62b07 Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4181
diff changeset
  1144
    "draw the selection frame between start to stop without clearing the background
95f294d62b07 Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4181
diff changeset
  1145
    "
95f294d62b07 Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4181
diff changeset
  1146
    highlightMode notNil ifTrue:[
95f294d62b07 Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4181
diff changeset
  1147
        self selectionDo:[:lnNr|
95f294d62b07 Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4181
diff changeset
  1148
            (lnNr between:start and:stop) ifTrue:[
95f294d62b07 Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4181
diff changeset
  1149
                self drawSelectionFrameAt:lnNr x:x w:w
95f294d62b07 Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4181
diff changeset
  1150
            ]
95f294d62b07 Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4181
diff changeset
  1151
        ]
95f294d62b07 Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4181
diff changeset
  1152
    ].
95f294d62b07 Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4181
diff changeset
  1153
95f294d62b07 Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4181
diff changeset
  1154
    "Created: / 24-04-2013 / 14:06:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
95f294d62b07 Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4181
diff changeset
  1155
!
95f294d62b07 Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4181
diff changeset
  1156
2418
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1157
invalidateSelection
5215
949e2a560b6c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5158
diff changeset
  1158
    "invalidate (force async redraw) the current selection
2418
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1159
    "
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1160
    shown ifTrue:[
5215
949e2a560b6c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5158
diff changeset
  1161
        self selectionDo:[:aLnNr| self invalidateLineAt:aLnNr].
2418
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1162
    ].
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1163
!
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1164
2245
546c6e5d0951 change #redrawSelectionAt: to #invalidateSelectionAt: (because is a invalidate)
ca
parents: 2228
diff changeset
  1165
invalidateSelectionAt:aLineNr
1569
447b0cafc1db drawing selected or unselected
ca
parents: 1564
diff changeset
  1166
    "redraw a line which changed its selection status.
447b0cafc1db drawing selected or unselected
ca
parents: 1564
diff changeset
  1167
     optimized when drawing only the label.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1168
    "
2323
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
  1169
    |item x|
1569
447b0cafc1db drawing selected or unselected
ca
parents: 1564
diff changeset
  1170
1755
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  1171
    editorView notNil ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1172
	"/ there is an open editor; do not redraw selected
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1173
	^ self
1755
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  1174
    ].
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  1175
1569
447b0cafc1db drawing selected or unselected
ca
parents: 1564
diff changeset
  1176
    (shown and:[aLineNr notNil and:[highlightMode notNil]]) ifFalse:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1177
	^ self
1557
e3feb8bc17b0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  1178
    ].
e3feb8bc17b0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  1179
2323
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
  1180
    highlightMode == #label ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1181
	item := self at:aLineNr ifAbsent:nil.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1182
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1183
	item isNil ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1184
	    ^ self
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1185
	].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1186
	x := (self xVisibleOfItem:item) - (textStartLeft // 2)
1569
447b0cafc1db drawing selected or unselected
ca
parents: 1564
diff changeset
  1187
    ] ifFalse:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1188
	x := 0.
1569
447b0cafc1db drawing selected or unselected
ca
parents: 1564
diff changeset
  1189
    ].
2323
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
  1190
    self invalidateLineAt:aLineNr fromX:x
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1191
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1192
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1193
!SelectionInListModelView methodsFor:'event handling'!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1194
3750
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1195
activateMenu
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1196
    |item menu appl|
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1197
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1198
    enabled ifFalse:[^ self].
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1199
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1200
    item := self selectedElement.
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1201
    item notNil ifTrue:[
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1202
        menu := item perform:#middleButtonMenu ifNotUnderstood:nil.
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1203
        menu notNil ifTrue:[
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1204
            menu isCollection ifTrue:[
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1205
                menu := Menu decodeFromLiteralArray:menu.
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1206
                appl := self application.
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1207
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1208
                appl notNil ifTrue:[
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1209
                    menu findGuiResourcesIn:appl.
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1210
                    "/ menu receiver:appl  -- now done in findGuiResources ...
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1211
                ] ifFalse:[
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1212
                    menu receiver:item
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1213
                ]
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1214
            ].
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1215
            self startUpMenu:menu.
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1216
            ^ self
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1217
        ].
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1218
    ].
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1219
    super activateMenu
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1220
!
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1221
2401
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  1222
buttonControlPressAtLine:lineNr x:x y:y
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  1223
    "handle a button control press
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1224
    "
2401
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  1225
    |isInSelection prvLine chgSet doAdd|
1747
f46c5941c028 better alghorithm for button motion in multipleSelection mode
ca
parents: 1745
diff changeset
  1226
2401
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  1227
    isInSelection := self isInSelection:lineNr.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1228
2401
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  1229
    multipleSelectOk ifFalse:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1230
	isInSelection ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1231
	    self deselect
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1232
	]ifFalse:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1233
	    (self canSelectIndex:lineNr forAdd:false) ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1234
		self buttonPressOrReleaseAtLine:lineNr x:x y:y.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1235
	    ].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1236
	].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1237
	^ self
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1238
    ].
2410
39ec0844e7d6 discard #toggleSelection:
ca
parents: 2409
diff changeset
  1239
    isInSelection ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1240
	self removeFromSelection:lineNr
2410
39ec0844e7d6 discard #toggleSelection:
ca
parents: 2409
diff changeset
  1241
    ] ifFalse:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1242
	self addToSelection:lineNr.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1243
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1244
	(self isInSelection:lineNr) ifFalse:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1245
	    "/ cannot add to selection
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1246
	    ^ self
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1247
	].
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1248
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1249
2401
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  1250
    prvLine := lineNr.
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  1251
    chgSet  := IdentitySet new.
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  1252
    doAdd   := isInSelection not.
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  1253
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  1254
    buttonMotionAction := [:p| |rowNr mustRestore step f|
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1255
	rowNr := self yVisibleToLineNr:(p y).
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1256
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1257
	(rowNr notNil and:[rowNr ~~ prvLine]) ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1258
	    rowNr == lineNr ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1259
		mustRestore := true
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1260
	    ] ifFalse:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1261
		rowNr > lineNr ifTrue:[ mustRestore := (rowNr < prvLine) ]
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1262
			      ifFalse:[ mustRestore := (rowNr > prvLine) ].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1263
	    ].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1264
	    prvLine > rowNr ifTrue:[ step := -1 ]
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1265
			  ifFalse:[ step :=  1 ].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1266
	    mustRestore ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1267
		[ prvLine ~~ rowNr ] whileTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1268
		    (chgSet removeIdentical:prvLine ifAbsent:nil) notNil ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1269
			doAdd ifFalse:[ self addToSelection:prvLine ]
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1270
			       ifTrue:[ self removeFromSelection:prvLine ].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1271
		    ].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1272
		    prvLine := prvLine + step.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1273
		].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1274
	    ] ifFalse:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1275
		[ prvLine ~~ rowNr ] whileTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1276
		    prvLine := prvLine + step.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1277
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1278
		    doAdd ~~ (self isInSelection:rowNr) ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1279
			chgSet add:prvLine.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1280
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1281
			doAdd ifTrue:[ self addToSelection:prvLine ]
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1282
			     ifFalse:[ self removeFromSelection:prvLine ].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1283
		    ]
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1284
		].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1285
	    ].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1286
	].
1748
0a2213a15e06 support of auto scrolling
ca
parents: 1747
diff changeset
  1287
    ].
2401
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  1288
!
1748
0a2213a15e06 support of auto scrolling
ca
parents: 1747
diff changeset
  1289
2401
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  1290
buttonMotion:buttonMask x:x y:y
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  1291
    "mouse-move while button was pressed - handle selection changes
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  1292
    "
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  1293
    |lnNr item|
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  1294
1748
0a2213a15e06 support of auto scrolling
ca
parents: 1747
diff changeset
  1295
    self stopAutoScroll.
0a2213a15e06 support of auto scrolling
ca
parents: 1747
diff changeset
  1296
2441
9ca40d634ff8 attention - do no motionAction, if no button is pressed
Claus Gittinger <cg@exept.de>
parents: 2418
diff changeset
  1297
    (buttonMask ~~ 0 and:[buttonMotionAction notNil]) ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1298
	buttonMotionAction value:(x@y).
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1299
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1300
	(autoScroll and:[buttonMotionAction notNil]) ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1301
	    "/ if moved outside of view, start autoscroll
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1302
	    (y between:0 and:height) ifFalse:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1303
		y < 0 ifTrue:[ self startAutoScroll:#scrollUp distance:y ]
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1304
		     ifFalse:[ self startAutoScroll:#scrollDown distance:(y - height) ].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1305
	    ].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1306
	].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1307
	^ self
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1308
    ].
2401
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  1309
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  1310
    (enabled and:[highlightEnterItem]) ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1311
	self sensor anyButtonPressed ifFalse:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1312
	    lnNr := self yVisibleToLineNr:y.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1313
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1314
	    lnNr notNil ifTrue:[ item := self at:lnNr ifAbsent:nil ]
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1315
		       ifFalse:[ item := nil ].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1316
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1317
	    self pointerEntersItem:item.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1318
	]
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1319
    ].
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1320
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1321
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1322
buttonMultiPress:button x:x y:y
2948
9b7b7b2e0dcd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2947
diff changeset
  1323
    "button was pressed multiple - handle a doubleClick action"
9b7b7b2e0dcd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2947
diff changeset
  1324
4571
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
  1325
    |lnNr|
3704
c9b2102bfd1c handle doubleClick - element under point is not selected
ca
parents: 3684
diff changeset
  1326
2401
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  1327
    buttonMotionAction := buttonReleaseAction := nil.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1328
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1329
    enabled ifFalse:[^ self].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1330
5158
ed46714ec203 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 5083
diff changeset
  1331
    button == 1 ifTrue:[
4043
532a328a9e0e changed: #buttonMultiPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3963
diff changeset
  1332
        (     (lnNr := self yVisibleToLineNr:y)   notNil
4571
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
  1333
         and:[(self at:lnNr ifAbsent:nil) notNil]
4043
532a328a9e0e changed: #buttonMultiPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3963
diff changeset
  1334
        ) ifTrue:[
5158
ed46714ec203 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 5083
diff changeset
  1335
            self selectedIndex ~~ lnNr ifTrue:[
4043
532a328a9e0e changed: #buttonMultiPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3963
diff changeset
  1336
                self breakPoint:#ca
3740
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1337
            ].
4043
532a328a9e0e changed: #buttonMultiPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3963
diff changeset
  1338
            self doubleClicked.
3740
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1339
        ].
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1340
        ^ self.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1341
    ].
2947
caa98c08d3cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2920
diff changeset
  1342
2948
9b7b7b2e0dcd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2947
diff changeset
  1343
    super buttonMultiPress:button x:x y:y
4043
532a328a9e0e changed: #buttonMultiPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3963
diff changeset
  1344
532a328a9e0e changed: #buttonMultiPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3963
diff changeset
  1345
    "Modified: / 30-06-2011 / 20:04:28 / cg"
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1346
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1347
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1348
buttonPress:button x:x y:y
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1349
    "a button was pressed - handle selection here
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1350
    "
3146
b7294baadfb7 button press, move and release behaviour
ca
parents: 3137
diff changeset
  1351
    |sensor item menu appl isSelected lineNr startLine dragDistance|
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1352
3205
7ff2e20b37d4 *** empty log message ***
ca
parents: 3202
diff changeset
  1353
    modelChangedDuringButtonPress := buttonMotionAction := buttonReleaseAction := nil.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1354
2323
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
  1355
    self pointerEntersItem:nil.
2377
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1356
    self cursorEntersItem:nil.
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1357
    self closeEditor.
2323
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
  1358
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1359
    enabled ifFalse:[^ self].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1360
2228
5268b9c3be4a add behavior: selectOnButtonMenu; update documentation
ca
parents: 2225
diff changeset
  1361
    sensor := self sensor.
2399
949ec827ab3a button handle shift pressed
ca
parents: 2381
diff changeset
  1362
    lineNr := self yVisibleToLineNr:y.
2228
5268b9c3be4a add behavior: selectOnButtonMenu; update documentation
ca
parents: 2225
diff changeset
  1363
3740
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1364
    (button == 2) ifTrue:[
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1365
        (self selectOnMenuButton and:[self numberOfSelections <= 1]) ifTrue:[
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1366
            (     lineNr notNil
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1367
             and:[self canSelectIndex:lineNr forAdd:false ]
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1368
            ) ifTrue:[
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1369
                (lineNr ~~ self selectedIndex) ifTrue: [
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1370
                    (self selectWithoutScroll:lineNr redraw:true) ifTrue:[
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1371
                        self selectionChanged
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1372
                    ].
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1373
                ].
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1374
            ]
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1375
        ].
3750
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1376
        item := self selectedElement.
3740
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1377
        item notNil ifTrue:[
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1378
            self makeSelectionVisible.
3750
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1379
"/ now in activateMenu...
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1380
"/            menu := item perform:#middleButtonMenu ifNotUnderstood:nil.
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1381
"/            menu notNil ifTrue:[
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1382
"/                menu isCollection ifTrue:[
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1383
"/                    menu := Menu decodeFromLiteralArray:menu.
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1384
"/                    appl := self application.
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1385
"/
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1386
"/                    appl notNil ifTrue:[
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1387
"/                        menu findGuiResourcesIn:appl.
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1388
"/                        "/ menu receiver:appl  -- now done in findGuiResources ...
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1389
"/                    ] ifFalse:[
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1390
"/                        menu receiver:item
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1391
"/                    ]
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1392
"/                ].
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1393
"/                self startUpMenu:menu.
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1394
"/                ^ self
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1395
"/            ].
3740
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1396
        ].
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1397
        super buttonPress:button x:x y:y.
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1398
        ^ self
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1399
    ].
3750
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1400
2399
949ec827ab3a button handle shift pressed
ca
parents: 2381
diff changeset
  1401
    lineNr isNil ifTrue:[ ^ self ].
3205
7ff2e20b37d4 *** empty log message ***
ca
parents: 3202
diff changeset
  1402
    modelChangedDuringButtonPress := false.
1578
cfa573485242 ask for middleButtonMenu if menuButton pressed
ca
parents: 1569
diff changeset
  1403
2401
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  1404
    sensor ctrlDown ifTrue:[
3740
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1405
        self buttonControlPressAtLine:lineNr x:x y:y.
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1406
        ^ self
2401
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  1407
    ].
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  1408
2976
136d983423ab drag & drop activation if moving horizontal n pixels
ca
parents: 2964
diff changeset
  1409
    isSelected  := self isInSelection:lineNr.
136d983423ab drag & drop activation if moving horizontal n pixels
ca
parents: 2964
diff changeset
  1410
136d983423ab drag & drop activation if moving horizontal n pixels
ca
parents: 2964
diff changeset
  1411
    (self canDrag and:[sensor shiftDown not]) ifTrue:[
3740
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1412
        dragDistance := UserPreferences current motionDistanceToStartDrag.
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1413
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1414
        isSelected ifTrue:[
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1415
            buttonMotionAction :=
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1416
                [:p|
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1417
                    ((x@y) dist:p) > dragDistance ifTrue:[
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1418
                        self startDragAt:p.
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1419
                    ]
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1420
                ].
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1421
            buttonReleaseAction := [ self buttonPressOrReleaseAtLine:lineNr x:x y:y ].
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1422
            ^ self.
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1423
        ].
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1424
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1425
        self selectOnButtonPress ifFalse: [
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1426
            |oldSelection|
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1427
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1428
            "/ set selection to line;
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1429
            "/ set the model without change notification (objects to drag)
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1430
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1431
            oldSelection := selection copy.
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1432
            self selectAndUpdateModelWithoutChangeNotification: lineNr.
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1433
            self windowGroup processExposeEvents.
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1434
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1435
            buttonMotionAction :=
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1436
                [:p|
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1437
                    ((x@y) dist:p) > dragDistance ifTrue:[
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1438
                        |handler|
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1439
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1440
                        handler := self startDragAt:p.
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1441
                        handler contentsWillChange.
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1442
                        "/ restore old selection
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1443
                        self selectAndUpdateModelWithoutChangeNotification: oldSelection.
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1444
                        self windowGroup processExposeEvents.
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1445
                    ].
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1446
                ].
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1447
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1448
            buttonReleaseAction := [
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1449
                (self canSelectIndex:lineNr forAdd:false) ifTrue:[
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1450
                    "/ notify selection change
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1451
                    self selectionChanged.
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1452
                ] ifFalse:[
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1453
                    "/ restore old selection
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1454
                    self selectAndUpdateModelWithoutChangeNotification: oldSelection.
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1455
                ].
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1456
            ].
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1457
            ^ self
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1458
        ].
2976
136d983423ab drag & drop activation if moving horizontal n pixels
ca
parents: 2964
diff changeset
  1459
    ].
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1460
2401
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  1461
    multipleSelectOk ifFalse:[
3740
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1462
        (isSelected or:[self canSelectIndex:lineNr forAdd:false]) ifTrue:[
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1463
            self buttonPressOrReleaseAtLine:lineNr x:x y:y.
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1464
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1465
            (dragDistance notNil and:[self isInSelection:lineNr]) ifTrue:[
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1466
                buttonMotionAction :=
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1467
                    [:p|
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1468
                        ((x@y) dist:p) > dragDistance ifTrue:[
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1469
                            self startDragAt:p.
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1470
                        ].
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1471
                    ].
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1472
            ].
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1473
        ].
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1474
        ^ self
2399
949ec827ab3a button handle shift pressed
ca
parents: 2381
diff changeset
  1475
    ].
2401
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  1476
    startLine := lineNr.
2399
949ec827ab3a button handle shift pressed
ca
parents: 2381
diff changeset
  1477
2401
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  1478
    sensor shiftDown ifTrue:[ |min max|
3740
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1479
        (isSelected or:[self canSelectIndex:lineNr forAdd:true]) ifFalse:[
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1480
            ^ self
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1481
        ].
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1482
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1483
        multipleSelectOk ifTrue:[
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1484
            startLine := self firstInSelection.
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1485
            startLine isNil ifTrue:[ startLine := lineNr ].
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1486
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1487
            startLine <= lineNr ifTrue:[
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1488
                self selectFrom:startLine to:lineNr.
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1489
            ] ifFalse:[
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1490
                startLine := self lastInSelection.
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1491
                self selectFrom:lineNr to:startLine.
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1492
            ].
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1493
        ]
2401
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  1494
    ] ifFalse:[
3740
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1495
        (isSelected or:[self canSelectIndex:lineNr forAdd:false]) ifFalse:[
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1496
            ^ self
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1497
        ].
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1498
        self buttonPressOrReleaseAtLine:lineNr x:x y:y.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1499
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1500
2401
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  1501
    multipleSelectOk ifTrue:[
3740
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1502
        buttonMotionAction :=
4483
b3f21fdb636c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4318
diff changeset
  1503
            [:p| 
3740
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1504
                (p y between:0 and:height) ifTrue:[ |ln|
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1505
                    ln := self yVisibleToLineNr:p y.
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1506
                    ln isNil ifTrue:[ln := self size].
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1507
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1508
                    (ln ~~ self lastInSelection and:[ln ~~ self firstInSelection]) ifTrue:[
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1509
                        self selectFrom:startLine to:ln.
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1510
                        dragDistance := nil.   "/ selection changed - no longer dragable
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1511
                    ]
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1512
                ].
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1513
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1514
                (dragDistance notNil and:[(x dist:p x) > dragDistance]) ifTrue:[
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1515
                    self startDragAt:p.
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1516
                ].
67a77c2fcb03 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 3728
diff changeset
  1517
            ].
1915
2f57720597d3 bug fix when opening editor on current selected line
ca
parents: 1909
diff changeset
  1518
    ].
3221
af3fae427c7e use decodeFromLiteralArray
Claus Gittinger <cg@exept.de>
parents: 3205
diff changeset
  1519
af3fae427c7e use decodeFromLiteralArray
Claus Gittinger <cg@exept.de>
parents: 3205
diff changeset
  1520
    "Modified: / 27-03-2007 / 08:43:58 / cg"
1915
2f57720597d3 bug fix when opening editor on current selected line
ca
parents: 1909
diff changeset
  1521
!
2f57720597d3 bug fix when opening editor on current selected line
ca
parents: 1909
diff changeset
  1522
2f57720597d3 bug fix when opening editor on current selected line
ca
parents: 1909
diff changeset
  1523
buttonPressOrReleaseAtLine:aLnNr x:x y:y
2f57720597d3 bug fix when opening editor on current selected line
ca
parents: 1909
diff changeset
  1524
    "handle a button press or release at a line
2f57720597d3 bug fix when opening editor on current selected line
ca
parents: 1909
diff changeset
  1525
    "
2f57720597d3 bug fix when opening editor on current selected line
ca
parents: 1909
diff changeset
  1526
    aLnNr == self selectedIndex ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1527
	editorView notNil ifTrue:[^ self].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1528
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1529
	self openEditorAction notNil ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1530
	    self openEditorAtX:x y:y.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1531
	    editorView notNil ifTrue:[^ self].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1532
	].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1533
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1534
	ignoreReselect ifFalse:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1535
	    (toggleSelect and:[self sensor ctrlDown]) ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1536
		self selection:nil
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1537
	    ] ifFalse:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1538
		self selectionChanged
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1539
	    ].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1540
	].
1915
2f57720597d3 bug fix when opening editor on current selected line
ca
parents: 1909
diff changeset
  1541
    ] ifFalse:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1542
	(self selectWithoutScroll:aLnNr redraw:true) ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1543
	    self selectionChanged
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1544
	]
1741
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
  1545
    ].
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1546
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1547
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1548
buttonRelease:button x:x y:y
3750
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1549
    "a button was released"
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1550
3205
7ff2e20b37d4 *** empty log message ***
ca
parents: 3202
diff changeset
  1551
    |makeSelectionVisible|
7ff2e20b37d4 *** empty log message ***
ca
parents: 3202
diff changeset
  1552
3750
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1553
    button == 1 ifTrue:[
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1554
        makeSelectionVisible := modelChangedDuringButtonPress.
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1555
        buttonMotionAction   := modelChangedDuringButtonPress := nil.
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1556
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1557
        buttonReleaseAction notNil ifTrue:[
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1558
            buttonReleaseAction value.
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1559
            buttonReleaseAction := nil.
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1560
        ].
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1561
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1562
        self cursorEntersItem:nil.
2401
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  1563
    ].
1748
0a2213a15e06 support of auto scrolling
ca
parents: 1747
diff changeset
  1564
    self stopAutoScroll.
3205
7ff2e20b37d4 *** empty log message ***
ca
parents: 3202
diff changeset
  1565
7ff2e20b37d4 *** empty log message ***
ca
parents: 3202
diff changeset
  1566
    (makeSelectionVisible == true and:[self hasSelection]) ifTrue:[
3750
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1567
        self makeSelectionVisible
3205
7ff2e20b37d4 *** empty log message ***
ca
parents: 3202
diff changeset
  1568
    ].
3750
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1569
948546ea76a5 fixed handling of menu button (fire on release)
Claus Gittinger <cg@exept.de>
parents: 3740
diff changeset
  1570
    super buttonRelease:button x:x y:y
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1571
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1572
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1573
characterPress:aKey x:x y:y
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1574
    " a character is pressed - lookup and change selection
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1575
    "
2482
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2455
diff changeset
  1576
    |lnNr size idx stp to1 fr2|
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1577
2418
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1578
    size := self size.
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1579
    size > 1 ifFalse:[^ self].
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1580
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1581
    lnNr := self firstInSelection.
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1582
    lnNr isNil ifTrue:[lnNr := 0].
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1583
2482
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2455
diff changeset
  1584
    self sensor shiftDown ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1585
	stp := -1.              "/ search backward
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1586
	to1 :=  1.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1587
	fr2 := size.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1588
    ] ifFalse:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1589
	stp := 1.               "/ search forward
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1590
	to1 := size.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1591
	fr2 := 1.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1592
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1593
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1594
    idx := self findLineFrom:lnNr+stp to:to1 by:stp startingWithCharacter:aKey.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1595
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1596
    idx == 0 ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1597
	idx := self findLineFrom:fr2 to:lnNr-stp by:stp startingWithCharacter:aKey.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1598
	idx == 0 ifTrue:[^ self].
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1599
    ].
2418
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1600
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1601
    self selection:idx.
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1602
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1603
    keyActionStyle == #selectAndDoubleClick ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1604
	self doubleClicked
2418
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1605
    ].
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1606
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1607
1768
04b330a75f75 allow for subclasses to redefine character search
Claus Gittinger <cg@exept.de>
parents: 1758
diff changeset
  1608
characterSearchItemStringAt:anIndex
2418
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1609
    "for first-character search:
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1610
     return a lines item-string.
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1611
     For multi-col items, this may be different from the actual string
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1612
    "
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1613
    |item s|
1768
04b330a75f75 allow for subclasses to redefine character search
Claus Gittinger <cg@exept.de>
parents: 1758
diff changeset
  1614
2408
8b0d11537dc0 accessing list indirect
ca
parents: 2404
diff changeset
  1615
    item := self at:anIndex ifAbsent:nil.
2418
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1616
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1617
    item isHierarchicalItem ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1618
	item := item string
2418
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1619
    ].
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1620
    item isNil ifTrue:[^ nil].
1768
04b330a75f75 allow for subclasses to redefine character search
Claus Gittinger <cg@exept.de>
parents: 1758
diff changeset
  1621
2455
44300555526c Convert Object>>errorSignal -> Error
Stefan Vogel <sv@exept.de>
parents: 2447
diff changeset
  1622
    (Error catch:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1623
	s := item asString
2418
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1624
    ]) ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1625
	s := item displayString
2418
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1626
    ].
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  1627
    ^ s
1768
04b330a75f75 allow for subclasses to redefine character search
Claus Gittinger <cg@exept.de>
parents: 1758
diff changeset
  1628
!
04b330a75f75 allow for subclasses to redefine character search
Claus Gittinger <cg@exept.de>
parents: 1758
diff changeset
  1629
1917
21964f5b1cc1 fixed selection redraw when resizing (larger) in motif mode
Claus Gittinger <cg@exept.de>
parents: 1915
diff changeset
  1630
containerChangedSize
21964f5b1cc1 fixed selection redraw when resizing (larger) in motif mode
Claus Gittinger <cg@exept.de>
parents: 1915
diff changeset
  1631
    "/ stupid kludge for motif-style (which draws a frame at the right-edge)
21964f5b1cc1 fixed selection redraw when resizing (larger) in motif mode
Claus Gittinger <cg@exept.de>
parents: 1915
diff changeset
  1632
    "/ cg: I think it should not (see normal SelectionInListView, which does only
21964f5b1cc1 fixed selection redraw when resizing (larger) in motif mode
Claus Gittinger <cg@exept.de>
parents: 1915
diff changeset
  1633
    "/     draw the frame at the top and bottom, but NOT at the left and right
21964f5b1cc1 fixed selection redraw when resizing (larger) in motif mode
Claus Gittinger <cg@exept.de>
parents: 1915
diff changeset
  1634
2409
68095c891ceb reuse selection methods (prepared for common controller)
ca
parents: 2408
diff changeset
  1635
    self hasSelection ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1636
	(hilightFrameColor notNil
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1637
	or:[hilightStyle == #motif
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1638
	or:[hilightLevel ~~ 0]]) ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1639
	   "/ invalidate the right-edge
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1640
	    self invalidate:(((width-3) @ 0) corner:((width-1) @ (height-1))).
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1641
	]
1917
21964f5b1cc1 fixed selection redraw when resizing (larger) in motif mode
Claus Gittinger <cg@exept.de>
parents: 1915
diff changeset
  1642
    ].
21964f5b1cc1 fixed selection redraw when resizing (larger) in motif mode
Claus Gittinger <cg@exept.de>
parents: 1915
diff changeset
  1643
21964f5b1cc1 fixed selection redraw when resizing (larger) in motif mode
Claus Gittinger <cg@exept.de>
parents: 1915
diff changeset
  1644
    super containerChangedSize.
21964f5b1cc1 fixed selection redraw when resizing (larger) in motif mode
Claus Gittinger <cg@exept.de>
parents: 1915
diff changeset
  1645
!
21964f5b1cc1 fixed selection redraw when resizing (larger) in motif mode
Claus Gittinger <cg@exept.de>
parents: 1915
diff changeset
  1646
2377
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1647
cursorEntersItem:anItemOrNil
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1648
    "the cursor enters an item or nil
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1649
    "
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1650
    |lnNr x|
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1651
2408
8b0d11537dc0 accessing list indirect
ca
parents: 2404
diff changeset
  1652
    (shown and:[self size ~~ 0]) ifFalse:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1653
	cursorItem := nil.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1654
	^ self.
2377
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1655
    ].
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1656
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1657
    anItemOrNil == cursorItem ifTrue:[ ^ self ].
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1658
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1659
    2 timesRepeat:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1660
	cursorItem notNil ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1661
	    lnNr := self identityIndexOf:cursorItem.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1662
	    lnNr notNil ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1663
		x := self xVisibleOfItem:cursorItem.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1664
		self invalidateLineAt:lnNr fromX:x
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1665
	    ].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1666
	].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1667
	"/ set the new item
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1668
	cursorItem := anItemOrNil.
2377
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1669
    ].
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1670
    cursorItem notNil ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1671
	self makeLineVisible:lnNr
2377
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1672
    ].
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1673
!
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1674
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1675
doubleClicked
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1676
    "handle a double click
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1677
    "
2416
dd563121a967 instead of #numArgs use: #valueWithOptionalArgument:and
ca
parents: 2413
diff changeset
  1678
    |arg|
dd563121a967 instead of #numArgs use: #valueWithOptionalArgument:and
ca
parents: 2413
diff changeset
  1679
dd563121a967 instead of #numArgs use: #valueWithOptionalArgument:and
ca
parents: 2413
diff changeset
  1680
    doubleClickActionBlock notNil ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1681
	arg := self selectedIndex.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1682
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1683
	arg ~~ 0 ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1684
	    doubleClickActionBlock valueWithOptionalArgument:arg and:self.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1685
	]
2416
dd563121a967 instead of #numArgs use: #valueWithOptionalArgument:and
ca
parents: 2413
diff changeset
  1686
    ].
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1687
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1688
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1689
findLineFrom:aStart to:aStop by:aStep startingWithCharacter:aCharacter
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1690
    "find a line starting with a character
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1691
    "
2408
8b0d11537dc0 accessing list indirect
ca
parents: 2404
diff changeset
  1692
    |char lbl cmp
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1693
     size     "{ Class:SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1694
     start    "{ Class:SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1695
     stop     "{ Class:SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1696
    |
2408
8b0d11537dc0 accessing list indirect
ca
parents: 2404
diff changeset
  1697
    (size := self size) ~~ 0 ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1698
	aStep > 0 ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1699
	    aStart > aStop ifTrue:[^ 0].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1700
	] ifFalse:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1701
	    (aStep == 0 or:[aStop > aStart]) ifTrue:[^ 0]
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1702
	].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1703
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1704
	start := aStart < 0 ifTrue:[1] ifFalse:[aStart min:size].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1705
	stop  := aStop  < 0 ifTrue:[1] ifFalse:[aStop  min:size].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1706
	char  := aCharacter asUppercase.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1707
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1708
	start to:stop by:aStep do:[:anIndex|
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1709
	    lbl := self characterSearchItemStringAt:anIndex.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1710
	    lbl notNil ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1711
		cmp := lbl string at:1 ifAbsent:nil.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1712
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1713
		cmp notNil ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1714
		    (char == cmp or:[char == cmp asUppercase]) ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1715
			(self canSelectIndex:anIndex forAdd:false) ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1716
			    ^ anIndex
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1717
			].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1718
			^ 0
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1719
		    ]
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1720
		]
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1721
	    ]
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1722
	]
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1723
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1724
    ^ 0
3081
0af6dce8cbf0 first look for the next item then do a select check
fm
parents: 2976
diff changeset
  1725
0af6dce8cbf0 first look for the next item then do a select check
fm
parents: 2976
diff changeset
  1726
    "Modified: / 15-09-2006 / 11:26:29 / User"
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1727
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1728
3338
01ad784543fc no underline-highlighting
Claus Gittinger <cg@exept.de>
parents: 3275
diff changeset
  1729
invalidateLineOfItem:anItem
01ad784543fc no underline-highlighting
Claus Gittinger <cg@exept.de>
parents: 3275
diff changeset
  1730
    |lnNr x|
01ad784543fc no underline-highlighting
Claus Gittinger <cg@exept.de>
parents: 3275
diff changeset
  1731
01ad784543fc no underline-highlighting
Claus Gittinger <cg@exept.de>
parents: 3275
diff changeset
  1732
    lnNr := self identityIndexOf:enterItem.
01ad784543fc no underline-highlighting
Claus Gittinger <cg@exept.de>
parents: 3275
diff changeset
  1733
    lnNr notNil ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1734
	x := self xVisibleOfItem:enterItem.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1735
	self invalidateLineAt:lnNr fromX:x
3338
01ad784543fc no underline-highlighting
Claus Gittinger <cg@exept.de>
parents: 3275
diff changeset
  1736
    ].
01ad784543fc no underline-highlighting
Claus Gittinger <cg@exept.de>
parents: 3275
diff changeset
  1737
!
01ad784543fc no underline-highlighting
Claus Gittinger <cg@exept.de>
parents: 3275
diff changeset
  1738
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1739
keyPress:aKey x:x y:y
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1740
    "a key was pressed - handle page-keys here
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1741
    "
2365
bdf6954a0358 key handling: EndOfText EndOfLine BeginOfText BeginOfLine
ca
parents: 2361
diff changeset
  1742
    <resource: #keyboard( #CursorUp #CursorDown #EndOfText #EndOfLine
4181
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1743
                          #BeginOfText #BeginOfLine #Return
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1744
                          #CmdReturn #CmdCursorUp #CmdCursorDown #SelectAll)>
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1745
2413
49f5c28b1364 key handling
ca
parents: 2410
diff changeset
  1746
    |lineNr listSize shifted newSel step start|
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1747
2377
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1748
    enabled ifFalse:[ ^ self ].
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1749
2408
8b0d11537dc0 accessing list indirect
ca
parents: 2404
diff changeset
  1750
    listSize := self size.
2377
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1751
    listSize == 0 ifTrue:[^ self].
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1752
2365
bdf6954a0358 key handling: EndOfText EndOfLine BeginOfText BeginOfLine
ca
parents: 2361
diff changeset
  1753
    aKey isCharacter ifTrue:[
4181
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1754
        keyActionStyle notNil ifTrue:[
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1755
            keyActionStyle == #pass ifTrue:[
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1756
                super keyPress:aKey x:x y:y
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1757
            ] ifFalse:[
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1758
                self characterPress:aKey x:x y:y.
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1759
            ].
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1760
        ].
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1761
        ^ self
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1762
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1763
2377
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1764
    aKey == #Escape ifTrue:[
4181
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1765
        cursorItem notNil ifTrue:[
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1766
            self cursorEntersItem:nil.
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1767
            self makeSelectionVisible.
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1768
        ].
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1769
        super keyPress:aKey x:x y:y.
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1770
        ^ self
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1771
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1772
2365
bdf6954a0358 key handling: EndOfText EndOfLine BeginOfText BeginOfLine
ca
parents: 2361
diff changeset
  1773
    ((aKey == #BeginOfText) or:[aKey == #BeginOfLine]) ifTrue:[
4181
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1774
        self cursorEntersItem:nil.
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1775
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1776
        1 to:listSize do:[:i|
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1777
            (self canSelectIndex:i forAdd:false) ifTrue:[
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1778
                self selection:i.
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1779
                ^ self
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1780
            ].
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1781
        ].
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1782
        ^ self
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1783
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1784
2365
bdf6954a0358 key handling: EndOfText EndOfLine BeginOfText BeginOfLine
ca
parents: 2361
diff changeset
  1785
    ((aKey == #EndOfText) or:[aKey == #EndOfLine]) ifTrue:[
4181
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1786
        self cursorEntersItem:nil.
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1787
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1788
        listSize to:1 by:-1 do:[:i|
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1789
            (self canSelectIndex:i forAdd:false) ifTrue:[
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1790
                self selection:i.
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1791
                ^ self
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1792
            ].
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1793
        ].
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1794
        ^ self
2377
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1795
    ].
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1796
    lineNr := self cursorLine.
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1797
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1798
    aKey == #Return ifTrue:[
4181
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1799
        returnKeyActionStyle == #pass ifTrue:[
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1800
            super keyPress:aKey x:x y:y
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1801
        ] ifFalse:[
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1802
            lineNr ~~ 0 ifTrue:[
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1803
                self cursorEntersItem:nil.
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1804
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1805
                (self canSelectIndex:lineNr forAdd:false) ifTrue:[
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1806
                    self selection:lineNr
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1807
                ].
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1808
            ].
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1809
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1810
            returnKeyActionStyle == #doubleClick ifTrue:[
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1811
                self doubleClicked
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1812
            ].
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1813
        ].
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1814
        ^ self
2377
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1815
    ].
2413
49f5c28b1364 key handling
ca
parents: 2410
diff changeset
  1816
3607
bec9e4c71bf4 implemented #selectAll
Claus Gittinger <cg@exept.de>
parents: 3526
diff changeset
  1817
    aKey == #SelectAll ifTrue:[
4181
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1818
        self selectAll.
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1819
        ^ self
3607
bec9e4c71bf4 implemented #selectAll
Claus Gittinger <cg@exept.de>
parents: 3526
diff changeset
  1820
    ].
bec9e4c71bf4 implemented #selectAll
Claus Gittinger <cg@exept.de>
parents: 3526
diff changeset
  1821
2413
49f5c28b1364 key handling
ca
parents: 2410
diff changeset
  1822
    (lineNr == 0 and:[selection notNil]) ifTrue:[
4181
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1823
        multipleSelectOk ifFalse:[lineNr := selection]
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1824
                          ifTrue:[lineNr := selection last].
2413
49f5c28b1364 key handling
ca
parents: 2410
diff changeset
  1825
    ].
49f5c28b1364 key handling
ca
parents: 2410
diff changeset
  1826
49f5c28b1364 key handling
ca
parents: 2410
diff changeset
  1827
    aKey == #CmdReturn ifTrue:[
4181
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1828
        "/ toggle selection of the item
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1829
        lineNr ~~ 0 ifTrue:[
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1830
            (self isInSelection:lineNr) ifTrue:[ self removeFromSelection:lineNr ]
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1831
                                       ifFalse:[ self addToSelection:lineNr ].
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1832
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1833
            self cursorEntersItem:(self at:lineNr).
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1834
        ].
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1835
        ^ self
2413
49f5c28b1364 key handling
ca
parents: 2410
diff changeset
  1836
    ].
49f5c28b1364 key handling
ca
parents: 2410
diff changeset
  1837
49f5c28b1364 key handling
ca
parents: 2410
diff changeset
  1838
    (aKey == #CmdCursorDown or:[aKey == #CmdCursorUp]) ifTrue:[
4181
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1839
        aKey == #CmdCursorDown ifTrue:[
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1840
            lineNr := lineNr + 1.
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1841
            lineNr > listSize ifTrue:[lineNr := 1].
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1842
        ] ifFalse:[
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1843
            lineNr := lineNr - 1.
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1844
            lineNr < 1 ifTrue:[lineNr := listSize].
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1845
        ].
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1846
        self cursorEntersItem:(self at:lineNr).
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1847
        ^ self
2413
49f5c28b1364 key handling
ca
parents: 2410
diff changeset
  1848
    ].
49f5c28b1364 key handling
ca
parents: 2410
diff changeset
  1849
49f5c28b1364 key handling
ca
parents: 2410
diff changeset
  1850
    (aKey == #CursorUp or:[aKey == #CursorDown]) ifFalse:[
4181
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1851
        super keyPress:aKey x:x y:y.
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1852
        ^ self
2365
bdf6954a0358 key handling: EndOfText EndOfLine BeginOfText BeginOfLine
ca
parents: 2361
diff changeset
  1853
    ].
2413
49f5c28b1364 key handling
ca
parents: 2410
diff changeset
  1854
    shifted := (multipleSelectOk and:[self sensor shiftDown]).
2377
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1855
    self cursorEntersItem:nil.
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1856
2671
bba7717907bb compress keyEvents cursor Up and Down
ca
parents: 2670
diff changeset
  1857
    aKey == #CursorDown ifTrue:[ step :=  1.]
4181
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1858
                       ifFalse:[ step := -1.].
2671
bba7717907bb compress keyEvents cursor Up and Down
ca
parents: 2670
diff changeset
  1859
bba7717907bb compress keyEvents cursor Up and Down
ca
parents: 2670
diff changeset
  1860
    shifted ifFalse:[ |compressed|
4181
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1861
        compressed := self sensor compressKeyPressEventsWithKey:aKey.
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1862
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1863
        compressed ~~ 0 ifTrue:[
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1864
            aKey == #CursorDown ifTrue:[
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1865
                lineNr := lineNr + compressed.
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1866
                lineNr > listSize ifTrue:[lineNr := 1].
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1867
            ] ifFalse:[
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1868
                lineNr := lineNr - compressed.
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1869
                lineNr < 1 ifTrue:[lineNr := listSize].
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1870
            ].
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1871
        ].
2671
bba7717907bb compress keyEvents cursor Up and Down
ca
parents: 2670
diff changeset
  1872
    ].
2377
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1873
    start  := lineNr.
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1874
    lineNr := lineNr + step.
2368
8101aa8d50d2 cursor select behaviour in: #keyPress:x:y:
ca
parents: 2365
diff changeset
  1875
2377
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1876
    [ lineNr ~~ start ] whileTrue:[
4181
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1877
        (lineNr between:1 and:listSize) ifFalse:[
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1878
            lineNr < 1 ifTrue:[ lineNr := listSize ]
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1879
                      ifFalse:[ lineNr := 1 ].
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1880
        ] ifTrue:[
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1881
            (self canSelectIndex:lineNr forAdd:shifted) ifTrue:[
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1882
                shifted ifFalse:[
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1883
                    self selection:lineNr.
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1884
                    ^ self
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1885
                ].
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1886
                (self isInSelection:lineNr) ifFalse:[
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1887
                    selection isNil ifTrue:[ newSel := Array with:lineNr ]
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1888
                                   ifFalse:[ newSel := selection copyWith:lineNr ].
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1889
                ] ifTrue:[
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1890
                    (start ~~ 0 and:[selection size > 1]) ifFalse:[
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1891
                        ^ self
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1892
                    ].
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1893
                    newSel := selection copyWithout:start.
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1894
                ].
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1895
                self selection:newSel.
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1896
"/                self selectWithoutScroll:newSel redraw:true.
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1897
"/                self makeLineVisible:lineNr.
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1898
"/                self selectionChanged.
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1899
                ^ self
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1900
            ].
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1901
            lineNr := lineNr + step.
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  1902
        ]
2377
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  1903
    ].
1917
21964f5b1cc1 fixed selection redraw when resizing (larger) in motif mode
Claus Gittinger <cg@exept.de>
parents: 1915
diff changeset
  1904
!
21964f5b1cc1 fixed selection redraw when resizing (larger) in motif mode
Claus Gittinger <cg@exept.de>
parents: 1915
diff changeset
  1905
2323
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
  1906
pointerEntersItem:anItemOrNil
4571
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
  1907
    "the pointer moves over an item or nil"
2323
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
  1908
2408
8b0d11537dc0 accessing list indirect
ca
parents: 2404
diff changeset
  1909
    (shown and:[self size ~~ 0]) ifFalse:[
4571
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
  1910
        enterItem := nil.
bf04b7618d7c class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4570
diff changeset
  1911
        ^ self.
2323
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
  1912
    ].
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
  1913
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
  1914
    anItemOrNil == enterItem ifTrue:[ ^ self ].
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
  1915
3338
01ad784543fc no underline-highlighting
Claus Gittinger <cg@exept.de>
parents: 3275
diff changeset
  1916
    enterItem notNil ifTrue:[ self invalidateLineOfItem:enterItem ].
01ad784543fc no underline-highlighting
Claus Gittinger <cg@exept.de>
parents: 3275
diff changeset
  1917
    enterItem := anItemOrNil.
01ad784543fc no underline-highlighting
Claus Gittinger <cg@exept.de>
parents: 3275
diff changeset
  1918
    enterItem notNil ifTrue:[ self invalidateLineOfItem:enterItem ].
2323
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
  1919
!
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
  1920
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
  1921
pointerLeave:state
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
  1922
    self pointerEntersItem:nil.
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
  1923
    super pointerLeave:state.
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
  1924
!
8257059da044 support of highlighting items under mouse
ca
parents: 2309
diff changeset
  1925
1917
21964f5b1cc1 fixed selection redraw when resizing (larger) in motif mode
Claus Gittinger <cg@exept.de>
parents: 1915
diff changeset
  1926
sizeChanged:how
2274
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2250
diff changeset
  1927
    |selectionWasVisible|
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2250
diff changeset
  1928
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2250
diff changeset
  1929
    selectionWasVisible := false.
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2250
diff changeset
  1930
1917
21964f5b1cc1 fixed selection redraw when resizing (larger) in motif mode
Claus Gittinger <cg@exept.de>
parents: 1915
diff changeset
  1931
    "/ stupid kludge for motif-style (which draws a frame at the right-edge)
21964f5b1cc1 fixed selection redraw when resizing (larger) in motif mode
Claus Gittinger <cg@exept.de>
parents: 1915
diff changeset
  1932
    "/ cg: I think it should not (see normal SelectionInListView, which does only
21964f5b1cc1 fixed selection redraw when resizing (larger) in motif mode
Claus Gittinger <cg@exept.de>
parents: 1915
diff changeset
  1933
    "/     draw the frame at the top and bottom, but NOT at the left and right
2409
68095c891ceb reuse selection methods (prepared for common controller)
ca
parents: 2408
diff changeset
  1934
68095c891ceb reuse selection methods (prepared for common controller)
ca
parents: 2408
diff changeset
  1935
    self hasSelection ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1936
	selectionWasVisible := self isSelectionVisibleIn:(previousExtent ? self extent).
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1937
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1938
	(hilightFrameColor notNil
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1939
	or:[hilightStyle == #motif
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1940
	or:[hilightLevel ~~ 0]]) ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1941
	   "/ invalidate the right-edge
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1942
	    self invalidate:(((width-3) @ 0) corner:((width-1) @ (height-1))).
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1943
	].
1917
21964f5b1cc1 fixed selection redraw when resizing (larger) in motif mode
Claus Gittinger <cg@exept.de>
parents: 1915
diff changeset
  1944
    ].
21964f5b1cc1 fixed selection redraw when resizing (larger) in motif mode
Claus Gittinger <cg@exept.de>
parents: 1915
diff changeset
  1945
    super sizeChanged:how.
2274
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2250
diff changeset
  1946
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2250
diff changeset
  1947
    selectionWasVisible ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1948
	self makeSelectionVisible
2274
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2250
diff changeset
  1949
    ].
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1950
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1951
1421
95ac3092660a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1952
!SelectionInListModelView methodsFor:'focus handling'!
95ac3092660a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1953
3137
7e8fae56b94c highlight selection dependent on has focus
ca
parents: 3081
diff changeset
  1954
showFocus:explicit
7e8fae56b94c highlight selection dependent on has focus
ca
parents: 3081
diff changeset
  1955
    self invalidateSelection.
7e8fae56b94c highlight selection dependent on has focus
ca
parents: 3081
diff changeset
  1956
    super showFocus:explicit
7e8fae56b94c highlight selection dependent on has focus
ca
parents: 3081
diff changeset
  1957
!
7e8fae56b94c highlight selection dependent on has focus
ca
parents: 3081
diff changeset
  1958
7e8fae56b94c highlight selection dependent on has focus
ca
parents: 3081
diff changeset
  1959
showNoFocus:explicit
7e8fae56b94c highlight selection dependent on has focus
ca
parents: 3081
diff changeset
  1960
    self invalidateSelection.
7e8fae56b94c highlight selection dependent on has focus
ca
parents: 3081
diff changeset
  1961
    super showNoFocus:explicit
7e8fae56b94c highlight selection dependent on has focus
ca
parents: 3081
diff changeset
  1962
!
7e8fae56b94c highlight selection dependent on has focus
ca
parents: 3081
diff changeset
  1963
1421
95ac3092660a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1964
wantsFocusWithPointerEnter
95ac3092660a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1965
    "return true, if I want the focus when
95ac3092660a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1966
     the mouse pointer enters"
95ac3092660a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1967
2701
d95a0a764f4d do return false in #wantsFocusWithPointerEnter if an ecitor is open
ca
parents: 2671
diff changeset
  1968
    (editorView notNil and:[editorView realized]) ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1969
	^ false
2701
d95a0a764f4d do return false in #wantsFocusWithPointerEnter if an ecitor is open
ca
parents: 2671
diff changeset
  1970
    ].
d95a0a764f4d do return false in #wantsFocusWithPointerEnter if an ecitor is open
ca
parents: 2671
diff changeset
  1971
2959
afaf27dffcc9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2948
diff changeset
  1972
    (UserPreferences current focusFollowsMouse ~~ false
1421
95ac3092660a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1973
    and:[(styleSheet at:#'selection.requestFocusOnPointerEnter' default:true)
95ac3092660a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1974
    ]) ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1975
	self size > 0 ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1976
	    ^ true
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  1977
	]
1421
95ac3092660a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1978
    ].
95ac3092660a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1979
    ^ false
95ac3092660a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1980
! !
95ac3092660a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1981
5069
fac483ef2664 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5065
diff changeset
  1982
!SelectionInListModelView methodsFor:'help'!
fac483ef2664 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5065
diff changeset
  1983
5677
6b247ffd5944 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5663
diff changeset
  1984
helpTextAt:aPoint
5069
fac483ef2664 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5065
diff changeset
  1985
    "for lines which are clipped, provide the full line as a tooltip
fac483ef2664 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5065
diff changeset
  1986
     (as in other list views)"
fac483ef2664 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5065
diff changeset
  1987
     
5381
cb54dd13c7c3 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1988
    |lineNr len line text text2|
5069
fac483ef2664 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5065
diff changeset
  1989
5083
6cd08a5a19a6 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5073
diff changeset
  1990
    lineNr := self yVisibleToLineNr:aPoint y.
5069
fac483ef2664 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5065
diff changeset
  1991
    lineNr isNil ifTrue:[ ^ nil ].
fac483ef2664 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5065
diff changeset
  1992
5381
cb54dd13c7c3 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1993
    line := self at:lineNr ifAbsent:nil.
cb54dd13c7c3 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1994
5069
fac483ef2664 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5065
diff changeset
  1995
    len := self widthOfWidestLineBetween:lineNr and:lineNr.
fac483ef2664 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5065
diff changeset
  1996
    len > width ifTrue:[
fac483ef2664 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5065
diff changeset
  1997
        line notNil ifTrue:[
5381
cb54dd13c7c3 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1998
            text := line displayString string 
5496
0a189e9110c4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5426
diff changeset
  1999
                        collect:[:ch | ch isSeparator ifTrue:[Character space] ifFalse:[ch]].
5069
fac483ef2664 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5065
diff changeset
  2000
        ].    
fac483ef2664 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5065
diff changeset
  2001
    ].
5381
cb54dd13c7c3 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  2002
    
cb54dd13c7c3 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  2003
    "/ a hack; maybe we'll find a better solution...
cb54dd13c7c3 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  2004
    (line respondsTo:#helpText) ifTrue:[
cb54dd13c7c3 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  2005
        (text2 := line helpText) notEmptyOrNil ifTrue:[
cb54dd13c7c3 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  2006
            text2 := text2 withCRs.
cb54dd13c7c3 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  2007
            text isEmptyOrNil ifTrue:[
cb54dd13c7c3 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  2008
                text := text2
cb54dd13c7c3 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  2009
            ] ifFalse:[
cb54dd13c7c3 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  2010
                text := text , Character cr , text2.
cb54dd13c7c3 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  2011
            ].    
cb54dd13c7c3 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  2012
        ]
cb54dd13c7c3 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  2013
    ].    
cb54dd13c7c3 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  2014
cb54dd13c7c3 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  2015
    ^ text
5496
0a189e9110c4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5426
diff changeset
  2016
0a189e9110c4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5426
diff changeset
  2017
    "Modified: / 20-02-2017 / 10:11:58 / cg"
5069
fac483ef2664 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5065
diff changeset
  2018
! !
fac483ef2664 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5065
diff changeset
  2019
2501
832cbac295b8 method category rename
Claus Gittinger <cg@exept.de>
parents: 2493
diff changeset
  2020
!SelectionInListModelView methodsFor:'initialization & release'!
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2021
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2022
fetchResources
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2023
    "fetch device colors and ..., to avoid reallocation at redraw time;
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2024
     *** called after a create or snapin to fetch all device resources
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2025
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2026
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2027
    super fetchResources.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2028
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2029
    hilightFgColor    := self colorOnDevice:hilightFgColor.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2030
    hilightBgColor    := self colorOnDevice:hilightBgColor.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2031
    hilightFrameColor := self colorOnDevice:hilightFrameColor.
5002
ab6066bcf4d7 device access
Claus Gittinger <cg@exept.de>
parents: 4948
diff changeset
  2032
    lineMask          := lineMask  onDevice:device.
3137
7e8fae56b94c highlight selection dependent on has focus
ca
parents: 3081
diff changeset
  2033
7e8fae56b94c highlight selection dependent on has focus
ca
parents: 3081
diff changeset
  2034
    hilightFgColorNoFocus := self colorOnDevice:hilightFgColorNoFocus.
7e8fae56b94c highlight selection dependent on has focus
ca
parents: 3081
diff changeset
  2035
    hilightBgColorNoFocus := self colorOnDevice:hilightBgColorNoFocus.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2036
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2037
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2038
initStyle
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2039
    "setup viewStyle specifics
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2040
    "
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2041
    <resource: #style (#'selection.selectOnMenuButton'
3851
03296acbf762 changed: #initStyle
Stefan Vogel <sv@exept.de>
parents: 3778
diff changeset
  2042
                       #'selection.font')>
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2043
    super initStyle.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2044
2377
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  2045
    lineMask isNil ifTrue:[
3851
03296acbf762 changed: #initStyle
Stefan Vogel <sv@exept.de>
parents: 3778
diff changeset
  2046
        lineMask := Form width:2 height:2 fromArray:#[16rAA 16r55].
2377
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  2047
    ].
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  2048
2228
5268b9c3be4a add behavior: selectOnButtonMenu; update documentation
ca
parents: 2225
diff changeset
  2049
    hilightFrameColor   := nil.
5268b9c3be4a add behavior: selectOnButtonMenu; update documentation
ca
parents: 2225
diff changeset
  2050
    hilightStyle        := DefaultHilightStyle.
5268b9c3be4a add behavior: selectOnButtonMenu; update documentation
ca
parents: 2225
diff changeset
  2051
    highlightMode       := #label.
5268b9c3be4a add behavior: selectOnButtonMenu; update documentation
ca
parents: 2225
diff changeset
  2052
    textStartLeft       := 4.
3461
eb3980ed82ad bugfix: selectTreeElementOnRightClick behaviour
ca
parents: 3455
diff changeset
  2053
    selectOnMenuButton  := styleSheet at:#'selection.selectOnMenuButton' default:nil.
eb3980ed82ad bugfix: selectTreeElementOnRightClick behaviour
ca
parents: 3455
diff changeset
  2054
    selectOnMenuButton isNil ifTrue:[
3851
03296acbf762 changed: #initStyle
Stefan Vogel <sv@exept.de>
parents: 3778
diff changeset
  2055
        selectOnMenuButton := UserPreferences current selectOnRightClick
3461
eb3980ed82ad bugfix: selectTreeElementOnRightClick behaviour
ca
parents: 3455
diff changeset
  2056
    ].
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2057
3927
Claus Gittinger <cg@exept.de>
parents: 3918
diff changeset
  2058
    self font:(SelectionInListView defaultFont).
1741
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
  2059
5002
ab6066bcf4d7 device access
Claus Gittinger <cg@exept.de>
parents: 4948
diff changeset
  2060
    device hasGrayscales ifTrue:[
3851
03296acbf762 changed: #initStyle
Stefan Vogel <sv@exept.de>
parents: 3778
diff changeset
  2061
        "
03296acbf762 changed: #initStyle
Stefan Vogel <sv@exept.de>
parents: 3778
diff changeset
  2062
         must get rid of these hard codings
03296acbf762 changed: #initStyle
Stefan Vogel <sv@exept.de>
parents: 3778
diff changeset
  2063
        "
03296acbf762 changed: #initStyle
Stefan Vogel <sv@exept.de>
parents: 3778
diff changeset
  2064
        (hilightStyle == #next) ifTrue:[
03296acbf762 changed: #initStyle
Stefan Vogel <sv@exept.de>
parents: 3778
diff changeset
  2065
            hilightFgColor := fgColor.
4512
0b737fe17eea class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4483
diff changeset
  2066
            hilightBgColor := self whiteColor.
3851
03296acbf762 changed: #initStyle
Stefan Vogel <sv@exept.de>
parents: 3778
diff changeset
  2067
            hilightFrameColor := fgColor
03296acbf762 changed: #initStyle
Stefan Vogel <sv@exept.de>
parents: 3778
diff changeset
  2068
        ] ifFalse:[
03296acbf762 changed: #initStyle
Stefan Vogel <sv@exept.de>
parents: 3778
diff changeset
  2069
            (hilightStyle == #motif) ifTrue:[
4512
0b737fe17eea class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4483
diff changeset
  2070
                fgColor := self whiteColor.
3851
03296acbf762 changed: #initStyle
Stefan Vogel <sv@exept.de>
parents: 3778
diff changeset
  2071
                bgColor := Grey.
03296acbf762 changed: #initStyle
Stefan Vogel <sv@exept.de>
parents: 3778
diff changeset
  2072
                viewBackground := bgColor.
03296acbf762 changed: #initStyle
Stefan Vogel <sv@exept.de>
parents: 3778
diff changeset
  2073
                hilightFgColor := bgColor.
03296acbf762 changed: #initStyle
Stefan Vogel <sv@exept.de>
parents: 3778
diff changeset
  2074
                hilightBgColor := fgColor.
03296acbf762 changed: #initStyle
Stefan Vogel <sv@exept.de>
parents: 3778
diff changeset
  2075
            ] ifFalse:[
03296acbf762 changed: #initStyle
Stefan Vogel <sv@exept.de>
parents: 3778
diff changeset
  2076
                (hilightStyle == #openwin) ifTrue:[
03296acbf762 changed: #initStyle
Stefan Vogel <sv@exept.de>
parents: 3778
diff changeset
  2077
                    hilightFgColor := fgColor.
4647
caf78f4a0548 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4638
diff changeset
  2078
                    hilightBgColor := Color gray.
3851
03296acbf762 changed: #initStyle
Stefan Vogel <sv@exept.de>
parents: 3778
diff changeset
  2079
                ]
03296acbf762 changed: #initStyle
Stefan Vogel <sv@exept.de>
parents: 3778
diff changeset
  2080
            ]
03296acbf762 changed: #initStyle
Stefan Vogel <sv@exept.de>
parents: 3778
diff changeset
  2081
        ]
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2082
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2083
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2084
    hilightFgColor isNil ifTrue:[
3851
03296acbf762 changed: #initStyle
Stefan Vogel <sv@exept.de>
parents: 3778
diff changeset
  2085
        hilightFgColor := bgColor.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2086
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2087
    hilightBgColor isNil ifTrue:[
3851
03296acbf762 changed: #initStyle
Stefan Vogel <sv@exept.de>
parents: 3778
diff changeset
  2088
        hilightBgColor := fgColor.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2089
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2090
    DefaultForegroundColor notNil ifTrue:[
3851
03296acbf762 changed: #initStyle
Stefan Vogel <sv@exept.de>
parents: 3778
diff changeset
  2091
        fgColor := DefaultForegroundColor
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2092
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2093
    DefaultBackgroundColor notNil ifTrue:[
3851
03296acbf762 changed: #initStyle
Stefan Vogel <sv@exept.de>
parents: 3778
diff changeset
  2094
        bgColor := viewBackground := DefaultBackgroundColor
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2095
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2096
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2097
    DefaultHilightForegroundColor notNil ifTrue:[
3851
03296acbf762 changed: #initStyle
Stefan Vogel <sv@exept.de>
parents: 3778
diff changeset
  2098
        hilightFgColor := DefaultHilightForegroundColor
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2099
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2100
    DefaultHilightBackgroundColor notNil ifTrue:[
3851
03296acbf762 changed: #initStyle
Stefan Vogel <sv@exept.de>
parents: 3778
diff changeset
  2101
        hilightBgColor := DefaultHilightBackgroundColor
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2102
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2103
    DefaultHilightFrameColor notNil ifTrue:[
3851
03296acbf762 changed: #initStyle
Stefan Vogel <sv@exept.de>
parents: 3778
diff changeset
  2104
        hilightFrameColor := DefaultHilightFrameColor
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2105
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2106
1741
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
  2107
    hilightLevel := DefaultHilightLevel ? 0.
4570
4da74a5c2f14 class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4568
diff changeset
  2108
    lineSpacing := gc font descent.
4568
664bbb1743ff class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4515
diff changeset
  2109
    lineSpacing := lineSpacing + ((hilightLevel abs > 0) ifTrue:[1] ifFalse:[0]).
1741
d928cdc5f4e5 add #ignoreReselect #toggleSelect; behaviour like SelectionInListView
ca
parents: 1739
diff changeset
  2110
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2111
    hilightFgColor isNil ifTrue:[
3851
03296acbf762 changed: #initStyle
Stefan Vogel <sv@exept.de>
parents: 3778
diff changeset
  2112
        hilightFgColor := bgColor.
03296acbf762 changed: #initStyle
Stefan Vogel <sv@exept.de>
parents: 3778
diff changeset
  2113
        hilightBgColor := fgColor.
3137
7e8fae56b94c highlight selection dependent on has focus
ca
parents: 3081
diff changeset
  2114
    ].
7e8fae56b94c highlight selection dependent on has focus
ca
parents: 3081
diff changeset
  2115
7e8fae56b94c highlight selection dependent on has focus
ca
parents: 3081
diff changeset
  2116
    hilightFgColorNoFocus isNil ifTrue:[
4652
1a4f9ee861c1 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4648
diff changeset
  2117
        hilightFgColorNoFocus := DefaultHilightForegroundColorNoFocus.
1a4f9ee861c1 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4648
diff changeset
  2118
        hilightFgColorNoFocus isNil ifTrue:[
1a4f9ee861c1 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4648
diff changeset
  2119
            hilightFgColorNoFocus := hilightFgColor slightlyLightened.
1a4f9ee861c1 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4648
diff changeset
  2120
        ]
3137
7e8fae56b94c highlight selection dependent on has focus
ca
parents: 3081
diff changeset
  2121
    ].
7e8fae56b94c highlight selection dependent on has focus
ca
parents: 3081
diff changeset
  2122
    hilightBgColorNoFocus isNil ifTrue:[
4648
5c5c17b052fb class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4647
diff changeset
  2123
        hilightBgColorNoFocus := DefaultHilightBackgroundColorNoFocus.
5c5c17b052fb class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4647
diff changeset
  2124
        hilightBgColorNoFocus isNil ifTrue:[ 
4652
1a4f9ee861c1 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4648
diff changeset
  2125
            hilightBgColorNoFocus := hilightBgColor slightlyLightened.
4648
5c5c17b052fb class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4647
diff changeset
  2126
        ].
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2127
    ].
3927
Claus Gittinger <cg@exept.de>
parents: 3918
diff changeset
  2128
Claus Gittinger <cg@exept.de>
parents: 3918
diff changeset
  2129
    "Modified: / 14-08-2010 / 12:23:09 / cg"
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2130
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2131
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2132
initialize
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2133
    "setup default attributes/behavior
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2134
    "
2418
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  2135
    multipleSelectOk     := false.
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  2136
    useIndex             := true.
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  2137
    ignoreReselect       := true.
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  2138
    toggleSelect         := false.
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  2139
    highlightEnterItem   := false.
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  2140
    strikeOut            := false.
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  2141
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  2142
    keyActionStyle       := #select.
14a9dbec8434 support of #keyActionStyle #returnKeyActionStyle #strikeOut
ca
parents: 2416
diff changeset
  2143
    returnKeyActionStyle := #doubleClick.
2324
ada66df6ac14 support of highlighting items under mouse
ca
parents: 2323
diff changeset
  2144
3963
9fd5330c7e40 fix to allow dropping at the bottom
Claus Gittinger <cg@exept.de>
parents: 3927
diff changeset
  2145
    extraSpaceAtBottomForDrop := 20.
9fd5330c7e40 fix to allow dropping at the bottom
Claus Gittinger <cg@exept.de>
parents: 3927
diff changeset
  2146
2324
ada66df6ac14 support of highlighting items under mouse
ca
parents: 2323
diff changeset
  2147
    super initialize.
3963
9fd5330c7e40 fix to allow dropping at the bottom
Claus Gittinger <cg@exept.de>
parents: 3927
diff changeset
  2148
9fd5330c7e40 fix to allow dropping at the bottom
Claus Gittinger <cg@exept.de>
parents: 3927
diff changeset
  2149
    "Modified: / 03-11-2010 / 01:34:54 / cg"
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2150
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2151
1745
4eb3b6b12c99 make selection visible after mapped
ca
parents: 1741
diff changeset
  2152
mapped
4eb3b6b12c99 make selection visible after mapped
ca
parents: 1741
diff changeset
  2153
    "get selection from model; scroll to selection
4eb3b6b12c99 make selection visible after mapped
ca
parents: 1741
diff changeset
  2154
    "
4eb3b6b12c99 make selection visible after mapped
ca
parents: 1741
diff changeset
  2155
    super mapped.
4eb3b6b12c99 make selection visible after mapped
ca
parents: 1741
diff changeset
  2156
    self makeSelectionVisible.
4eb3b6b12c99 make selection visible after mapped
ca
parents: 1741
diff changeset
  2157
!
4eb3b6b12c99 make selection visible after mapped
ca
parents: 1741
diff changeset
  2158
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2159
realize
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2160
    "get selection from model; scroll to selection
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2161
    "
2302
5a2a1d5d09f8 remove asynchronous handling of changes; always disabled because doesn't work
ca
parents: 2275
diff changeset
  2162
    self updateFromModel.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2163
    super realize.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2164
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2165
2493
8b70a26f1694 method category rename
Claus Gittinger <cg@exept.de>
parents: 2482
diff changeset
  2166
!SelectionInListModelView methodsFor:'private-editor'!
1755
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  2167
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  2168
computeEditorLayout
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  2169
    "update the layout of the editor
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  2170
    "
3526
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
  2171
    |lnNr item y0 x0 y1|
1755
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  2172
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  2173
    editorView isNil ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2174
	^ self
1755
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  2175
    ].
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  2176
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  2177
    (    (lnNr := self selectedIndex) == 0
2408
8b0d11537dc0 accessing list indirect
ca
parents: 2404
diff changeset
  2178
     or:[(item := self at:lnNr ifAbsent:nil) isNil]
1755
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  2179
    ) ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2180
	"/ there is no more single selection; thus close the editor
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2181
	^ self closeEditor
1755
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  2182
    ].
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  2183
3526
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
  2184
    x0 := (self xVisibleOfItem:item) - (textStartLeft // 2).
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
  2185
    y0 := self yVisibleOfLine:lnNr.
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
  2186
    y1 := self yVisibleOfLine:(lnNr + 1).
1755
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  2187
3524
854b6484c001 minimumEditorHeight
ca
parents: 3482
diff changeset
  2188
    minimumEditorHeight notNil ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2189
	y1 := y0 + ((y1 - y0) max:minimumEditorHeight).
3524
854b6484c001 minimumEditorHeight
ca
parents: 3482
diff changeset
  2190
    ].
2632
48a2b5f7d091 *** empty log message ***
martin
parents: 2613
diff changeset
  2191
    "/ Changed by cg:
48a2b5f7d091 *** empty log message ***
martin
parents: 2613
diff changeset
  2192
    "/ editorView layout:( Rectangle left:x top:y right:(width - 1 - margin) bottom:(h + 2 "- 1") ).
3526
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
  2193
    editorView layout:( Rectangle left:x0 top:y0-2 right:(width - 1 - margin) bottom:y1 ).
1755
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  2194
!
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  2195
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  2196
openEditorAtX:x y:y
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  2197
    "opens an editor on the current single selection
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  2198
    "
2225
d785c9d86aa3 make selection visible if size changed
penk
parents: 2185
diff changeset
  2199
    |item lnNr x0 y0 editor|
1755
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  2200
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  2201
    self closeEditor.
2308
c012b16422f0 replace ifNotNil: by notNil ifTrue:
ca
parents: 2302
diff changeset
  2202
    shown ifFalse:[^ self ].
2596
771e23c6d9cf access actions by call and not by reference
ca
parents: 2572
diff changeset
  2203
    self openEditorAction isNil ifTrue:[^ self].
1755
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  2204
2225
d785c9d86aa3 make selection visible if size changed
penk
parents: 2185
diff changeset
  2205
    lnNr := self selectedIndex.
d785c9d86aa3 make selection visible if size changed
penk
parents: 2185
diff changeset
  2206
    lnNr == 0 ifTrue:[^ self].
d785c9d86aa3 make selection visible if size changed
penk
parents: 2185
diff changeset
  2207
2408
8b0d11537dc0 accessing list indirect
ca
parents: 2404
diff changeset
  2208
    item := self at:lnNr ifAbsent:nil.
2308
c012b16422f0 replace ifNotNil: by notNil ifTrue:
ca
parents: 2302
diff changeset
  2209
    item isNil ifTrue:[^ self].
1755
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  2210
1915
2f57720597d3 bug fix when opening editor on current selected line
ca
parents: 1909
diff changeset
  2211
    x < (self xVisibleOfItem:item) ifTrue:[
3778
ccbe7479c97b changed: #openEditorAtX:y:
Claus Gittinger <cg@exept.de>
parents: 3750
diff changeset
  2212
        "/ not part of the selection frame; ignorre
ccbe7479c97b changed: #openEditorAtX:y:
Claus Gittinger <cg@exept.de>
parents: 3750
diff changeset
  2213
        ^ self
1755
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  2214
    ].
2225
d785c9d86aa3 make selection visible if size changed
penk
parents: 2185
diff changeset
  2215
    editor := self openEditor.
2308
c012b16422f0 replace ifNotNil: by notNil ifTrue:
ca
parents: 2302
diff changeset
  2216
    editor isNil ifTrue:[^ self].
1755
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  2217
2225
d785c9d86aa3 make selection visible if size changed
penk
parents: 2185
diff changeset
  2218
    y0 := (y - editor origin y) max:0.
d785c9d86aa3 make selection visible if size changed
penk
parents: 2185
diff changeset
  2219
    x0 := (x - editor origin x) max:0.
1755
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  2220
2125
67e0f2c9ad4d event types are private to WindowEvent;
ca
parents: 2070
diff changeset
  2221
    "/ simulate clicking into the editor
2632
48a2b5f7d091 *** empty log message ***
martin
parents: 2613
diff changeset
  2222
48a2b5f7d091 *** empty log message ***
martin
parents: 2613
diff changeset
  2223
    "/ Changed by cg:
48a2b5f7d091 *** empty log message ***
martin
parents: 2613
diff changeset
  2224
    "/ but only if there was no initial selection
48a2b5f7d091 *** empty log message ***
martin
parents: 2613
diff changeset
  2225
    editor isInputField ifTrue:[
3778
ccbe7479c97b changed: #openEditorAtX:y:
Claus Gittinger <cg@exept.de>
parents: 3750
diff changeset
  2226
        editor hasSelection ifFalse:[
ccbe7479c97b changed: #openEditorAtX:y:
Claus Gittinger <cg@exept.de>
parents: 3750
diff changeset
  2227
            self sensor
ccbe7479c97b changed: #openEditorAtX:y:
Claus Gittinger <cg@exept.de>
parents: 3750
diff changeset
  2228
                pushEvent:(WindowEvent buttonPress:1 x:x0 y:y0 view:editor);
ccbe7479c97b changed: #openEditorAtX:y:
Claus Gittinger <cg@exept.de>
parents: 3750
diff changeset
  2229
                pushEvent:(WindowEvent buttonRelease:1 x:x0 y:y0 view:editor).
ccbe7479c97b changed: #openEditorAtX:y:
Claus Gittinger <cg@exept.de>
parents: 3750
diff changeset
  2230
        ]
2632
48a2b5f7d091 *** empty log message ***
martin
parents: 2613
diff changeset
  2231
    ].
1755
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  2232
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  2233
    "/ to clear the selection
2245
546c6e5d0951 change #redrawSelectionAt: to #invalidateSelectionAt: (because is a invalidate)
ca
parents: 2228
diff changeset
  2234
    self invalidateLineAt:lnNr.
1755
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  2235
! !
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  2236
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2237
!SelectionInListModelView methodsFor:'protocol'!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2238
1458
02d7889dfb9a lostSynchronisation
Claus Gittinger <cg@exept.de>
parents: 1431
diff changeset
  2239
lostSynchronisation
02d7889dfb9a lostSynchronisation
Claus Gittinger <cg@exept.de>
parents: 1431
diff changeset
  2240
    "called when the changes derived from the model are faster than the handling
02d7889dfb9a lostSynchronisation
Claus Gittinger <cg@exept.de>
parents: 1431
diff changeset
  2241
    "
1547
f72d75aaec14 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1545
diff changeset
  2242
    self deselectWithoutRedraw.
1458
02d7889dfb9a lostSynchronisation
Claus Gittinger <cg@exept.de>
parents: 1431
diff changeset
  2243
    super lostSynchronisation.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2244
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2245
2330
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2246
!SelectionInListModelView methodsFor:'queries'!
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2247
4638
21fee5ee9af2 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4574
diff changeset
  2248
elementsForWhich:aBlock
21fee5ee9af2 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4574
diff changeset
  2249
    |result|
21fee5ee9af2 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4574
diff changeset
  2250
21fee5ee9af2 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4574
diff changeset
  2251
    result := OrderedCollection new.
21fee5ee9af2 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4574
diff changeset
  2252
    1 to:self size do:[:idx |
21fee5ee9af2 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4574
diff changeset
  2253
        |el|
21fee5ee9af2 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4574
diff changeset
  2254
21fee5ee9af2 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4574
diff changeset
  2255
        el := self at:idx.
21fee5ee9af2 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4574
diff changeset
  2256
        (aBlock value:el) ifTrue:[ result add:el].
21fee5ee9af2 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4574
diff changeset
  2257
    ].
21fee5ee9af2 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4574
diff changeset
  2258
    ^ result
21fee5ee9af2 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4574
diff changeset
  2259
!
21fee5ee9af2 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4574
diff changeset
  2260
2330
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2261
isCursorKeyConsumer
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2262
    "return true, if the receiver can be controlled by cursor keys;
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2263
     i.e. it can handle some keyboard input,
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2264
     isCursorKeyConsumer are potential candidates for getting the keyboard
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2265
     focus initially within dialogBoxes, or when the focus-follows-pointer
4692
433047d28c93 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4667
diff changeset
  2266
     mode is off."
2330
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2267
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2268
    ^ true
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2269
! !
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2270
3526
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
  2271
!SelectionInListModelView methodsFor:'scroller interface'!
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
  2272
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
  2273
heightOfContents
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
  2274
    "answer the height of the contents in pixels.
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
  2275
     If the minimumEditorHeight and the openEditorAction is defined,
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
  2276
     we have to involve the minimumEditorHeight in the computation,
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
  2277
     to allow opening the editor fullyvisible at the last line."
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
  2278
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
  2279
    |cachedLinesY cachedMaxIdx y0 y1|
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
  2280
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
  2281
    cachedLinesY := self startOfLinesY.
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
  2282
    cachedMaxIdx := cachedLinesY size.
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
  2283
    cachedMaxIdx == 0 ifTrue:[ ^ 0 ].
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
  2284
4796
6c35c2439ca3 class: SelectionInListModelView
ca
parents: 4702
diff changeset
  2285
    "/ !!!! cachedLinesY at:cachedMaxIdx might return nil (async reorg)
6c35c2439ca3 class: SelectionInListModelView
ca
parents: 4702
diff changeset
  2286
    y1 := cachedLinesY at:cachedMaxIdx ifAbsent:nil.
6c35c2439ca3 class: SelectionInListModelView
ca
parents: 4702
diff changeset
  2287
    y1 isNil ifTrue:[^ 0 ]. "/ is under construction due ro async. events
3526
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
  2288
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
  2289
    (minimumEditorHeight notNil and:[openEditorAction notNil]) ifTrue:[
3963
9fd5330c7e40 fix to allow dropping at the bottom
Claus Gittinger <cg@exept.de>
parents: 3927
diff changeset
  2290
        y0 := cachedLinesY at:(cachedMaxIdx - 1) ifAbsent:0.
9fd5330c7e40 fix to allow dropping at the bottom
Claus Gittinger <cg@exept.de>
parents: 3927
diff changeset
  2291
        y1 := y0 + ((y1 - y0) max:minimumEditorHeight).
3526
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
  2292
    ].
3963
9fd5330c7e40 fix to allow dropping at the bottom
Claus Gittinger <cg@exept.de>
parents: 3927
diff changeset
  2293
    ^ y1 + extraSpaceAtBottomForDrop.
9fd5330c7e40 fix to allow dropping at the bottom
Claus Gittinger <cg@exept.de>
parents: 3927
diff changeset
  2294
9fd5330c7e40 fix to allow dropping at the bottom
Claus Gittinger <cg@exept.de>
parents: 3927
diff changeset
  2295
    "Modified: / 03-11-2010 / 01:35:05 / cg"
3526
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
  2296
! !
826547ea5ecc *** empty log message ***
ca
parents: 3525
diff changeset
  2297
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2298
!SelectionInListModelView methodsFor:'selection'!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2299
2401
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  2300
addToSelection:lineNr
2410
39ec0844e7d6 discard #toggleSelection:
ca
parents: 2409
diff changeset
  2301
    "add line to selection without scrolling but raise a change notification
39ec0844e7d6 discard #toggleSelection:
ca
parents: 2409
diff changeset
  2302
    "
39ec0844e7d6 discard #toggleSelection:
ca
parents: 2409
diff changeset
  2303
    |oldSelect forAdd|
2401
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  2304
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  2305
    (self isInSelection:lineNr) ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2306
	^ self
2401
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  2307
    ].
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  2308
2410
39ec0844e7d6 discard #toggleSelection:
ca
parents: 2409
diff changeset
  2309
    multipleSelectOk ifTrue:[ forAdd := selection notNil ]
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2310
		    ifFalse:[ forAdd := false ].
2410
39ec0844e7d6 discard #toggleSelection:
ca
parents: 2409
diff changeset
  2311
39ec0844e7d6 discard #toggleSelection:
ca
parents: 2409
diff changeset
  2312
    (self canSelectIndex:lineNr forAdd:forAdd) ifFalse:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2313
	^ self
2401
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  2314
    ].
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  2315
2410
39ec0844e7d6 discard #toggleSelection:
ca
parents: 2409
diff changeset
  2316
    self closeEditor.
39ec0844e7d6 discard #toggleSelection:
ca
parents: 2409
diff changeset
  2317
    self cursorEntersItem:nil.
39ec0844e7d6 discard #toggleSelection:
ca
parents: 2409
diff changeset
  2318
39ec0844e7d6 discard #toggleSelection:
ca
parents: 2409
diff changeset
  2319
    multipleSelectOk ifFalse:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2320
	oldSelect := selection.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2321
	selection := lineNr.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2322
	oldSelect notNil ifTrue:[ self invalidateSelectionAt:oldSelect ].
2410
39ec0844e7d6 discard #toggleSelection:
ca
parents: 2409
diff changeset
  2323
    ] ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2324
	selection notNil ifTrue:[ selection := selection copyWith:lineNr ]
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2325
			ifFalse:[ selection := OrderedCollection with:lineNr ].
2401
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  2326
    ].
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  2327
    self invalidateSelectionAt:lineNr.
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  2328
    self selectionChanged.
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  2329
!
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  2330
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2331
deselect
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2332
    "clear selection
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2333
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2334
    self selection:nil
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2335
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2336
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2337
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2338
firstInSelection
2399
949ec827ab3a button handle shift pressed
ca
parents: 2381
diff changeset
  2339
    "returns the minimum index of selected indices or nil if nothing is selected
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2340
    "
2409
68095c891ceb reuse selection methods (prepared for common controller)
ca
parents: 2408
diff changeset
  2341
    |min|
2365
bdf6954a0358 key handling: EndOfText EndOfLine BeginOfText BeginOfLine
ca
parents: 2361
diff changeset
  2342
2409
68095c891ceb reuse selection methods (prepared for common controller)
ca
parents: 2408
diff changeset
  2343
    multipleSelectOk   ifFalse:[ ^ selection ].
68095c891ceb reuse selection methods (prepared for common controller)
ca
parents: 2408
diff changeset
  2344
    selection size == 0 ifTrue:[ ^ nil ].
2365
bdf6954a0358 key handling: EndOfText EndOfLine BeginOfText BeginOfLine
ca
parents: 2361
diff changeset
  2345
bdf6954a0358 key handling: EndOfText EndOfLine BeginOfText BeginOfLine
ca
parents: 2361
diff changeset
  2346
    min := selection at:1.
2409
68095c891ceb reuse selection methods (prepared for common controller)
ca
parents: 2408
diff changeset
  2347
    selection do:[:aNumber| min := min min:aNumber ].
2365
bdf6954a0358 key handling: EndOfText EndOfLine BeginOfText BeginOfLine
ca
parents: 2361
diff changeset
  2348
    ^ min
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2349
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2350
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2351
hasSelection
5684
bba053081b4e #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5677
diff changeset
  2352
    "true if an item is selected"
bba053081b4e #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5677
diff changeset
  2353
    
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2354
    ^ selection notNil
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2355
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2356
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2357
isInSelection:aNumber
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2358
    "return true, if line, aNumber is in the selection
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2359
    "
1545
65ae8d6b416e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1542
diff changeset
  2360
    multipleSelectOk ifFalse:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2361
	^ (aNumber == selection)
1545
65ae8d6b416e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1542
diff changeset
  2362
    ].
2409
68095c891ceb reuse selection methods (prepared for common controller)
ca
parents: 2408
diff changeset
  2363
    selection notNil ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2364
	^ selection includesIdentical:aNumber
2409
68095c891ceb reuse selection methods (prepared for common controller)
ca
parents: 2408
diff changeset
  2365
    ].
68095c891ceb reuse selection methods (prepared for common controller)
ca
parents: 2408
diff changeset
  2366
    ^ false
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2367
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2368
2274
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2250
diff changeset
  2369
isSelectionVisible
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2250
diff changeset
  2370
    "returns true if any selected element is visible"
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2250
diff changeset
  2371
2409
68095c891ceb reuse selection methods (prepared for common controller)
ca
parents: 2408
diff changeset
  2372
    ^ self isSelectionVisibleIn:(self extent)
2274
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2250
diff changeset
  2373
!
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2250
diff changeset
  2374
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2250
diff changeset
  2375
isSelectionVisibleIn:anExtentPoint
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2250
diff changeset
  2376
    "returns true if any selected element is visible"
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2250
diff changeset
  2377
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2250
diff changeset
  2378
    self selectionDo:[:aLineNr|
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2379
	(self isLineVisible:aLineNr in:anExtentPoint) ifTrue:[^ true].
2274
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2250
diff changeset
  2380
    ].
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2250
diff changeset
  2381
    ^ false
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2250
diff changeset
  2382
!
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2250
diff changeset
  2383
2330
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2384
lastInSelection
2399
949ec827ab3a button handle shift pressed
ca
parents: 2381
diff changeset
  2385
    "returns the maximum index of selected indices or nil if nothing is selected
2330
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2386
    "
2409
68095c891ceb reuse selection methods (prepared for common controller)
ca
parents: 2408
diff changeset
  2387
    |max|
2330
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2388
2409
68095c891ceb reuse selection methods (prepared for common controller)
ca
parents: 2408
diff changeset
  2389
    multipleSelectOk   ifFalse:[ ^ selection ].
68095c891ceb reuse selection methods (prepared for common controller)
ca
parents: 2408
diff changeset
  2390
    selection size == 0 ifTrue:[ ^ nil ].
2330
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2391
2365
bdf6954a0358 key handling: EndOfText EndOfLine BeginOfText BeginOfLine
ca
parents: 2361
diff changeset
  2392
    max := 1.
bdf6954a0358 key handling: EndOfText EndOfLine BeginOfText BeginOfLine
ca
parents: 2361
diff changeset
  2393
    selection do:[:aNumber| max := max max:aNumber ].
bdf6954a0358 key handling: EndOfText EndOfLine BeginOfText BeginOfLine
ca
parents: 2361
diff changeset
  2394
    ^ max
2330
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2395
!
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2396
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2397
makeSelectionVisible
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2398
    "scroll to make the selection line visible
5316
14cfa2ba3604 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5215
diff changeset
  2399
     don't scroll, if any in the selection isVisible
2330
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2400
    "
3202
11de451bc538 *** empty log message ***
ca
parents: 3146
diff changeset
  2401
    |firstLine|
11de451bc538 *** empty log message ***
ca
parents: 3146
diff changeset
  2402
3205
7ff2e20b37d4 *** empty log message ***
ca
parents: 3202
diff changeset
  2403
    modelChangedDuringButtonPress notNil ifTrue:[^ self].
7ff2e20b37d4 *** empty log message ***
ca
parents: 3202
diff changeset
  2404
3202
11de451bc538 *** empty log message ***
ca
parents: 3146
diff changeset
  2405
    firstLine := self firstInSelection.
11de451bc538 *** empty log message ***
ca
parents: 3146
diff changeset
  2406
    (firstLine isNil or:[firstLine == 0]) ifTrue:[^ self].
11de451bc538 *** empty log message ***
ca
parents: 3146
diff changeset
  2407
11de451bc538 *** empty log message ***
ca
parents: 3146
diff changeset
  2408
    self selectionDo:[:aLnNr|
3889
67eb713ccfec changed: #makeSelectionVisible
fm
parents: 3873
diff changeset
  2409
        (self lineIsFullyVisible:aLnNr) ifTrue:[^ self].
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2410
    ].
2368
8101aa8d50d2 cursor select behaviour in: #keyPress:x:y:
ca
parents: 2365
diff changeset
  2411
    self makeLineVisible:(self firstInSelection).
2365
bdf6954a0358 key handling: EndOfText EndOfLine BeginOfText BeginOfLine
ca
parents: 2361
diff changeset
  2412
!
bdf6954a0358 key handling: EndOfText EndOfLine BeginOfText BeginOfLine
ca
parents: 2361
diff changeset
  2413
4574
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2414
nextAfterSelection
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2415
    "return the index of the next selectable entry after the selection.
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2416
     Wrap at end."
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2417
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2418
    ^ self nextSelectableAfter:selection
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2419
!
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2420
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2421
nextSelectableAfter:indexOrIndexCollection
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2422
    "return the index of the next selectable entry after the indexOrIndexCollection.
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2423
     Wrap at end."
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2424
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2425
    |next sz|
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2426
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2427
    indexOrIndexCollection isNil ifTrue:[
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2428
        next := 1
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2429
    ] ifFalse:[
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2430
        indexOrIndexCollection isCollection ifTrue:[
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2431
            indexOrIndexCollection size == 0 ifTrue:[
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2432
                next := 1
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2433
            ] ifFalse:[
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2434
                next := indexOrIndexCollection max + 1
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2435
            ]
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2436
        ] ifFalse:[
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2437
            next := indexOrIndexCollection + 1
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2438
        ].
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2439
    ].
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2440
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2441
    (self canSelectIndex:next) ifFalse:[
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2442
        sz := self size.
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2443
        next > sz ifTrue:[
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2444
            next := 1.
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2445
        ] ifFalse:[
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2446
            [next <= sz
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2447
             and:[(self canSelectIndex:next) not ]] whileTrue:[
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2448
                next := next + 1
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2449
            ].
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2450
        ].
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2451
    ].
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2452
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2453
    (self canSelectIndex:next) ifFalse:[
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2454
        next := nil
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2455
    ].
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2456
    ^ next
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2457
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2458
    "Modified: / 08-08-1998 / 03:36:55 / cg"
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2459
    "Modified: / 22-04-2014 / 12:15:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2460
!
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2461
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2462
numberOfSelections
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2463
    "return the number of selected items
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2464
    "
2330
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2465
    selection isNil   ifTrue:[ ^ 0 ].
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2466
    multipleSelectOk ifFalse:[ ^ 1 ].
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2467
  ^ selection size
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2468
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2469
4574
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2470
previousBeforeSelection
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2471
    "return the index of the previous selectable entry before the selection.
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2472
     Wrap at beginning."
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2473
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2474
    ^ self previousSelectableBefore:selection
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2475
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2476
!
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2477
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2478
previousSelectableBefore:indexOrIndexCollection
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2479
    "return the index of the previous selectable entry before the indexOrIndexCollection.
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2480
     Wrap at beginning."
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2481
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2482
    |prev|
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2483
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2484
    indexOrIndexCollection isNil ifTrue:[
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2485
        prev := list size 
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2486
    ] ifFalse:[
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2487
        indexOrIndexCollection isCollection ifTrue:[
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2488
            indexOrIndexCollection size == 0 ifTrue:[
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2489
                prev := list size
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2490
            ] ifFalse:[
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2491
                prev := indexOrIndexCollection min - 1
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2492
            ]
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2493
        ] ifFalse:[
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2494
            prev := indexOrIndexCollection - 1
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2495
        ].
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2496
    ].
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2497
    (self canSelectIndex:prev) ifFalse:[
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2498
        prev < 1 ifTrue:[
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2499
            prev := self size.
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2500
        ] ifFalse:[
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2501
            [prev >= 1
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2502
             and:[(self canSelectIndex:prev) not]] whileTrue:[
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2503
                prev := prev - 1
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2504
            ].
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2505
        ].
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2506
    ].
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2507
    (self canSelectIndex:prev) ifFalse:[
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2508
        prev := nil
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2509
    ].
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2510
    ^ prev
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2511
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2512
    "Modified: / 22-04-2014 / 12:16:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2513
!
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2514
2401
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  2515
removeFromSelection:lineNr
2410
39ec0844e7d6 discard #toggleSelection:
ca
parents: 2409
diff changeset
  2516
    "remove line from selection without scrolling but raise a change notification
39ec0844e7d6 discard #toggleSelection:
ca
parents: 2409
diff changeset
  2517
    "
2401
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  2518
    (self isInSelection:lineNr) ifFalse:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2519
	^ self
2401
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  2520
    ].
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  2521
    self closeEditor.
2410
39ec0844e7d6 discard #toggleSelection:
ca
parents: 2409
diff changeset
  2522
    self cursorEntersItem:nil.
2401
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  2523
2410
39ec0844e7d6 discard #toggleSelection:
ca
parents: 2409
diff changeset
  2524
    (multipleSelectOk and:[self numberOfSelections > 1]) ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2525
	selection := selection copyWithout:lineNr.
2401
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  2526
    ] ifFalse:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2527
	selection := nil
2401
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  2528
    ].
2410
39ec0844e7d6 discard #toggleSelection:
ca
parents: 2409
diff changeset
  2529
    self invalidateSelectionAt:lineNr.
39ec0844e7d6 discard #toggleSelection:
ca
parents: 2409
diff changeset
  2530
    self selectionChanged.
2401
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  2531
!
c0c3b44afb43 mouse handling
ca
parents: 2399
diff changeset
  2532
3607
bec9e4c71bf4 implemented #selectAll
Claus Gittinger <cg@exept.de>
parents: 3526
diff changeset
  2533
selectAll
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2534
    "select all entries.
3607
bec9e4c71bf4 implemented #selectAll
Claus Gittinger <cg@exept.de>
parents: 3526
diff changeset
  2535
     Model and/or actionBlock notification IS done."
bec9e4c71bf4 implemented #selectAll
Claus Gittinger <cg@exept.de>
parents: 3526
diff changeset
  2536
bec9e4c71bf4 implemented #selectAll
Claus Gittinger <cg@exept.de>
parents: 3526
diff changeset
  2537
    self selectFrom:1 to:self size.
bec9e4c71bf4 implemented #selectAll
Claus Gittinger <cg@exept.de>
parents: 3526
diff changeset
  2538
!
bec9e4c71bf4 implemented #selectAll
Claus Gittinger <cg@exept.de>
parents: 3526
diff changeset
  2539
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2540
selectElement:anElement
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2541
    "select the element. Scroll to make the new selection visible.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2542
     Model and/or actionBlock notification IS done.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2543
    "
2178
f02ca1516c04 selectElement changed
penk
parents: 2148
diff changeset
  2544
    self selectElement:anElement ifAbsent:[self deselect]
f02ca1516c04 selectElement changed
penk
parents: 2148
diff changeset
  2545
!
f02ca1516c04 selectElement changed
penk
parents: 2148
diff changeset
  2546
f02ca1516c04 selectElement changed
penk
parents: 2148
diff changeset
  2547
selectElement:anElement ifAbsent:exceptionalValue
f02ca1516c04 selectElement changed
penk
parents: 2148
diff changeset
  2548
    |idx|
f02ca1516c04 selectElement changed
penk
parents: 2148
diff changeset
  2549
2408
8b0d11537dc0 accessing list indirect
ca
parents: 2404
diff changeset
  2550
    idx := self identityIndexOf:anElement.
2178
f02ca1516c04 selectElement changed
penk
parents: 2148
diff changeset
  2551
    idx == 0 ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2552
	^ exceptionalValue value
2178
f02ca1516c04 selectElement changed
penk
parents: 2148
diff changeset
  2553
    ].
f02ca1516c04 selectElement changed
penk
parents: 2148
diff changeset
  2554
    self selection:idx
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2555
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2556
4085
532e33c6a5e6 added: #selectElementForWhich:ifAbsent:
Claus Gittinger <cg@exept.de>
parents: 4043
diff changeset
  2557
selectElementForWhich:aBlock ifAbsent:exceptionalValue
532e33c6a5e6 added: #selectElementForWhich:ifAbsent:
Claus Gittinger <cg@exept.de>
parents: 4043
diff changeset
  2558
    1 to:self size do:[:idx |
532e33c6a5e6 added: #selectElementForWhich:ifAbsent:
Claus Gittinger <cg@exept.de>
parents: 4043
diff changeset
  2559
        (aBlock value:(self at:idx)) ifTrue:[
532e33c6a5e6 added: #selectElementForWhich:ifAbsent:
Claus Gittinger <cg@exept.de>
parents: 4043
diff changeset
  2560
            self selection:idx.
532e33c6a5e6 added: #selectElementForWhich:ifAbsent:
Claus Gittinger <cg@exept.de>
parents: 4043
diff changeset
  2561
            ^ self
532e33c6a5e6 added: #selectElementForWhich:ifAbsent:
Claus Gittinger <cg@exept.de>
parents: 4043
diff changeset
  2562
        ].
532e33c6a5e6 added: #selectElementForWhich:ifAbsent:
Claus Gittinger <cg@exept.de>
parents: 4043
diff changeset
  2563
    ].
532e33c6a5e6 added: #selectElementForWhich:ifAbsent:
Claus Gittinger <cg@exept.de>
parents: 4043
diff changeset
  2564
    ^ exceptionalValue value
532e33c6a5e6 added: #selectElementForWhich:ifAbsent:
Claus Gittinger <cg@exept.de>
parents: 4043
diff changeset
  2565
532e33c6a5e6 added: #selectElementForWhich:ifAbsent:
Claus Gittinger <cg@exept.de>
parents: 4043
diff changeset
  2566
    "Created: / 06-10-2011 / 13:32:28 / cg"
532e33c6a5e6 added: #selectElementForWhich:ifAbsent:
Claus Gittinger <cg@exept.de>
parents: 4043
diff changeset
  2567
!
532e33c6a5e6 added: #selectElementForWhich:ifAbsent:
Claus Gittinger <cg@exept.de>
parents: 4043
diff changeset
  2568
5729
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2569
selectElements:aCollectionOfElement
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2570
    "select the elements. 
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2571
     Scroll to make the new selection visible.
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2572
     Model and/or actionBlock notification IS done.
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2573
    "
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2574
    self selectElements:aCollectionOfElement ifAnyAbsent:[]
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2575
!
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2576
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2577
selectElements:aCollectionOfElements ifAnyAbsent:exceptionalValue
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2578
    |indices|
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2579
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2580
    indices := aCollectionOfElements collect:[:each |
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2581
                    self identityIndexOf:each.
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2582
               ].
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2583
    (indices includes:0) ifTrue:[
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2584
        ^ exceptionalValue value
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2585
    ].
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2586
    self selection:indices
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2587
!
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2588
4574
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2589
selectFirst
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2590
    "select the first selectable element.
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2591
     Model and/or actionBlock notification IS done."
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2592
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2593
    self selection:(self nextSelectableAfter:0)
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2594
!
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2595
4873
576dc9a44d18 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 4796
diff changeset
  2596
selectFirstVisibleLine
576dc9a44d18 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 4796
diff changeset
  2597
    "select the first visible selectable element.
576dc9a44d18 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 4796
diff changeset
  2598
     Model and/or actionBlock notification IS done."
576dc9a44d18 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 4796
diff changeset
  2599
576dc9a44d18 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 4796
diff changeset
  2600
    |firstLineShown|
576dc9a44d18 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 4796
diff changeset
  2601
    
576dc9a44d18 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 4796
diff changeset
  2602
    firstLineShown := self yVisibleToLineNr:1.
576dc9a44d18 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 4796
diff changeset
  2603
    self selection:(self nextSelectableAfter:firstLineShown-1)
576dc9a44d18 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 4796
diff changeset
  2604
!
576dc9a44d18 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 4796
diff changeset
  2605
2399
949ec827ab3a button handle shift pressed
ca
parents: 2381
diff changeset
  2606
selectFrom:aStart to:aStop
949ec827ab3a button handle shift pressed
ca
parents: 2381
diff changeset
  2607
    "select lines between start and stop
949ec827ab3a button handle shift pressed
ca
parents: 2381
diff changeset
  2608
    "
949ec827ab3a button handle shift pressed
ca
parents: 2381
diff changeset
  2609
    |start stop step nsel|
949ec827ab3a button handle shift pressed
ca
parents: 2381
diff changeset
  2610
949ec827ab3a button handle shift pressed
ca
parents: 2381
diff changeset
  2611
    multipleSelectOk ifFalse:[^ self].
949ec827ab3a button handle shift pressed
ca
parents: 2381
diff changeset
  2612
949ec827ab3a button handle shift pressed
ca
parents: 2381
diff changeset
  2613
    start := aStart.
949ec827ab3a button handle shift pressed
ca
parents: 2381
diff changeset
  2614
    stop  := aStop.
949ec827ab3a button handle shift pressed
ca
parents: 2381
diff changeset
  2615
949ec827ab3a button handle shift pressed
ca
parents: 2381
diff changeset
  2616
    aStart < aStop ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2617
	start := aStart max:1.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2618
	stop  := aStop  min:(self size).
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2619
	step  := 1.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2620
	start > stop ifTrue:[^ self].
2399
949ec827ab3a button handle shift pressed
ca
parents: 2381
diff changeset
  2621
949ec827ab3a button handle shift pressed
ca
parents: 2381
diff changeset
  2622
    ] ifFalse:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2623
	start := aStart min:(self size).
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2624
	stop  := aStop  max:1.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2625
	step  := -1.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2626
	start < stop ifTrue:[^ self].
2399
949ec827ab3a button handle shift pressed
ca
parents: 2381
diff changeset
  2627
    ].
949ec827ab3a button handle shift pressed
ca
parents: 2381
diff changeset
  2628
    nsel := OrderedCollection new.
949ec827ab3a button handle shift pressed
ca
parents: 2381
diff changeset
  2629
949ec827ab3a button handle shift pressed
ca
parents: 2381
diff changeset
  2630
    start to:stop by:step do:[:i|
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2631
	(self canSelectIndex:i forAdd:true) ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2632
	    nsel add:i.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2633
	].
2399
949ec827ab3a button handle shift pressed
ca
parents: 2381
diff changeset
  2634
    ].
949ec827ab3a button handle shift pressed
ca
parents: 2381
diff changeset
  2635
949ec827ab3a button handle shift pressed
ca
parents: 2381
diff changeset
  2636
    (self selectWithoutScroll:nsel redraw:true) ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2637
	self selectionChanged
2399
949ec827ab3a button handle shift pressed
ca
parents: 2381
diff changeset
  2638
    ].
949ec827ab3a button handle shift pressed
ca
parents: 2381
diff changeset
  2639
!
949ec827ab3a button handle shift pressed
ca
parents: 2381
diff changeset
  2640
4574
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2641
selectLast
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2642
    "select the last selectable element.
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2643
     Model and/or actionBlock notification IS done."
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2644
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2645
    self selection:(self previousSelectableBefore:list size + 1)
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2646
!
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2647
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2648
selectNext
5550
055cf25539f5 #DOCUMENTATION by mawalch
mawalch
parents: 5496
diff changeset
  2649
    "select next line or first visible if there is currently no selection.
055cf25539f5 #DOCUMENTATION by mawalch
mawalch
parents: 5496
diff changeset
  2650
     Wrap at end.
4574
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2651
     Model and/or actionBlock notification IS done."
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2652
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2653
    self selection:(self nextAfterSelection)
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2654
5550
055cf25539f5 #DOCUMENTATION by mawalch
mawalch
parents: 5496
diff changeset
  2655
    "Modified: / 15-11-1996 / 17:01:27 / cg"
055cf25539f5 #DOCUMENTATION by mawalch
mawalch
parents: 5496
diff changeset
  2656
    "Modified (comment): / 07-06-2017 / 17:20:33 / mawalch"
4574
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2657
!
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2658
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2659
selectPrevious
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2660
    "select previous line or previous visible if there is currently no selection.
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2661
     Wrap at beginning. 
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2662
     Model and/or actionBlock notification IS done."
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2663
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2664
    self selection:(self previousBeforeSelection).
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2665
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2666
    "Modified: 26.9.1995 / 09:41:16 / stefan"
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2667
    "Modified: 15.11.1996 / 17:01:34 / cg"
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2668
!
4ccc6b5caf8c Added selectFirst/Next/Last/Prev to make it polymorph with SelectionInListView.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4571
diff changeset
  2669
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2670
selectedElement
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2671
    "return the single selected item or nil
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2672
    "
1545
65ae8d6b416e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1542
diff changeset
  2673
    |index|
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2674
1545
65ae8d6b416e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1542
diff changeset
  2675
    (index := self selectedIndex) ~~ 0 ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2676
	^ self at:index ifAbsent:nil
1545
65ae8d6b416e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1542
diff changeset
  2677
    ].
65ae8d6b416e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1542
diff changeset
  2678
    ^ nil
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2679
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2680
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2681
selectedIndex
5729
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2682
    "returns the index of the selected line or 0. 
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2683
     If multiple lines are selected, 0 is returned
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2684
    "
2365
bdf6954a0358 key handling: EndOfText EndOfLine BeginOfText BeginOfLine
ca
parents: 2361
diff changeset
  2685
    selection notNil ifTrue:[
5729
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2686
        multipleSelectOk ifFalse:[ ^ selection ].
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2687
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2688
        selection size == 1 ifTrue:[
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2689
            ^ selection at:1
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2690
        ]
1545
65ae8d6b416e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1542
diff changeset
  2691
    ].
65ae8d6b416e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1542
diff changeset
  2692
    ^ 0
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2693
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2694
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2695
selection
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2696
    "return the selection index or collection of indices
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2697
     in case of multiple selection enabled
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2698
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2699
    ^ selection
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2700
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2701
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2702
1545
65ae8d6b416e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1542
diff changeset
  2703
selection:something
65ae8d6b416e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1542
diff changeset
  2704
    "select something or deselect if the argument is nil;
5729
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2705
     something is either an individual index 
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2706
     or (if multiSelect is enabled) a collection of indices.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2707
     scroll to make the selected line visible.
3873
ec4ba667fe41 comment/format in: #selection:
Claus Gittinger <cg@exept.de>
parents: 3851
diff changeset
  2708
     The model and/or actionBlock IS notified."
ec4ba667fe41 comment/format in: #selection:
Claus Gittinger <cg@exept.de>
parents: 3851
diff changeset
  2709
1545
65ae8d6b416e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1542
diff changeset
  2710
    (self selectWithoutScroll:something redraw:true) ifTrue:[
3873
ec4ba667fe41 comment/format in: #selection:
Claus Gittinger <cg@exept.de>
parents: 3851
diff changeset
  2711
        self makeSelectionVisible.
ec4ba667fe41 comment/format in: #selection:
Claus Gittinger <cg@exept.de>
parents: 3851
diff changeset
  2712
        self selectionChanged
1545
65ae8d6b416e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1542
diff changeset
  2713
    ].
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2714
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2715
2330
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2716
selectionAsCollection
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2717
    "return the selection as a collection of line numbers.
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2718
     This allows users of this class to enumerate independent of
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2719
     the multipleSelect style.
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2720
    "
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2721
    selection isNil  ifTrue:[ ^ #() ].
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2722
    multipleSelectOk ifTrue:[ ^ selection ].
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2723
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2724
  ^ OrderedCollection with:selection
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2725
!
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2726
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2727
selectionDo:aBlock
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2728
    "perform aBlock for each nr in the selection.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2729
     For single selection, it is called once for the items nr.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2730
     For multiple selections, it is called for each.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2731
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2732
    selection notNil ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2733
	multipleSelectOk ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2734
	    selection do:aBlock
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2735
	] ifFalse:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2736
	    aBlock value:selection
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2737
	].
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2738
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2739
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2740
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2741
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2742
2330
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2743
selectionValue
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2744
    "return the selection value i.e. the text in the selected line.
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2745
     For multiple selections a collection containing the entries is returned.
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2746
    "
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2747
    multipleSelectOk ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2748
	selection isNil ifTrue:[^ #()].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2749
	^ selection collect:[:nr| self at:nr ]
2330
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2750
    ].
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2751
    selection isNil ifTrue:[^ nil].
2408
8b0d11537dc0 accessing list indirect
ca
parents: 2404
diff changeset
  2752
    ^ self at:selection ifAbsent:nil.
2330
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2753
!
7d83a6a7728b *** empty log message ***
ca
parents: 2324
diff changeset
  2754
2346
b15af0e8dacc add #selectionValueAsCollection
ca
parents: 2333
diff changeset
  2755
selectionValueAsCollection
b15af0e8dacc add #selectionValueAsCollection
ca
parents: 2333
diff changeset
  2756
    "return the selection values as a collection - allows selectionValues to
b15af0e8dacc add #selectionValueAsCollection
ca
parents: 2333
diff changeset
  2757
     be enumerated independent of the multiSelect settings
b15af0e8dacc add #selectionValueAsCollection
ca
parents: 2333
diff changeset
  2758
    "
b15af0e8dacc add #selectionValueAsCollection
ca
parents: 2333
diff changeset
  2759
    |value|
b15af0e8dacc add #selectionValueAsCollection
ca
parents: 2333
diff changeset
  2760
b15af0e8dacc add #selectionValueAsCollection
ca
parents: 2333
diff changeset
  2761
    value := self selectionValue.
b15af0e8dacc add #selectionValueAsCollection
ca
parents: 2333
diff changeset
  2762
    multipleSelectOk ifTrue:[^ value].
b15af0e8dacc add #selectionValueAsCollection
ca
parents: 2333
diff changeset
  2763
b15af0e8dacc add #selectionValueAsCollection
ca
parents: 2333
diff changeset
  2764
    value notNil ifTrue:[^ Array with:value ].
b15af0e8dacc add #selectionValueAsCollection
ca
parents: 2333
diff changeset
  2765
  ^ #()
b15af0e8dacc add #selectionValueAsCollection
ca
parents: 2333
diff changeset
  2766
!
b15af0e8dacc add #selectionValueAsCollection
ca
parents: 2333
diff changeset
  2767
1542
8607d072c319 accessing selection through to selector
Claus Gittinger <cg@exept.de>
parents: 1537
diff changeset
  2768
setSelection:something
1545
65ae8d6b416e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1542
diff changeset
  2769
    "select something or deselect if the argument is nil;
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2770
     scroll to make the selected line visible.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2771
     *** No model and/or actionBlock notification is done here.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2772
    "
1545
65ae8d6b416e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1542
diff changeset
  2773
    (self selectWithoutScroll:something redraw:true) ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2774
	self makeSelectionVisible
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2775
    ]
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2776
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2777
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2778
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2779
!SelectionInListModelView methodsFor:'selection private'!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2780
1641
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
  2781
canSelectIndex:anIndex
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
  2782
    "return true, if the object identified by its index is selectable
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
  2783
    "
1920
e3994a83fb16 selectConditionBlock can be a 2-arg block;
martin
parents: 1917
diff changeset
  2784
    ^ self canSelectIndex:anIndex forAdd:false
e3994a83fb16 selectConditionBlock can be a 2-arg block;
martin
parents: 1917
diff changeset
  2785
!
e3994a83fb16 selectConditionBlock can be a 2-arg block;
martin
parents: 1917
diff changeset
  2786
e3994a83fb16 selectConditionBlock can be a 2-arg block;
martin
parents: 1917
diff changeset
  2787
canSelectIndex:anIndex forAdd:isForAdd
e3994a83fb16 selectConditionBlock can be a 2-arg block;
martin
parents: 1917
diff changeset
  2788
    "return true, if the object identified by its index is selectable
e3994a83fb16 selectConditionBlock can be a 2-arg block;
martin
parents: 1917
diff changeset
  2789
    "
e3994a83fb16 selectConditionBlock can be a 2-arg block;
martin
parents: 1917
diff changeset
  2790
    |item isOk|
1649
60cf82a7d585 checkin from browser
ps
parents: 1644
diff changeset
  2791
60cf82a7d585 checkin from browser
ps
parents: 1644
diff changeset
  2792
    selectConditionBlock notNil ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2793
	isOk := selectConditionBlock valueWithOptionalArgument:anIndex and:isForAdd.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2794
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2795
	isOk ifFalse:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2796
	    ^ false
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2797
	]
1641
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
  2798
    ].
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
  2799
2408
8b0d11537dc0 accessing list indirect
ca
parents: 2404
diff changeset
  2800
    item := self at:anIndex ifAbsent:nil.
1752
1c11b6e4ab37 use isHierarchicalItem instead of hack variable
ca
parents: 1748
diff changeset
  2801
    item isNil ifTrue:[^ false].
2408
8b0d11537dc0 accessing list indirect
ca
parents: 2404
diff changeset
  2802
1752
1c11b6e4ab37 use isHierarchicalItem instead of hack variable
ca
parents: 1748
diff changeset
  2803
    item isHierarchicalItem ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2804
	^ item isSelectable
1649
60cf82a7d585 checkin from browser
ps
parents: 1644
diff changeset
  2805
    ].
60cf82a7d585 checkin from browser
ps
parents: 1644
diff changeset
  2806
    ^ true
1641
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
  2807
!
22dc37288c14 add selectConditionBlock
ca
parents: 1599
diff changeset
  2808
1547
f72d75aaec14 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1545
diff changeset
  2809
deselectWithoutRedraw
f72d75aaec14 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1545
diff changeset
  2810
    "clear the selection without redraw and scrolling;
f72d75aaec14 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1545
diff changeset
  2811
     the model and/or actionBlock is notified
f72d75aaec14 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1545
diff changeset
  2812
    "
f72d75aaec14 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1545
diff changeset
  2813
    (self selectWithoutScroll:nil redraw:false) ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2814
	self selectionChanged
1547
f72d75aaec14 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1545
diff changeset
  2815
    ]
f72d75aaec14 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1545
diff changeset
  2816
!
f72d75aaec14 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1545
diff changeset
  2817
3370
5199f62a817d Add posibility to configure the select behaviour (select on button press
ab
parents: 3367
diff changeset
  2818
selectAndUpdateModelWithoutChangeNotification: aLineNo
5199f62a817d Add posibility to configure the select behaviour (select on button press
ab
parents: 3367
diff changeset
  2819
    |arg|
5199f62a817d Add posibility to configure the select behaviour (select on button press
ab
parents: 3367
diff changeset
  2820
5199f62a817d Add posibility to configure the select behaviour (select on button press
ab
parents: 3367
diff changeset
  2821
    self selectWithoutScroll:aLineNo redraw:true.
5199f62a817d Add posibility to configure the select behaviour (select on button press
ab
parents: 3367
diff changeset
  2822
    modelChangedDuringButtonPress := false.
5199f62a817d Add posibility to configure the select behaviour (select on button press
ab
parents: 3367
diff changeset
  2823
    model isNil ifTrue:[ ^ self ].
5199f62a817d Add posibility to configure the select behaviour (select on button press
ab
parents: 3367
diff changeset
  2824
    arg := self argForChangeMessage.
5199f62a817d Add posibility to configure the select behaviour (select on button press
ab
parents: 3367
diff changeset
  2825
    self sendChangeMessage:#setValue: with:arg.
5199f62a817d Add posibility to configure the select behaviour (select on button press
ab
parents: 3367
diff changeset
  2826
!
5199f62a817d Add posibility to configure the select behaviour (select on button press
ab
parents: 3367
diff changeset
  2827
1545
65ae8d6b416e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1542
diff changeset
  2828
selectWithoutScroll:something redraw:doRedraw
5729
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2829
    "change selection to something; 
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2830
     something is either an individual index 
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2831
     or (if multiSelect is enabled) a collection of indices.
2bbfe888300a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5684
diff changeset
  2832
     returns true if selection changed
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2833
    "
4242
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2834
    |oldSelect size|
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2835
1554
c45cac3c4d31 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
  2836
    selection = something ifTrue:[^ false].
c45cac3c4d31 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
  2837
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2838
    oldSelect := selection.
4242
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2839
    selection := nil.   "/reset selection
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2840
    size := self size.
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2841
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2842
    ( size > 0 and:[ something notNil ] ) ifTrue:[
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2843
        something isNumber ifTrue:[
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2844
            (something between:1 and:size) ifTrue:[
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2845
                selection := multipleSelectOk ifTrue:[Array with:something]
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2846
                                             ifFalse:[something]
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2847
            ]
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2848
        ] ifFalse:[
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2849
            something size > 0 ifTrue:[
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2850
                selection := OrderedCollection new.
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2851
                something do:[:each|
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2852
                    each isNumber ifTrue:[
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2853
                        (each between:1 and:size) ifTrue:[
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2854
                            selection add: each.
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2855
                        ]
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2856
                    ]
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2857
                ].
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2858
                selection isEmpty ifTrue:[
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2859
                    selection := nil.
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2860
                ] ifFalse:[
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2861
                    multipleSelectOk ifFalse:[ selection := selection first ].
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2862
                ].
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2863
            ].
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2864
        ].
1545
65ae8d6b416e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1542
diff changeset
  2865
    ].
65ae8d6b416e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1542
diff changeset
  2866
    selection = oldSelect ifTrue:[^ false].
3205
7ff2e20b37d4 *** empty log message ***
ca
parents: 3202
diff changeset
  2867
7ff2e20b37d4 *** empty log message ***
ca
parents: 3202
diff changeset
  2868
    modelChangedDuringButtonPress notNil ifTrue:[
4242
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2869
        modelChangedDuringButtonPress := true.
3205
7ff2e20b37d4 *** empty log message ***
ca
parents: 3202
diff changeset
  2870
    ].
7ff2e20b37d4 *** empty log message ***
ca
parents: 3202
diff changeset
  2871
1755
cbf87041448d add visible editor
ca
parents: 1752
diff changeset
  2872
    self closeEditor.
2377
6c368b8b0ec3 support cursor movements
ca
parents: 2368
diff changeset
  2873
    self cursorEntersItem:nil.
1545
65ae8d6b416e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1542
diff changeset
  2874
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3704
diff changeset
  2875
1545
65ae8d6b416e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1542
diff changeset
  2876
    (doRedraw and:[shown]) ifFalse:[
4242
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2877
        ^ true
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2878
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2879
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2880
    multipleSelectOk ifFalse:[
4242
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2881
        oldSelect notNil ifTrue:[self invalidateSelectionAt:oldSelect].
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2882
        selection notNil ifTrue:[self invalidateSelectionAt:selection].
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2883
    ] ifTrue:[
4242
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2884
        (selection notNil and:[oldSelect notNil]) ifTrue:[
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2885
            selection do:[:i|(oldSelect includesIdentical:i) ifFalse:[self invalidateSelectionAt:i]].
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2886
            oldSelect do:[:i|(selection includesIdentical:i) ifFalse:[self invalidateSelectionAt:i]].
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2887
        ] ifFalse:[
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2888
            oldSelect isNil ifTrue:[oldSelect := selection].
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2889
            oldSelect do:[:i|self invalidateSelectionAt:i]
20d8ff7dc6a9 class: SelectionInListModelView
ca
parents: 4206
diff changeset
  2890
        ]
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2891
    ].
1545
65ae8d6b416e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1542
diff changeset
  2892
    ^ true
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2893
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2894
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2895
!SelectionInListModelView class methodsFor:'documentation'!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2896
4515
6ca475e94989 class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4512
diff changeset
  2897
version
4796
6c35c2439ca3 class: SelectionInListModelView
ca
parents: 4702
diff changeset
  2898
    ^ '$Header$'
4515
6ca475e94989 class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4512
diff changeset
  2899
!
6ca475e94989 class: SelectionInListModelView
Stefan Vogel <sv@exept.de>
parents: 4512
diff changeset
  2900
3778
ccbe7479c97b changed: #openEditorAtX:y:
Claus Gittinger <cg@exept.de>
parents: 3750
diff changeset
  2901
version_CVS
4796
6c35c2439ca3 class: SelectionInListModelView
ca
parents: 4702
diff changeset
  2902
    ^ '$Header$'
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2903
! !
4181
34f4fd818a18 class: SelectionInListModelView
Claus Gittinger <cg@exept.de>
parents: 4085
diff changeset
  2904