diff -r 17f0578b247e -r 4440935a1fa2 HierarchicalFileList.st --- 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 $' ! !