--- a/DirectoryView.st Wed Jun 05 16:26:02 2013 +0200
+++ b/DirectoryView.st Thu Jun 20 12:30:12 2013 +0200
@@ -495,58 +495,50 @@
!
readMonitoringDirectory
+ |readBlock|
- |readBlock|
readTask notNil ifTrue: [readTask terminate].
readBlock :=
- [
- |dir currentFilenames oldListOfFiles|
- dir := directory asFilename.
- currentFilenames := OrderedCollection new.
- (dir isReadable and:[dir isExecutable]) ifTrue:
[
- self listOfFileFilters value do:
- [:filter|
- (dir filesMatchingWithoutDotDirs: filter) do:
- [:aFileName|
- |file|
- (file := dir construct: aFileName) isDirectory
- ifFalse:
- [
- currentFilenames add: file
- ]
+ |dir currentFilenames oldListOfFiles|
+
+ dir := directory asFilename.
+ currentFilenames := OrderedCollection new.
+ (dir isReadable and:[dir isExecutable]) ifTrue: [
+ self listOfFileFilters value do:
+ [:filter|
+ (dir filesMatchingWithoutDotDirs: filter) do: [:aFileName|
+ |file|
+ (file := dir construct: aFileName) isDirectory ifFalse: [
+ currentFilenames add: file
+ ]
+ ].
].
].
+ oldListOfFiles := self 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 = 0
+ ifTrue: [self listOfFiles add: (r := FileRow new fileName: fileName asFilename)]
+ ifFalse: [self listOfFiles add: (r := FileRow new fileName: fileName asFilename) beforeIndex: nearestFileRow].
+ monitoring ifTrue: [self selectionOfFile value: r].
+ ]
+ ].
+ self listOfFiles
+ reverseDo: [:fileRow|
+ (currentFilenames includes: fileRow fileName)
+ ifFalse: [self listOfFiles remove: fileRow]
+ ]
].
- oldListOfFiles := self 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 = 0
- ifTrue: [self listOfFiles add: (r := FileRow new fileName: fileName asFilename)]
- ifFalse: [self listOfFiles add: (r := FileRow new fileName: fileName asFilename) beforeIndex: nearestFileRow].
- monitoring ifTrue: [self selectionOfFile value: r].
- ]
- ].
- self listOfFiles reverseDo:
- [:fileRow|
- (currentFilenames includes: fileRow fileName)
- ifFalse: [self listOfFiles remove: fileRow]
- ]
- ].
- monitoring
- ifTrue:
- [
+ monitoring ifTrue: [
readTask := readBlock forkAt: Processor userBackgroundPriority.
Processor addTimedBlock: monitoringTimeBlock afterSeconds: 1
- ]
- ifFalse:
- [
+ ] ifFalse: [
Cursor wait showWhile: [readBlock value]
]
! !