LSelBox.st
author claus
Tue, 09 May 1995 03:57:16 +0200
changeset 125 3ffa271732f7
parent 122 04ec3fda7c11
child 128 06a050529335
permissions -rw-r--r--
.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     1
"
5
claus
parents: 3
diff changeset
     2
 COPYRIGHT (c) 1990 by Claus Gittinger
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
     3
	      All Rights Reserved
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     4
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    11
"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    12
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    13
EnterBox subclass:#ListSelectionBox
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    14
       instanceVariableNames:'selectionList'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    15
       classVariableNames:''
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    16
       poolDictionaries:''
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
    17
       category:'Views-DialogBoxes'
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    18
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    19
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    20
ListSelectionBox comment:'
5
claus
parents: 3
diff changeset
    21
COPYRIGHT (c) 1990 by Claus Gittinger
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    22
	      All Rights Reserved
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    23
125
claus
parents: 122
diff changeset
    24
$Header: /cvs/stx/stx/libwidg/Attic/LSelBox.st,v 1.12 1995-05-09 01:55:56 claus Exp $
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
    25
'!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
    26
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
    27
!ListSelectionBox class methodsFor:'documentation'!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
    28
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
    29
copyright
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
    30
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
    31
 COPYRIGHT (c) 1990 by Claus Gittinger
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    32
	      All Rights Reserved
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
    33
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
    34
 This software is furnished under a license and may be used
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
    35
 only in accordance with the terms of that license and with the
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
    36
 inclusion of the above copyright notice.   This software may not
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
    37
 be provided or otherwise made available to, or used by, any
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
    38
 other person.  No title to or ownership of the software is
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
    39
 hereby transferred.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
    40
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
    41
!
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    42
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
    43
version
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
    44
"
125
claus
parents: 122
diff changeset
    45
$Header: /cvs/stx/stx/libwidg/Attic/LSelBox.st,v 1.12 1995-05-09 01:55:56 claus Exp $
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
    46
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
    47
!
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    48
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
    49
documentation
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
    50
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
    51
    this class implements boxes for selection from a list. It offers
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
    52
    both an ok- and abort-buttons. The ok-button, if pressed will
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
    53
    evaluate the okAction (see EnterBox>>action).
77
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    54
    see examples for typical uses.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    55
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    56
    Notice, for file selections there is a specialized FileSelectionBox,
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    57
    which supports matchPatterns, changing directory etc.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    58
"
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    59
!
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    60
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    61
examples 
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    62
"
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    63
    simple:
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
    64
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    65
	|box|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
    66
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    67
	box := ListSelectionBox new.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    68
	box title:'select something:'.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    69
	box list:#('foo' 'bar' 'baz').
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    70
	box okAction:[:sel | Transcript showCr:'the selection was:' , sel].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    71
	box showAtPointer
77
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    72
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    73
    with a default:
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    74
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    75
	|box|
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    76
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    77
	box := ListSelectionBox new.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    78
	box title:'select something:'.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    79
	box list:#('foo' 'bar' 'baz').
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    80
	box okAction:[:sel | Transcript showCr:'the selection was:' , sel].
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    81
	box initialText:'foo'.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
    82
	box showAtPointer
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
    83
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
    84
! !
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    85
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    86
!ListSelectionBox class methodsFor:'defaults'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    87
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    88
defaultExtent
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    89
    ^ (Display pixelPerMillimeter * (80 @ 100)) rounded
12
1c8e8c53e8cf *** empty log message ***
claus
parents: 5
diff changeset
    90
!
1c8e8c53e8cf *** empty log message ***
claus
parents: 5
diff changeset
    91
1c8e8c53e8cf *** empty log message ***
claus
parents: 5
diff changeset
    92
listViewType
1c8e8c53e8cf *** empty log message ***
claus
parents: 5
diff changeset
    93
    "return the type of listView 
1c8e8c53e8cf *** empty log message ***
claus
parents: 5
diff changeset
    94
     - for easier redefinition in subclasses"
1c8e8c53e8cf *** empty log message ***
claus
parents: 5
diff changeset
    95
1c8e8c53e8cf *** empty log message ***
claus
parents: 5
diff changeset
    96
    ^ SelectionInListView
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    97
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    98
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    99
!ListSelectionBox class methodsFor:'instance creation'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   100
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   101
title:titleString okText:okText abortText:abortText list:aList action:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   102
    "create and return a new listSelectionBox with list already defined"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   103
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   104
    |newBox|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   105
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   106
    newBox := super title:titleString okText:okText abortText:abortText
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   107
		    action:aBlock.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   108
    ^ newBox list:aList
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   109
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   110
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   111
!ListSelectionBox methodsFor:'initialization'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   112
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   113
initialize
125
claus
parents: 122
diff changeset
   114
    |space2 halfSpace v|
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   115
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   116
    super initialize.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   117
