--- a/FileSelectionBrowser.st Thu Feb 05 16:13:20 1998 +0100
+++ b/FileSelectionBrowser.st Thu Feb 05 16:50:03 1998 +0100
@@ -133,11 +133,11 @@
#'window:'
#(#WindowSpec
#'name:' 'File Selection Browser'
- #'layout:' #(#LayoutFrame 40 0 584 0 538 0 890 0)
+ #'layout:' #(#LayoutFrame 197 0 172 0 695 0 478 0)
#'label:' 'File Selection Browser'
#'min:' #(#Point 10 10)
#'max:' #(#Point 1152 900)
- #'bounds:' #(#Rectangle 40 584 539 891)
+ #'bounds:' #(#Rectangle 197 172 696 479)
#'usePreferredExtent:' false
)
#'component:'
@@ -159,17 +159,23 @@
#(
#(#FileSelectionTreeSpec
#'name:' 'directoryTreeView'
- #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+ #'layout:' #(#LayoutFrame 0 0.0 25 0.0 0 1.0 0 1.0)
#'model:' #selectionOfDirectory
#'hasHorizontalScrollBar:' true
#'hasVerticalScrollBar:' true
#'miniScrollerHorizontal:' true
- #'showRoot:' false
+ #'showDirectoryIndicatorForRoot:' false
#'showDirectoryIndicator:' true
#'valueChangeSelector:' #readDirectory
#'hierarchicalList:' #rootOfDirectory
#'itemClass:' 'Directory'
)
+ #(#InputFieldSpec
+ #'name:' 'directoryInputField'
+ #'layout:' #(#LayoutFrame 0 0.0 1 0 0 1.0 23 0)
+ #'model:' #selectionOfDirectory
+ #'immediateAccept:' false
+ )
)
)
)
@@ -207,8 +213,6 @@
)
)
)
-
- "Modified: / 5.2.1998 / 12:25:27 / cg"
! !
!FileSelectionBrowser methodsFor:'accessing'!
@@ -237,6 +241,12 @@
!FileSelectionBrowser methodsFor:'accessing - views'!
+directoryInputField
+
+ ^builder componentAt: #directoryInputField
+
+!
+
directoryTreeView
^builder componentAt: #directoryTreeView
@@ -285,12 +295,12 @@
readDirectory
- |dir|
- directoryView directory:
- (dir := (self directoryTreeView model list at:
- self directoryTreeView model selection) contents name);
- readDirectory.
- directory isNil ifTrue: [self class lastSelection: dir]
+ self directoryTreeView selection notNil
+ ifTrue:
+ [
+ directoryView directory: self selectionOfDirectory value; readDirectory.
+ directory isNil ifTrue: [self class lastSelection: self selectionOfDirectory value]
+ ]
! !
!FileSelectionBrowser methodsFor:'startup / release'!
@@ -316,8 +326,6 @@
constructString:(self valueOfFileName value ? '')
].
^ nil
-
- "Modified: / 28.1.1998 / 15:21:40 / stefan"
!
postBuildWith:aBuilder
@@ -329,7 +337,29 @@
self valueOfFileName value: (
((self valueOfFileName value ? 'unknown') readStream upTo: $.), '.',
(fileFilter copy reverse readStream upTo: $.) reverse)].
- self directoryTreeView selectPathname: directory ? self class lastSelection.
+ self directoryTreeView selectPathname: directory ? self class lastSelection ? '/'.
+
+ self directoryInputField entryCompletionBlock:
+ [:f|
+ |completedDirectory|
+ (completedDirectory := Filename
+ filenameCompletionFor: self directoryInputField contents
+ directory:directory
+ directoriesOnly:true
+ filesOnly:false
+ ifMultiple:
+ [:dir |
+ self directoryTreeView selection notNil ifTrue: [
+ self directoryTreeView nodeAt: self directoryTreeView selection expand:true]
+ ]) asFilename exists
+ ifTrue:
+ [
+ self directoryInputField contents: completedDirectory.
+ self directoryTreeView selectPathname: completedDirectory.
+ self readDirectory
+ ]
+ ifFalse: [self directoryInputField flash]
+ ].
^super postBuildWith:aBuilder
! !