DirectoryView.st
changeset 3299 13b7e24a9074
parent 3298 d388699ae421
child 3303 d3836d28d2c0
equal deleted inserted replaced
3298:d388699ae421 3299:13b7e24a9074
   500     |readBlock|
   500     |readBlock|
   501 
   501 
   502     readTask notNil ifTrue: [readTask terminate].
   502     readTask notNil ifTrue: [readTask terminate].
   503     readBlock :=
   503     readBlock :=
   504         [
   504         [
   505             |dir currentFilenames oldListOfFiles|
   505             |dir currentFilenames oldListOfFiles listOfFiles|
   506 
   506 
   507             dir := directory asFilename.
   507             dir := directory asFilename.
   508             currentFilenames := OrderedCollection new.
   508             currentFilenames := OrderedCollection new.
   509             (dir isReadable and:[dir isExecutable]) ifTrue: [
   509             (dir isReadable and:[dir isExecutable]) ifTrue: [
   510                 self listOfFileFilters value do:
   510                 self listOfFileFilters value do:
   515                             currentFilenames add: file
   515                             currentFilenames add: file
   516                         ]
   516                         ]
   517                     ].
   517                     ].
   518                 ].
   518                 ].
   519             ].
   519             ].
   520             oldListOfFiles := self listOfFiles copy.
   520             listOfFiles := self listOfFiles.
       
   521             
       
   522             oldListOfFiles := listOfFiles copy.
   521             (currentFilenames asSortedCollection: [:f1 :f2| f1 baseName < f2 baseName]) asSet 
   523             (currentFilenames asSortedCollection: [:f1 :f2| f1 baseName < f2 baseName]) asSet 
   522                 do: [:fileName| 
   524                 do: [:fileName| 
   523                     (oldListOfFiles detect: [:fileRow| fileRow fileName = fileName] ifNone: nil) isNil
   525                     (oldListOfFiles detect: [:fileRow| fileRow fileName = fileName] ifNone: nil) isNil
   524                     ifTrue: [
   526                     ifTrue: [
   525                         |nearestFileRow r|
   527                         |nearestFileRow newRow r|
   526                         nearestFileRow := self listOfFiles indexOf: (self listOfFiles detect: [:fileRow| fileRow baseName > fileName baseName] ifNone: nil).
   528                         
       
   529                         newRow := FileRow new fileName: fileName asFilename.
       
   530                         "/ cg: how stupid is that?
       
   531                         "/ nearestFileRow := listOfFiles indexOf: (listOfFiles detect: [:fileRow| fileRow baseName > fileName baseName] ifNone: nil).
       
   532                         nearestFileRow := listOfFiles findFirst:[:fileRow | fileRow baseName > fileName baseName].
   527                         nearestFileRow = 0
   533                         nearestFileRow = 0
   528                             ifTrue: [self listOfFiles add: (r := FileRow new fileName: fileName asFilename)]
   534                             ifTrue: [listOfFiles add: newRow]
   529                             ifFalse: [self listOfFiles add: (r := FileRow new fileName: fileName asFilename) beforeIndex: nearestFileRow].
   535                             ifFalse: [listOfFiles add: newRow beforeIndex: nearestFileRow].
   530                         monitoring ifTrue: [self selectionOfFile value: r].
   536                         monitoring ifTrue: [self selectionOfFile value: r].
   531                     ]
   537                     ]
   532                 ].
   538                 ].
   533             self listOfFiles 
   539                 
       
   540             listOfFiles 
   534                 reverseDo: [:fileRow|
   541                 reverseDo: [:fileRow|
   535                     (currentFilenames includes: fileRow fileName)
   542                     (currentFilenames includes: fileRow fileName)
   536                     ifFalse: [self listOfFiles remove: fileRow]
   543                     ifFalse: [listOfFiles remove: fileRow]
   537                 ]
   544                 ]
   538         ].
   545         ].
   539 
   546 
   540     monitoring ifTrue: [
   547     monitoring ifTrue: [
   541         readTask := readBlock forkAt: Processor userBackgroundPriority.
   548         readTask := readBlock forkAt: Processor userBackgroundPriority.
  1048 
  1055 
  1049 !DirectoryView class methodsFor:'documentation'!
  1056 !DirectoryView class methodsFor:'documentation'!
  1050 
  1057 
  1051 version
  1058 version
  1052     ^ '$Header$'
  1059     ^ '$Header$'
  1053 ! !
  1060 !
  1054 
  1061 
       
  1062 version_CVS
       
  1063     ^ '$Header$'
       
  1064 ! !
       
  1065