made expandFilename a separate method and fixed it.
update directory variable when changing.
--- 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'!