DirectoryContentsBrowser.st
changeset 5475 b14874ad8460
parent 5474 c1f778c85ec1
child 5544 e5ccc9372d6b
--- 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 $'
 ! !