77
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   118
    label := 'Select or enter'.
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   119
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   120
    "need more space than an enterBox"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   121
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   122
    "self height:(height + (font height * 5)).  "
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   123
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   124
    space2 := 2 * ViewSpacing.
125
claus
parents: 122
diff changeset
   125
    halfSpace := ViewSpacing // 2.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   126
12
1c8e8c53e8cf *** empty log message ***
claus
parents: 5
diff changeset
   127
    v := ScrollableView for:(self class listViewType) in:self.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   128
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   129
    "kludge: see note in EnterBox"
125
claus
parents: 122
diff changeset
   130
"/    v origin:(0.0 
claus
parents: 122
diff changeset
   131
"/              @
claus
parents: 122
diff changeset
   132
"/              (enterField origin y + enterField height + ViewSpacing)).
claus
parents: 122
diff changeset
   133
"/    v extent:(1.0
claus
parents: 122
diff changeset
   134
"/              @ 
claus
parents: 122
diff changeset
   135
"/              (height  
claus
parents: 122
diff changeset
   136
"/               - ViewSpacing - labelField heightIncludingBorder
claus
parents: 122
diff changeset
   137
"/               - ViewSpacing - enterField heightIncludingBorder
claus
parents: 122
diff changeset
   138
"/               - buttonPanel heightIncludingBorder - ViewSpacing
claus
parents: 122
diff changeset
   139
"/               - space2)
claus
parents: 122
diff changeset
   140
"/             ).
110
eb59f6e31e84 *** empty log message ***
claus
parents: 77
diff changeset
   141
    v origin:[0.0
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   142
	      @
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   143
	      (enterField origin y + enterField height + ViewSpacing)]
110
eb59f6e31e84 *** empty log message ***
claus
parents: 77
diff changeset
   144
      extent:[1.0
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   145
	      @ 
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   146
	      (height
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   147
	       - ViewSpacing - labelField heightIncludingBorder
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   148
	       - ViewSpacing - enterField heightIncludingBorder
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   149
	       - buttonPanel heightIncludingBorder - ViewSpacing
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   150
	       - space2)
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   151
	     ].
125
claus
parents: 122
diff changeset
   152
    v leftInset:halfSpace; rightInset:halfSpace.
110
eb59f6e31e84 *** empty log message ***
claus
parents: 77
diff changeset
   153
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   154
    selectionList := v scrolledView.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   155
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   156
    "self updateList."
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   157
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   158
    "selections in list get forwarded to enterfield"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   159
    selectionList action:[:lineNr |
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   160
	enterField contents:(selectionList selectionValue)
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   161
    ].
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
   162
    selectionList doubleClickAction:[:lineNr |
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   163
	enterField contents:(selectionList selectionValue).
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   164
	self okPressed
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
   165
    ].
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
   166
    "
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
   167
     mhm: the lists keyboard functions are disabled,
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
   168
     and input passed to the enterfield
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 12
diff changeset
   169
    "
122
claus
parents: 118
diff changeset
   170
    selectionList delegate:(KeyboardForwarder toView:enterField condition:#noFocus) 
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   171
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   172
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   173
updateList
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   174
    "setup contents of list; nothing done here but redefined in subclasses"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   175
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   176
    ^ self
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   177
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   178
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   179
realize
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   180
    self updateList.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   181
    super realize
77
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   182
!
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   183
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   184
focusSequence
118
claus
parents: 113
diff changeset
   185
    ^ Array with:enterField with:selectionList with:abortButton with:okButton 
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   186
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   187
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   188
!ListSelectionBox methodsFor:'queries'!
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   189
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   190
preferedExtent
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   191
    "return my prefered extent - thats the minimum size 
125
claus
parents: 122
diff changeset
   192
     I like to have, to make everything visible"
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   193
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   194
    |wWanted hWanted|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   195
125
claus
parents: 122
diff changeset
   196
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   197
    wWanted := labelField width + ViewSpacing + ViewSpacing.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   198
    (wWanted > width) ifFalse:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   199
	wWanted := width
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   200
    ].
125
claus
parents: 122
diff changeset
   201
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   202
    hWanted := ViewSpacing + labelField height +
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   203
	       ViewSpacing + enterField height +
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   204
	       ViewSpacing + selectionList height +
77
565b052f5277 *** empty log message ***
claus
parents: 59
diff changeset
   205
	       ViewSpacing + buttonPanel preferedExtent y +
125
claus
parents: 122
diff changeset
   206
	       ViewSpacing - (ViewSpacing * 2).
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   207
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   208
    (hWanted < height) ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   209
	hWanted := height
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   210
    ].
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   211
    ^ (wWanted @ hWanted)
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   212
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   213
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   214
!ListSelectionBox methodsFor:'accessing'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   215
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   216
list:aList
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   217
    "set the list to be displayed in selection list"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   218
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   219
    selectionList list:aList
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   220
! !