ListSelectionBox.st
changeset 0 e6a541c1c0eb
child 3 9d7eefb5e69f
equal deleted inserted replaced
-1:000000000000 0:e6a541c1c0eb
       
     1 "
       
     2  COPYRIGHT (c) 1990-93 by Claus Gittinger
       
     3               All Rights Reserved
       
     4 
       
     5  This software is furnished under a license and may be used
       
     6  only in accordance with the terms of that license and with the
       
     7  inclusion of the above copyright notice.   This software may not
       
     8  be provided or otherwise made available to, or used by, any
       
     9  other person.  No title to or ownership of the software is
       
    10  hereby transferred.
       
    11 "
       
    12 
       
    13 EnterBox subclass:#ListSelectionBox
       
    14        instanceVariableNames:'selectionList'
       
    15        classVariableNames:''
       
    16        poolDictionaries:''
       
    17        category:'Views-Interactors'
       
    18 !
       
    19 
       
    20 ListSelectionBox comment:'
       
    21 
       
    22 COPYRIGHT (c) 1990-93 by Claus Gittinger
       
    23               All Rights Reserved
       
    24 
       
    25 this class implements boxes for selection from a list
       
    26 
       
    27 %W% %E%
       
    28 
       
    29 written Jan 90 by claus
       
    30 '!
       
    31 
       
    32 !ListSelectionBox class methodsFor:'defaults'!
       
    33 
       
    34 defaultExtent
       
    35     ^ (Display pixelPerMillimeter * (80 @ 100)) rounded
       
    36 ! !
       
    37 
       
    38 !ListSelectionBox class methodsFor:'instance creation'!
       
    39 
       
    40 title:titleString okText:okText abortText:abortText list:aList action:aBlock
       
    41     "create and return a new listSelectionBox with list already defined"
       
    42 
       
    43     |newBox|
       
    44 
       
    45     newBox := super title:titleString okText:okText abortText:abortText
       
    46                     action:aBlock.
       
    47     ^ newBox list:aList
       
    48 ! !
       
    49 
       
    50 !ListSelectionBox methodsFor:'initialization'!
       
    51 
       
    52 initialize
       
    53     |space2 v|
       
    54 
       
    55     super initialize.
       
    56 
       
    57     "need more space than an enterBox"
       
    58 
       
    59     "self height:(height + (font height * 5)).  "
       
    60 
       
    61     space2 := 2 * ViewSpacing.
       
    62 
       
    63     v := ScrollableView for:SelectionInListView in:self.
       
    64 
       
    65     "kludge: see note in EnterBox"
       
    66     v origin:(ViewSpacing
       
    67               @
       
    68               (enterField origin y + enterField height + ViewSpacing)).
       
    69     v extent:((width - space2 - (v borderWidth * 2))
       
    70               @ 
       
    71               (height  
       
    72                - ViewSpacing - labelField heightIncludingBorder
       
    73                - ViewSpacing - enterField heightIncludingBorder
       
    74                - buttonPanel heightIncludingBorder - ViewSpacing
       
    75                - space2)
       
    76              ).
       
    77     v origin:[ViewSpacing
       
    78               @
       
    79               (enterField origin y + enterField height + ViewSpacing)]
       
    80       extent:[(width - space2 - (v borderWidth * 2))
       
    81               @ 
       
    82               (height
       
    83                - ViewSpacing - labelField heightIncludingBorder
       
    84                - ViewSpacing - enterField heightIncludingBorder
       
    85                - buttonPanel heightIncludingBorder - ViewSpacing
       
    86                - space2)
       
    87              ].
       
    88     selectionList := v scrolledView.
       
    89 
       
    90     "self updateList."
       
    91 
       
    92     "selections in list get forwarded to enterfield"
       
    93     selectionList action:[:lineNr |
       
    94         enterField contents:(selectionList selectionValue)
       
    95     ].
       
    96     selectionList keyboardHandler:enterField
       
    97 !
       
    98 
       
    99 updateList
       
   100     "setup contents of list; nothing done here but redefined in subclasses"
       
   101 
       
   102     ^ self
       
   103 !
       
   104 
       
   105 realize
       
   106     self updateList.
       
   107     super realize
       
   108 ! !
       
   109 
       
   110 !ListSelectionBox methodsFor:'private'!
       
   111 
       
   112 resize
       
   113     "resize myself to make everything visible"
       
   114 
       
   115     |wWanted hWanted|
       
   116 
       
   117     wWanted := labelField width + ViewSpacing + ViewSpacing.
       
   118     (wWanted > width) ifFalse:[
       
   119         wWanted := width
       
   120     ].
       
   121     hWanted := ViewSpacing + labelField height +
       
   122                ViewSpacing + enterField height +
       
   123                ViewSpacing + selectionList height +
       
   124                ViewSpacing + buttonPanel height +
       
   125                ViewSpacing.
       
   126 
       
   127     (hWanted < height) ifTrue:[
       
   128         hWanted := height
       
   129     ].
       
   130     self extent:(wWanted @ hWanted)
       
   131 ! !
       
   132 
       
   133 !ListSelectionBox methodsFor:'accessing'!
       
   134 
       
   135 list:aList
       
   136     "set the list to be displayed in selection list"
       
   137 
       
   138     selectionList list:aList
       
   139 ! !