HierarchicalFileList.st
changeset 2297 4440935a1fa2
parent 2296 17f0578b247e
child 2298 22e95baad346
--- a/HierarchicalFileList.st	Tue Oct 15 10:29:25 2002 +0200
+++ b/HierarchicalFileList.st	Tue Oct 15 14:39:08 2002 +0200
@@ -22,7 +22,7 @@
 !
 
 HierarchicalItem subclass:#HierarchicalFileItem
-	instanceVariableNames:'fileName icon fileInfo'
+	instanceVariableNames:'icon contentsItem'
 	classVariableNames:'LastUIDToUserNameMapping LastGIDToGroupNameMapping'
 	poolDictionaries:''
 	privateIn:HierarchicalFileList
@@ -167,7 +167,7 @@
             fileInfo := directory info.
         ]
     ].
-    newRootItem := HierarchicalFileItem fileName:directory fileInfo:fileInfo.
+    newRootItem := HierarchicalFileItem fileName:directory.
     doExpand ifTrue:[ newRootItem setExpanded:true ].
     self root:newRootItem.
 !
@@ -302,20 +302,9 @@
     list := OrderedCollection new.
     matchBlock := self matchBlockFor:anItem.
 
-    matchBlock isNil ifTrue:[
-        contents itemsDo:[:anItem|
-            list add:(HierarchicalFileItem fileName:(anItem fileName)
-                                           fileInfo:(anItem info) )
-        ]
-    ] ifFalse:[
-        contents itemsDo:[:anItem|
-            |fn|
-
-            fn := anItem fileName.
-
-            (matchBlock value:fn value:(anItem isDirectory)) ifTrue:[
-                list add:(HierarchicalFileItem fileName:fn fileInfo:(anItem info)).
-            ]
+    contents itemsDo:[:anItem|
+        (matchBlock isNil or:[matchBlock value:(anItem fileName) value:(anItem isDirectory)]) ifTrue:[
+            list add:(HierarchicalFileItem forContentsItem:anItem).
         ]
     ].
 
@@ -479,21 +468,25 @@
 
 !HierarchicalFileList::HierarchicalFileItem class methodsFor:'instance creation'!
 
-fileName:aFilename fileInfo:aFileInfoOrNil
+fileName:aFileName
+    ^ self forContentsItem:(DirectoryContents contentsItemForFileName:aFileName)
+!
+
+forContentsItem:anItem
     |item cls|
 
-    aFileInfoOrNil isNil ifTrue:[
+    anItem isRemoteDirectory ifTrue:[
         cls := HierarchicalFileList::RemoteDirectory
     ] ifFalse:[
-        aFileInfoOrNil isDirectory ifTrue:[
+        anItem isDirectory ifTrue:[
             cls := HierarchicalFileList::Directory
         ] ifFalse:[
             cls := HierarchicalFileList::File
         ]
     ].
     item := cls basicNew initialize.
-    item fileName:aFilename fileInfo:aFileInfoOrNil.
-  ^ item
+    item contentsItem:anItem.
+    ^ item
 !
 
 new
@@ -505,36 +498,45 @@
 baseName
     "returns the baseName
     "
-    ^ fileName baseName.
+    ^ contentsItem fileName baseName.
+!
+
+contentsItem:aContentsItem
+    contentsItem := aContentsItem
 !
 
 fileName
     "returns the fileName
     "
-    ^ fileName
-
-
+    ^ contentsItem fileName
 !
 
 fileName:aFilename
-    fileName = aFilename ifFalse:[
-        fileName := aFilename.
-        self changed:#label
-    ].
+self halt.
+    contentsItem :=  DirectoryContents contentsItemForFileName:aFilename
+
+"/    fileName = aFilename ifFalse:[
+"/        fileName := aFilename.
+"/        self changed:#label
+"/    ].
 !
 
 fileSize
     "returns the fileSize
     "
+    |fileInfo|
+
+    fileInfo := contentsItem info.
     fileInfo isNil ifTrue:[^ nil].
-  ^ fileInfo size
+  ^ fileInfo fileSize
 !
 
 group
     "returns the printable group
     "
-    |gid group|
+    |fileInfo gid group|
 
+    fileInfo := contentsItem info.
     fileInfo notNil ifTrue:[
         gid := fileInfo gid.
 
@@ -567,21 +569,26 @@
 label
     "returns the printable name, the baseName
     "
-    ^ fileName baseName
+    ^ contentsItem fileName baseName
 !
 
 modificationTime
     "returns the absolute time of modification
     "
+
+    |fileInfo|
+
+    fileInfo := contentsItem info.
     fileInfo isNil ifTrue:[^ nil].
-  ^ fileInfo modificationTime
+    ^ fileInfo modificationTime
 !
 
 owner
     "returns the printable owner
     "
-    |uid owner|
+    |fileInfo uid owner|
 
+    fileInfo := contentsItem info.
     fileInfo notNil ifTrue:[
         uid := fileInfo uid.
 
@@ -601,14 +608,15 @@
 pathName
     "returns the pathName
     "
-    ^ fileName pathName
+    ^ contentsItem fileName pathName
 !
 
 permissions
     "returns the permissions as printable string
     "
-    |mode perms|
+    |fileInfo mode perms|
 
+    fileInfo := contentsItem info.
     fileInfo notNil ifTrue:[
         mode := fileInfo mode.
 
@@ -632,7 +640,7 @@
     (OperatingSystem isUNIXlike and:[(self baseName at:1) == $.]) ifTrue:[
         ^ ''
     ].
-    ^ fileName suffix
+    ^ contentsItem fileName suffix
 ! !
 
 !HierarchicalFileList::HierarchicalFileItem methodsFor:'change & update'!
@@ -647,8 +655,9 @@
 !HierarchicalFileList::HierarchicalFileItem methodsFor:'instance creation'!
 
 fileName:aFilename fileInfo:aFileInfoOrNil
-    fileName := aFilename.
-    fileInfo := aFileInfoOrNil.
+self halt.
+"/    fileName := aFilename.
+"/    fileInfo := aFileInfoOrNil.
 ! !
 
 !HierarchicalFileList::HierarchicalFileItem methodsFor:'invalidate'!
@@ -789,7 +798,7 @@
     "/ set to suppress reading of children
     children := #().
     fetchOperation   := nil.
-    modificationTime := fileName modificationTime.
+    modificationTime := self fileName modificationTime.
     model stopIndicatorValidationFor:self.
 
     list := model childrenFor:self.
@@ -843,8 +852,7 @@
 basicFetchIndicator
     |hasChildren|
 
-    hasChildren := DirectoryContents directoryNamed:fileName
-                                                detect:(self model matchBlock).
+    hasChildren := DirectoryContents directoryNamed:self fileName detect:(self model matchBlock).
     hasChildren ifTrue:[
         fetchOperation := #hasChildren
     ] ifFalse:[
@@ -853,7 +861,7 @@
     children isNil ifTrue:[
         "setup modification time to suppress monitorCycle
         "
-        modificationTime := fileName modificationTime.
+        modificationTime := self fileName modificationTime.
     ].
 !
 
@@ -971,7 +979,7 @@
     "
     |unusedDict addedItems mergedList size modifyTime model timeChanged|
 
-    modifyTime := fileName modificationTime.
+    modifyTime := self fileName modificationTime.
     modifyTime ifNil:[^ self].
 
     timeChanged := (modificationTime isNil or:[modifyTime > modificationTime]).
@@ -1065,5 +1073,5 @@
 !HierarchicalFileList class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg2/HierarchicalFileList.st,v 1.32 2002-10-15 08:29:25 ca Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg2/HierarchicalFileList.st,v 1.33 2002-10-15 12:39:08 cg Exp $'
 ! !