--- 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 $'
! !