--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/FilenameWidgetWithHistory.st Fri Oct 19 16:18:53 2007 +0200
@@ -0,0 +1,106 @@
+"{ Package: 'stx:libwidg2' }"
+
+SimpleView subclass:#FilenameWidgetWithHistory
+ instanceVariableNames:'fileNameEntryField browseButton history'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'Views-Interactors'
+!
+
+!FilenameWidgetWithHistory class methodsFor:'documentation'!
+
+examples
+"
+ [exBegin]
+ |top b|
+
+ top := StandardSystemView new.
+ top extent:(300 @ 200).
+
+ b := FilenameWidgetWithHistory in:top.
+ b origin:(0.0 @ 0.0) corner:(1.0 @ 0.0).
+ b bottomInset:(b preferredExtent y negated).
+
+ top open.
+ [exEnd]
+"
+! !
+
+!FilenameWidgetWithHistory methodsFor:'accessing'!
+
+historyList
+ ^ #('a' 'b' 'c')
+!
+
+model
+ ^ fileNameEntryField model
+!
+
+model:aFilenameHolder
+ fileNameEntryField model:aFilenameHolder.
+! !
+
+!FilenameWidgetWithHistory methodsFor:'initialization'!
+
+initialize
+ super initialize.
+
+ fileNameEntryField := FilenameComboBoxView in:self.
+ fileNameEntryField layout:(LayoutFrame
+ leftFraction:0 offset:0
+ rightFraction:1 offset:-22
+ topFraction:0 offset:0
+ bottomFraction:1 offset:0).
+ fileNameEntryField listHolder:(self historyList).
+
+ browseButton := Button in:self.
+ browseButton label:'...'.
+ browseButton action:[self browseForDestinationDirectory].
+ browseButton layout:(LayoutFrame
+ leftFraction:1 offset:-22
+ rightFraction:1 offset:-2
+ topFraction:0 offset:0
+ bottomFraction:1 offset:0).
+! !
+
+!FilenameWidgetWithHistory methodsFor:'queries'!
+
+preferredExtent
+ preferredExtent notNil ifTrue:[
+ ^ preferredExtent
+ ].
+
+ preferredExtent := (fileNameEntryField preferredExtent x + browseButton preferredExtent x)
+ @
+ (fileNameEntryField preferredExtent y "max: browseButton preferredExtent y").
+ ^ preferredExtent
+! !
+
+!FilenameWidgetWithHistory methodsFor:'user actions'!
+
+browseForDestinationDirectory
+ |dir|
+
+ Dialog aboutToOpenBoxNotificationSignal handle:[:ex |
+ |dialog|
+
+ dialog := ex parameter.
+ dialog perform:#browseVisibleHolder with:true ifNotUnderstood:[].
+ ex proceed.
+ ] do:[
+ dir := Dialog
+ requestDirectoryName:'Destination Directory'
+ default:(self model value ? '.' asFilename pathName).
+ ].
+ dir isEmptyOrNil ifTrue:[ ^ self ].
+
+ self model value:dir.
+
+ "Modified: / 02-10-2006 / 14:45:54 / cg"
+! !
+
+!FilenameWidgetWithHistory class methodsFor:'documentation'!
+
+version
+ ^ '$Header: /cvs/stx/stx/libwidg2/FilenameWidgetWithHistory.st,v 1.1 2007-10-19 14:18:53 cg Exp $'
+! !