DirectoryContentsBrowser.st
changeset 9103 eba365efe5e6
parent 8998 9e82e5a0ea9a
child 9105 e848e5001118
--- a/DirectoryContentsBrowser.st	Wed Oct 28 16:11:22 2009 +0100
+++ b/DirectoryContentsBrowser.st	Wed Oct 28 16:11:40 2009 +0100
@@ -834,14 +834,10 @@
 !DirectoryContentsBrowser methodsFor:'accessing'!
 
 allItems
-    "return the value of the instance variable 'allItems' (automatically generated)"
-
     ^ allItems ? #()
 !
 
 allItems:something
-    "set the value of the instance variable 'allItems' (automatically generated)"
-
     allItems := something.
 !
 
@@ -1168,9 +1164,14 @@
 
     filterBox := self filterValueBox value.
     filterBox isNil ifTrue:[^ self ].
+
     noOfAddedFiles ~= noOfFiles ifTrue:[
         clr := Color red lightened lightened lightened.
-        [ View drawingOnClosedDrawableSignal catch:[ filterBox flash ] ] fork.                 
+        [ 
+            View drawingOnClosedDrawableSignal catch:[ 
+                filterBox flash 
+            ] 
+        ] fork.                 
     ] ifFalse:[
         clr := self filterBackgroundColor value.
     ].
@@ -2165,13 +2166,14 @@
     |desc mime icon type preview|
 
     browserItemList notEmpty ifTrue:[
-        "/ update item if item properties are changed
+        "/ update item if item's properties have changed
 "/        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:[  
@@ -2313,19 +2315,15 @@
 !DirectoryContentsBrowser methodsFor:'update task'!
 
 createItemList
-
-"/    |filterTime sortTime getAllTime|
+    "reread the whole list of items"
+
+    |rawFilteredItems|
 
     directory notNil ifTrue:[
-"/        getAllTime := Time millisecondsToRun:[
-            self allItems:self readDirectoryItems.
-"/        ].
-"/        filterTime := Time millisecondsToRun:[
-            filteredItems := self evaluateFilter:(self allItems).
-"/        ].
-"/        sortTime := Time millisecondsToRun:[
-            filteredItems := self sortBlockHolder value sortItemList:filteredItems.
-"/        ].
+        self allItems:self readDirectoryItems.
+        rawFilteredItems := self evaluateFilter:(self allItems).
+        filteredItems := self sortBlockHolder value sortItemList:rawFilteredItems.
+
 "/        Transcript showCR:'getAllTime:', getAllTime asString.
 "/        Transcript showCR:'filterTime:', filterTime asString.
 "/        Transcript showCR:'sortTime:', sortTime asString.
@@ -2348,6 +2346,8 @@
 !
 
 directoryChanged
+    "reread the whole list of items"
+
     |pos|
 
     self setBrowserItemList:#().
@@ -2415,26 +2415,37 @@
 !
 
 evaluateFilter:anItemsList
-
-    |showDir filterBlock newItemList noOfAddedFiles noOfFiles showFiles|
-
-    newItemList := OrderedCollection new.
+    "return filtered items from anItemsList"
+
+    |showDir showHidden filterBlock newItemList noOfAddedFiles noOfFiles showFiles|
+
     noOfFiles := 0.
     noOfAddedFiles := 0.
+
+    showHidden := self showHiddenFiles value.
     showDir := self viewDirsInContentsBrowser value.
     showFiles := self viewFilesInContentsBrowser value.
     
     filterBlock := self matchBlock.
-    anItemsList size ~~ 0 ifTrue:[ 
-        anItemsList do:[:eachItem | |isDir|
-            isDir := eachItem isDirectory.
-            isDir ifFalse:[noOfFiles := noOfFiles + 1].
-            ((isDir and:[showDir]) or:[isDir not and:[ showFiles and:[filterBlock value:eachItem baseName]]]) ifTrue:[
-                isDir ifFalse:[noOfAddedFiles := noOfAddedFiles + 1].
-                newItemList add:eachItem 
-            ].
-        ].
-    ].
+    newItemList := anItemsList 
+                        select:[:eachItem |
+                            |isDir showIt|
+
+                            isDir := eachItem isDirectory.
+                            isDir ifFalse:[noOfFiles := noOfFiles + 1].
+
+                            showIt := isDir 
+                                        ifTrue:[ showHidden or:[ eachItem fileName isHidden not ]]
+                                        ifFalse:[ showFiles and:[filterBlock 
+                                                                    value:eachItem fileName 
+                                                                    value:eachItem baseName]].
+
+                            showIt ifTrue:[
+                                isDir ifFalse:[noOfAddedFiles := noOfAddedFiles + 1].
+                            ].
+                            showIt
+                        ].
+
     self noOfAddedFiles:noOfAddedFiles noOfFiles:noOfFiles.
     ^ newItemList
 !
@@ -3275,9 +3286,9 @@
 !DirectoryContentsBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/DirectoryContentsBrowser.st,v 1.225 2009-10-16 09:57:41 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/DirectoryContentsBrowser.st,v 1.226 2009-10-28 15:11:40 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/DirectoryContentsBrowser.st,v 1.225 2009-10-16 09:57:41 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/DirectoryContentsBrowser.st,v 1.226 2009-10-28 15:11:40 cg Exp $'
 ! !