diff -r efb80a288277 -r 0383cd70fe79 FileSelectionBrowser.st --- 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 ! !