#TUNING by cg
class: DirectoryView
changed: #readMonitoringDirectory
double scan of list eliminated (stupidity level decreased)
--- a/DirectoryView.st Thu May 12 02:29:54 2016 +0200
+++ b/DirectoryView.st Thu May 12 16:57:20 2016 +0200
@@ -502,7 +502,7 @@
readTask notNil ifTrue: [readTask terminate].
readBlock :=
[
- |dir currentFilenames oldListOfFiles|
+ |dir currentFilenames oldListOfFiles listOfFiles|
dir := directory asFilename.
currentFilenames := OrderedCollection new.
@@ -517,23 +517,30 @@
].
].
].
- oldListOfFiles := self listOfFiles copy.
+ listOfFiles := self listOfFiles.
+
+ oldListOfFiles := listOfFiles copy.
(currentFilenames asSortedCollection: [:f1 :f2| f1 baseName < f2 baseName]) asSet
do: [:fileName|
(oldListOfFiles detect: [:fileRow| fileRow fileName = fileName] ifNone: nil) isNil
ifTrue: [
- |nearestFileRow r|
- nearestFileRow := self listOfFiles indexOf: (self listOfFiles detect: [:fileRow| fileRow baseName > fileName baseName] ifNone: nil).
+ |nearestFileRow newRow r|
+
+ newRow := FileRow new fileName: fileName asFilename.
+ "/ cg: how stupid is that?
+ "/ nearestFileRow := listOfFiles indexOf: (listOfFiles detect: [:fileRow| fileRow baseName > fileName baseName] ifNone: nil).
+ nearestFileRow := listOfFiles findFirst:[:fileRow | fileRow baseName > fileName baseName].
nearestFileRow = 0
- ifTrue: [self listOfFiles add: (r := FileRow new fileName: fileName asFilename)]
- ifFalse: [self listOfFiles add: (r := FileRow new fileName: fileName asFilename) beforeIndex: nearestFileRow].
+ ifTrue: [listOfFiles add: newRow]
+ ifFalse: [listOfFiles add: newRow beforeIndex: nearestFileRow].
monitoring ifTrue: [self selectionOfFile value: r].
]
].
- self listOfFiles
+
+ listOfFiles
reverseDo: [:fileRow|
(currentFilenames includes: fileRow fileName)
- ifFalse: [self listOfFiles remove: fileRow]
+ ifFalse: [listOfFiles remove: fileRow]
]
].
@@ -1050,5 +1057,9 @@
version
^ '$Header$'
+!
+
+version_CVS
+ ^ '$Header$'
! !