FilenameWidgetWithHistory.st
changeset 3251 29b44f456526
child 3318 5a0aff0fd23a
--- /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 $'
+! !