--- a/DirectoryContentsBrowser.st Mon Feb 02 17:10:58 2004 +0100
+++ b/DirectoryContentsBrowser.st Mon Feb 02 17:29:14 2004 +0100
@@ -13,25 +13,25 @@
"{ Package: 'stx:libtool' }"
AbstractDirectoryBrowser subclass:#DirectoryContentsBrowser
- instanceVariableNames:'modificationTime directory columnDescriptors iconIndex
- fileDescriptionIndex iconExtent tableColumns previewIndex
- draggedItem viewBrowserMenu updateContentsSelection
- selectionInFileList browserItemList matchBlock updateTask
- directoryChangeFlag directoryContentsChangeFlag filterChangeFlag
- sortBlockChangeFlag isBusy changeSema filteredItems allItems
- diskUsageInfo diskUsageUpdateProcess'
- classVariableNames:''
- poolDictionaries:''
- category:'Interface-Tools-File'
+ instanceVariableNames:'modificationTime directory columnDescriptors iconIndex
+ fileDescriptionIndex iconExtent tableColumns previewIndex
+ draggedItem viewBrowserMenu updateContentsSelection
+ selectionInFileList browserItemList matchBlock updateTask
+ directoryChangeFlag directoryContentsChangeFlag filterChangeFlag
+ sortBlockChangeFlag isBusy changeSema filteredItems allItems
+ diskUsageInfo diskUsageUpdateProcess'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'Interface-Tools-File'
!
Object subclass:#DirectoryContentsItem
- instanceVariableNames:'fileName fileInfo icon fileType
- contentsBrowserChangeModificationTime suffix preview group owner
- timeAndDate mimeType iconKey mimeTypeForContents'
- classVariableNames:'LastUIDToUserNameMapping LastGIDToGroupNameMapping'
- poolDictionaries:''
- privateIn:DirectoryContentsBrowser
+ instanceVariableNames:'fileName fileInfo icon fileType
+ contentsBrowserChangeModificationTime suffix preview group owner
+ timeAndDate mimeType iconKey mimeTypeForContents'
+ classVariableNames:'LastUIDToUserNameMapping LastGIDToGroupNameMapping'
+ poolDictionaries:''
+ privateIn:DirectoryContentsBrowser
!
!DirectoryContentsBrowser class methodsFor:'documentation'!
@@ -117,7 +117,6 @@
!DirectoryContentsBrowser class methodsFor:'constant'!
debug
-
^ false
!
@@ -2014,11 +2013,6 @@
^ icon
!
-updateChangesFor:anItem
-
- anItem resetItemForChanges.
-!
-
updateColumnsCycle
" update items in the foolowing order
- update item if item properties are changed
@@ -2038,14 +2032,12 @@
browserItemList notEmpty ifTrue:[
"/ update item if item properties are changed
- desc := self findNextVisibleItemFor:[:n| n hasBeenModified ].
-
- desc notNil ifTrue:[
- self updateChangesFor:desc.
- browser invalidateVisibleRow:desc.
- self debugMessage:'item properties are changed', desc baseName.
- ^ true.
- ].
+"/ desc := self findNextVisibleItemFor:[:n| n accessFirstTime ].
+"/ desc notNil ifTrue:[
+"/ browser invalidateVisibleRow:desc.
+"/ self debugMessage:'item properties are changed ', desc baseName.
+"/ ^ true.
+"/ ].
"/ update icon for visible items by suffix
desc := self findNextVisibleItemFor:[:n| n icon isNil ].
desc notNil ifTrue:[
@@ -2054,7 +2046,7 @@
(icon notNil and:[iconIndex ~~ 0]) ifTrue:[
browser invalidateVisibleRow:desc colAt:iconIndex
].
- self debugMessage:'icon for visible items by suffix', desc baseName.
+ self debugMessage:'icon for visible items ', desc baseName.
^ true
].
"/ update icon for visible items by contents
@@ -2077,7 +2069,7 @@
desc notNil ifTrue:[
type := self getFileInfoFor:desc.
type notNil ifTrue:[browser invalidateVisibleRow:desc colAt:fileDescriptionIndex].
- self debugMessage:'file info for visible items if file info column is shown', desc baseName.
+ self debugMessage:'file info for visible items if file info column is shown ', desc baseName.
^ true
]
].
@@ -2089,7 +2081,7 @@
preview notNil ifTrue:[
browser invalidateVisibleRow:desc colAt:previewIndex
].
- self debugMessage:'preview for visible items if preview column is shown', desc baseName.
+ self debugMessage:'preview for visible items if preview column is shown ', desc baseName.
^ true
]
].
@@ -2102,7 +2094,7 @@
desc notNil ifTrue:[
icon := self getIconFor:desc.
desc icon:icon.
- self debugMessage:'icon for invisible items by suffix', desc baseName.
+ self debugMessage:'icon for invisible items by suffix ', desc baseName.
^ true
].
"/ update icon for invisible items by contents
@@ -2110,7 +2102,7 @@
desc notNil ifTrue:[
icon := self getIconForMimeTypeByContents:desc.
desc icon:icon.
- self debugMessage:'icon for invisible items by contents', desc baseName.
+ self debugMessage:'icon for invisible items by contents ', desc baseName.
^ true
].
"/ update file info for invisible items if file info column is shown
@@ -2118,7 +2110,7 @@
desc := self findNextItemFor:[:n| n fileType isNil ].
desc notNil ifTrue:[
self getFileInfoFor:desc.
- self debugMessage:'update file info for invisible items if file info column is shown', desc baseName.
+ self debugMessage:'update file info for invisible items if file info column is shown ', desc baseName.
^ true
].
].
@@ -2127,7 +2119,7 @@
desc := self findNextItemFor:[:n| n preview isNil ].
desc notNil ifTrue:[
self getPreviewFor:desc.
- self debugMessage:'update preview for invisible items if preview column is shown:', desc baseName.
+ self debugMessage:'update preview for invisible items if preview column is shown: ', desc baseName.
^ true
].
].
@@ -2135,7 +2127,7 @@
desc := self findNextItemFor:[:n| n fileType isNil ].
desc notNil ifTrue:[
self getFileInfoFor:desc.
- self debugMessage:'update file info for invisible items if file info column is not shown:', desc baseName.
+ self debugMessage:'update file info for invisible items if file info column is not shown: ', desc baseName.
^ true
].
].
@@ -2146,7 +2138,7 @@
modificationCycle
- | oldModificationTime |
+ | oldModificationTime desc|
directory notNil ifTrue:[
directory exists not ifTrue:[
self directoryChangeFlag:true.
@@ -2158,6 +2150,13 @@
self wakeUpForDirectoryContentsChanged.
].
].
+ desc := self findNextItemFor:[:n| n hasBeenModified ].
+ desc notNil ifTrue:[
+ desc resetItem.
+ browser invalidateVisibleRow:desc.
+ self debugMessage:'item is modified ', desc baseName.
+ ^ self.
+ ].
! !
!DirectoryContentsBrowser methodsFor:'update task'!
@@ -2334,6 +2333,7 @@
updateStep
AbortSignal handle:[
+ "if directory changed all running update flags must be reset"
self debugMessage:'got an abort signal'.
self directoryContentsChangeFlag:false.
self filterChangeFlag:false.
@@ -2389,6 +2389,8 @@
self updateColumnsCycle ifTrue:[
self debugMessage:'next time another columns update'.
self changeSema signal
+ ] ifFalse:[
+ self debugMessage:'next time not another columns update'.
].
] ensure:[
self isBusy:false.
@@ -2776,7 +2778,7 @@
]
!
-resetItemForChanges
+resetItem
" dont know what someone else is doing with the file - read all item properties new "
fileInfo := nil.
@@ -2796,22 +2798,17 @@
"check if item modification time is changed
"
- | time info|
+ | info|
self isRemoteDirectory ifTrue:[^ false].
- info := fileName info.
- info isNil ifTrue:[ ^ false].
- time := info modificationTime.
-
- contentsBrowserChangeModificationTime isNil ifTrue:[
- contentsBrowserChangeModificationTime := time.
- fileInfo := nil.
- ^ false.
+ fileInfo isNil ifTrue:[
+ "first time of invokation "
+ info := self getFileInfo.
+ info isNil ifTrue:[ ^ false].
+ ^ true
].
- ((contentsBrowserChangeModificationTime = time) not) ifTrue:[
- contentsBrowserChangeModificationTime := time.
- fileInfo := nil.
+ self modificationTime ~= fileName modificationTime ifTrue:[
^ true
].
^ false
@@ -3101,5 +3098,5 @@
!DirectoryContentsBrowser class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libtool/DirectoryContentsBrowser.st,v 1.148 2004-02-02 16:10:58 ca Exp $'
+ ^ '$Header: /cvs/stx/stx/libtool/DirectoryContentsBrowser.st,v 1.149 2004-02-02 16:29:14 penk Exp $'
! !