DirectoryView.st
changeset 638 a82372d61cf8
parent 620 03e969ddd336
child 644 3a1a1cae7428
equal deleted inserted replaced
637:0fac61dcb6fd 638:a82372d61cf8
    19 	poolDictionaries:''
    19 	poolDictionaries:''
    20 	category:'Interface-Support'
    20 	category:'Interface-Support'
    21 !
    21 !
    22 
    22 
    23 Object subclass:#FileRow
    23 Object subclass:#FileRow
    24 	instanceVariableNames:'fileName size modified iconKey group owner permissions baseName'
    24 	instanceVariableNames:'fileName size modified iconKey imageFromFile group owner
       
    25 		permissions baseName'
    25 	classVariableNames:''
    26 	classVariableNames:''
    26 	poolDictionaries:''
    27 	poolDictionaries:''
    27 	privateIn:DirectoryView
    28 	privateIn:DirectoryView
    28 !
    29 !
    29 
    30 
   361     [ 
   362     [ 
   362         (DirectoryContents directoryNamed: directory) filesAndBasenamesDo: 
   363         (DirectoryContents directoryNamed: directory) filesAndBasenamesDo: 
   363         [:file :name|      
   364         [:file :name|      
   364             list do:
   365             list do:
   365             [:filter|
   366             [:filter|
   366                 (filter match: name)
   367                 ((filter match: name) and: [(foundFiles includes: file) not])
   367                 ifTrue:
   368                 ifTrue:
   368                 [
   369                 [
   369                     foundFiles add: (FileRow new fileName: file)
   370                     foundFiles add: file
   370                 ].
   371                 ].
   371             ].
   372             ].
   372         ].
   373         ].
   373         self listOfFiles contents: foundFiles
   374         self listOfFiles contents: (foundFiles collect: [:file| FileRow new fileName: file])
   374     ]
   375     ]
   375 
   376 
   376 !
   377 !
   377 
   378 
   378 readMonitoringDirectory
   379 readMonitoringDirectory
   663     ^group
   664     ^group
   664 !
   665 !
   665 
   666 
   666 iconOn:aGC
   667 iconOn:aGC
   667 
   668 
   668     (aGC registeredImageAt:iconKey) isNil
   669     |icon|
       
   670     iconKey isNil 
       
   671     ifTrue: 
       
   672     [
       
   673         self validateAttributes.
       
   674         (imageFromFile isNil and: [iconKey == #imageFileIcon])
       
   675             ifTrue:  [icon := self retrieveImageFromFileAndRegisterOn: aGC]
       
   676     ].
       
   677     imageFromFile
       
   678         ifFalse: [icon := aGC registerImage: (self class perform: iconKey) key: iconKey]
       
   679         ifTrue:  [icon := aGC registeredImageAt: iconKey].
       
   680     ^icon
       
   681 !
       
   682 
       
   683 modified
       
   684 
       
   685     ^modified
       
   686 !
       
   687 
       
   688 owner
       
   689 
       
   690     ^owner
       
   691 !
       
   692 
       
   693 permissions
       
   694 
       
   695     ^permissions
       
   696 !
       
   697 
       
   698 retrieveImageFromFileAndRegisterOn: aGC
       
   699 
       
   700     |image|
       
   701     imageFromFile := false.       
       
   702     (image := aGC registeredImageAt: fileName name asSymbol) isNil
   669     ifTrue:
   703     ifTrue:
   670     [
   704     [            
   671         self validateAttributes.
   705         size < 5000
   672         ((iconKey == #imageFileIcon) and: [size < 5000])
       
   673         ifTrue:
   706         ifTrue:
   674         [
   707         [     
   675             Object errorSignal handle: [:ex|]
   708             Object errorSignal handle: [:ex|]
   676             do:
   709             do:
   677             [   
   710             [   
   678                 |image|
       
   679                 (image := Image fromFile: fileName name) notNil
   711                 (image := Image fromFile: fileName name) notNil
   680                 ifTrue:
   712                 ifTrue:
   681                 [
   713                 [
   682                     image extent y > 22
   714                     image extent y > 22
   683                     ifTrue:
   715                     ifTrue:
   684                     [         
   716                     [         
   685                         image := image magnifiedBy: 22/image extent y
   717                         image := image magnifiedBy: 22/image extent y
   686                     ].
   718                     ].
   687                     (aGC registeredImageAt: (iconKey := fileName name asSymbol)) isNil
   719                     image := aGC registerImage: image key: fileName name asSymbol.
   688                     ifTrue:
       
   689                     [
       
   690                         aGC registerImage: image key: iconKey
       
   691                     ]
       
   692                 ]
   720                 ]
   693             ] 
   721             ] 
   694         ]
   722         ].
   695         ifFalse:
   723     ].
   696         [  
   724     image notNil ifTrue: [imageFromFile := true. iconKey := fileName name asSymbol].
   697             aGC registerImage: (self class perform: iconKey) key: iconKey
   725     ^image
   698         ]
   726 
   699     ].
   727 
   700     ^aGC registeredImageAt: iconKey
   728 
   701 
       
   702 
       
   703 
       
   704 
       
   705 !
       
   706 
       
   707 modified
       
   708 
       
   709     ^modified
       
   710 !
       
   711 
       
   712 owner
       
   713 
       
   714     ^owner
       
   715 !
       
   716 
       
   717 permissions
       
   718 
       
   719     ^permissions
       
   720 !
   729 !
   721 
   730 
   722 size
   731 size
   723     size isNumber ifFalse:[^ size].
   732     size isNumber ifFalse:[^ size].
   724     size < 1000        ifTrue: [^ size printString].
   733     size < 1000        ifTrue: [^ size printString].
   731 
   740 
   732 !DirectoryView::FileRow methodsFor:'private'!
   741 !DirectoryView::FileRow methodsFor:'private'!
   733 
   742 
   734 validateAttributes
   743 validateAttributes
   735 
   744 
   736     |info mode|    
   745     |info mode| 
       
   746 
   737     permissions := String new:9 withAll:$-.
   747     permissions := String new:9 withAll:$-.
   738 
   748 
   739     (info := fileName info) isNil
   749     (info := fileName info) isNil
   740     ifTrue:
   750     ifTrue:
   741     [
   751     [