FileSelectionBrowser.st
changeset 1001 4474ba86a5d8
parent 1000 efafa57e0313
child 1003 7880fc48f0bb
--- a/FileSelectionBrowser.st	Thu Sep 24 16:57:14 1998 +0200
+++ b/FileSelectionBrowser.st	Thu Sep 24 23:09:27 1998 +0200
@@ -337,9 +337,12 @@
 
     f := aFilename asFilename.
     root := Filename rootDirectoryOnVolume:f volume.
+    self directory:aFilename.
 
     "/ on some systems, the root itself is not readable,
     "/ but subdirs are (WIN32-network drives and VMS)
+    "/ to avoid trouble in the treeView, search for the
+    "/ last readable directory and fake that as the trees root.
 
     (root exists and:[root isDirectory and:[root isReadable]])
     ifFalse:[
@@ -357,7 +360,7 @@
         value:root pathName
 
     "Created: / 23.9.1998 / 16:36:28 / cg"
-    "Modified: / 24.9.1998 / 15:31:30 / cg"
+    "Modified: / 24.9.1998 / 22:26:01 / cg"
 !
 
 valueOfFileName
@@ -383,9 +386,52 @@
     self directoryTreeView selection notNil 
     ifTrue: 
     [
-        directoryView directory: self selectionOfDirectory value; readDirectory.  
+        directoryView directory: self selectionOfDirectory value.
+        directoryView readDirectory.  
         self class lastSelection notNil ifTrue: [self class lastSelection: self selectionOfDirectory value]
     ]
+
+    "Modified: / 24.9.1998 / 21:58:50 / cg"
+! !
+
+!FileSelectionBrowser methodsFor:'misc'!
+
+entryCompletion
+    |completedDirectory f dir treeView inputField|
+
+    treeView := self directoryTreeView.
+    inputField := self directoryInputField.
+
+    f := inputField contents.
+    dir := f asFilename directoryName.
+
+    (completedDirectory := Filename 
+        filenameCompletionFor:f
+        directory:dir
+        directoriesOnly:true 
+        filesOnly:false 
+        ifMultiple:
+        [:dir | 
+            treeView selection notNil ifTrue:[
+                treeView selectedNodeExpand: true
+            ]
+        ]) asFilename exists
+    ifTrue:
+    [
+        "/ volume changed ... (win32 or VMS)
+        completedDirectory asFilename volume ~= directory asFilename volume ifTrue:[
+            self setRootForFile:completedDirectory asFilename.
+        ].
+        treeView selectPathname: completedDirectory.
+        inputField contents: completedDirectory.
+"/            self directoryTreeView selectPathname: completedDirectory.
+        self readDirectory
+    ] ifFalse: [
+        inputField flash
+    ]
+
+    "Created: / 24.9.1998 / 21:33:37 / cg"
+    "Modified: / 24.9.1998 / 22:20:23 / cg"
 ! !
 
 !FileSelectionBrowser methodsFor:'startup / release'!
@@ -431,40 +477,15 @@
     ]. 
     self directoryTreeView selectPathname: directory ? self class lastSelection ? Filename currentDirectory asAbsoluteFilename name.
 
-    self directoryInputField entryCompletionBlock: 
-    [:f|
-       |completedDirectory|
-
-       (completedDirectory := Filename 
-            filenameCompletionFor: self directoryInputField contents
-            directory:(directory asFilename)
-            directoriesOnly:true 
-            filesOnly:false 
-            ifMultiple:
-            [:dir | 
-                self directoryTreeView selection notNil ifTrue: [
-                    self directoryTreeView selectedNodeExpand: true]
-            ]) asFilename exists
-        ifTrue:
-        [
-            "/ volume changed ... (win32 or VMS)
-            completedDirectory asFilename volume ~= directory asFilename volume ifTrue:[
-                self setRootForFile:completedDirectory asFilename.
-            ].
-
-            self directoryInputField contents: completedDirectory.
-            self directoryTreeView selectPathname: completedDirectory.
-            self readDirectory
-        ]
-        ifFalse: [self directoryInputField flash]
-    ].
+    self directoryInputField 
+        entryCompletionBlock:[:f| self entryCompletion].
 
     directoryView selectionOfFile value: 
         (directoryView listOfFiles detect: [:row| row baseName = self valueOfFileName value] ifNone: nil).
 
     ^super postBuildWith:aBuilder
 
-    "Modified: / 23.9.1998 / 16:40:38 / cg"
+    "Modified: / 24.9.1998 / 21:34:05 / cg"
 ! !
 
 !FileSelectionBrowser class methodsFor:'documentation'!