"
COPYRIGHT (c) 1996 by eXept Software AG / Claus Gittinger
All Rights Reserved
This software is furnished under a license and may be used
only in accordance with the terms of that license and with the
inclusion of the above copyright notice. This software may not
be provided or otherwise made available to, or used by, any
other person. No title to or ownership of the software is
hereby transferred.
"
ComboView subclass:#ComboBoxView
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
category:'Views-Interactors'
!
!ComboBoxView class methodsFor:'documentation'!
copyright
"
COPYRIGHT (c) 1996 by eXept Software AG / Claus Gittinger
All Rights Reserved
This software is furnished under a license and may be used
only in accordance with the terms of that license and with the
inclusion of the above copyright notice. This software may not
be provided or otherwise made available to, or used by, any
other person. No title to or ownership of the software is
hereby transferred.
"
!
documentation
"
A ComboBoxView combines an inputField with a drop down list of default inputs;
choosing any from the pulled list presets the string in the field.
In contrast to a PopUpList or ComboListView, the string can still be edited -
the list is actually only a set of values for the convenience of the user.
Not yet finished - it may need more protocol.
[author:]
Claus Gittinger
[see also:]
ComboView
PopUpList SelectionInListView
ComboListView
PullDownMenu Label EntryField
"
!
examples
"
non MVC operation:
[exBegin]
|top b|
top := StandardSystemView new.
top extent:(300 @ 200).
b := ComboBoxView in:top.
b origin:(0.0 @ 0.0) corner:(1.0 @ 0.0).
b bottomInset:(b preferredExtent y negated).
b list:#('hello' 'world' 'this' 'is' 'st/x').
top open.
[exEnd]
with action:
[exBegin]
|top b|
top := StandardSystemView new.
top extent:(300 @ 200).
b := ComboBoxView in:top.
b origin:(0.0 @ 0.0) corner:(1.0 @ 0.0).
b bottomInset:(b preferredExtent y negated).
b list:#('hello' 'world' 'this' 'is' 'st/x').
b action:[:entry | Transcript showCR:entry].
top open.
[exEnd]
model operation:
[exBegin]
|model top b|
model := 'foo' asValue.
top := StandardSystemView new.
top extent:(300 @ 200).
b := ComboBoxView in:top.
b origin:(0.0 @ 0.0) corner:(1.0 @ 0.0).
b bottomInset:(b preferredExtent y negated).
b list:#('hello' 'world' 'this' 'is' 'st/x').
b model:model.
top openModal.
Transcript showCR:('comboBox''s value: ' , model value).
[exEnd]
in a dialog:
[exBegin]
|model1 model2 dialog b|
model1 := 'foo' asValue.
model2 := 'bar' asValue.
dialog := Dialog new.
(dialog addTextLabel:'ComboBox example:') adjust:#left.
dialog addVerticalSpace.
(b := dialog addComboBoxOn:model1 tabable:true).
b list:#('fee' 'foe' 'foo').
dialog addVerticalSpace.
(b := dialog addComboBoxOn:model2 tabable:true).
b list:#('bar' 'baz' 'baloo').
dialog addVerticalSpace.
dialog addOkButton.
dialog open.
Transcript showCR:('1st comboBox''s value: ' , model1 value).
Transcript showCR:('2nd comboBox''s value: ' , model2 value).
[exEnd]
"
! !
!ComboBoxView methodsFor:'accessing-components'!
editor
"return the inputField component"
^ field
"Created: 9.2.1996 / 20:18:03 / cg"
"Modified: 28.2.1996 / 15:10:50 / cg"
! !
!ComboBoxView methodsFor:'accessing-mvc'!
accept
field accept
"Created: 4.3.1996 / 12:15:18 / cg"
!
acceptChannel
^ field acceptChannel
!
acceptChannel:aChannel
field acceptChannel:aChannel
!
model
^ field model
"Created: 9.2.1996 / 00:50:18 / cg"
"Modified: 28.2.1996 / 15:10:59 / cg"
!
model:aModel
super model:aModel.
field model:aModel.
"Created: 9.2.1996 / 00:50:12 / cg"
"Modified: 28.2.1996 / 15:11:03 / cg"
!
modifiedChannel
^ field modifiedChannel
!
modifiedChannel:aChannel
field modifiedChannel:aChannel
! !
!ComboBoxView methodsFor:'initialization'!
initializeField
field := EditField in:self.
field borderWidth:0.
field model:(ValueHolder newString).
field acceptOnLostFocus:true.
field acceptOnLeave:true.
field leaveAction:[:key | self fieldLeft].
"
all of my input goes to the enterfield
"
self delegate:(KeyboardForwarder toView:field).
"
|b|
b := ComboBoxView new.
b list:#('hello' 'world' 'this' 'is' 'st/x').
b open
"
"Created: 28.2.1996 / 15:07:51 / cg"
"Modified: 26.2.1997 / 19:44:13 / cg"
! !
!ComboBoxView methodsFor:'private'!
setFieldsFont:aFont
"ignored - the inputFields font remains unchanged"
! !
!ComboBoxView methodsFor:'queries'!
specClass
"XXX no longer needed (inherited default works here)"
self class == ComboBoxView ifTrue:[
^ ComboBoxSpec
].
^ super specClass
"Modified: / 31.10.1997 / 19:49:39 / cg"
! !
!ComboBoxView methodsFor:'user interaction'!
fieldLeft
field accept.
action notNil ifTrue:[
action value:(field contents)
].
"Modified: 26.2.1997 / 19:38:24 / cg"
"Created: 26.2.1997 / 19:42:30 / cg"
!
select:index
|what|
what := list at:index.
field contents:what.
field accept.
pullDownButton turnOff.
action notNil ifTrue:[
action value:what
].
"Modified: 26.2.1997 / 19:38:24 / cg"
"Created: 28.2.1997 / 14:01:53 / cg"
! !
!ComboBoxView class methodsFor:'documentation'!
version
^ '$Header: /cvs/stx/stx/libwidg2/ComboBoxView.st,v 1.21 1999-03-19 18:08:34 cg Exp $'
! !