MIMETypeIconLibrary.st
author Claus Gittinger <cg@exept.de>
Thu, 04 Dec 2003 16:53:59 +0100
changeset 1877 c0fd68badf2d
parent 1876 efbef37f8dce
child 1956 7bfc5c973c1b
permissions -rw-r--r--
threadsafe
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1863
15710a9d0dde *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1862
diff changeset
     1
"{ Package: 'stx:libview2' }"
1859
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
     2
1865
Claus Gittinger <cg@exept.de>
parents: 1863
diff changeset
     3
Object subclass:#MIMETypeIconLibrary
1859
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
     4
	instanceVariableNames:''
1860
1b1ac79d73e9 icon separate from the FileBrowser
penk
parents: 1859
diff changeset
     5
	classVariableNames:'Icons MatchedIcons'
1859
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
     6
	poolDictionaries:''
1875
8d2f35d8c1f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1872
diff changeset
     7
	category:'Interface-Smalltalk'
1859
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
     8
!
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
     9
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    10
1865
Claus Gittinger <cg@exept.de>
parents: 1863
diff changeset
    11
!MIMETypeIconLibrary class methodsFor:'initialization'!
1859
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    12
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    13
initialize
1875
8d2f35d8c1f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1872
diff changeset
    14
    "/ now done lazily, when trhe first icon is asked for
8d2f35d8c1f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1872
diff changeset
    15
    "/ self initializeIcons
1859
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    16
!
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    17
1869
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
    18
initializeIcons
1876
efbef37f8dce threadsafe
Claus Gittinger <cg@exept.de>
parents: 1875
diff changeset
    19
    |icons matchedIcons defaults resources addMapping fileNameToImageMap|
1869
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
    20
1876
efbef37f8dce threadsafe
Claus Gittinger <cg@exept.de>
parents: 1875
diff changeset
    21
    icons := Dictionary new.
efbef37f8dce threadsafe
Claus Gittinger <cg@exept.de>
parents: 1875
diff changeset
    22
    matchedIcons := OrderedCollection new.
1869
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
    23
    fileNameToImageMap := Dictionary new.
1859
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    24
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    25
    resources := ResourcePack for:self.
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    26
1869
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
    27
    defaults := Dictionary new.
1859
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    28
    #(
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    29
        "/ internal-type to icon mappings.
1869
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
    30
        #directory             'tiny_yellow_dir.xpm'            
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
    31
        #directoryOpen         'tiny_yellow_dir_open.xpm'       
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
    32
        #directoryLocked       'tiny_yellow_dir_locked.xpm'     
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
    33
        #directoryLink         'tiny_yellow_dir_link.xpm'       
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
    34
        #directoryNetwork      'tiny_yellow_dir_network.xpm'    
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
    35
        #file                  'tiny_file_plain.xpm'            
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
    36
        #fileLink              'tiny_file_link.xpm'             
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
    37
        #fileLocked            'tiny_file_lock.xpm'             
1859
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    38
1869
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
    39
        #executableFile        'tiny_file_exec.xpm'             
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
    40
        #deviceFile            'tiny_file_device.xpm'           
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
    41
        #binaryFile            'tiny_file_binary.xpm'           
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
    42
        #specialFile           'tiny_file_special.xpm'          
1859
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    43
1869
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
    44
        #addOnLocked           'tiny_addOn_lock.xpm'            
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
    45
        #addOnLinked           'tiny_addOn_link.xpm'            
1859
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    46
1869
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
    47
        #directoryGray         'tiny_yellow_dir_gray.xpm'       
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
    48
        #directoryOpenGray     'tiny_yellow_dir_open_gray.xpm'  
1859
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    49
1875
8d2f35d8c1f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1872
diff changeset
    50
        "/ these are soon obsolete
8d2f35d8c1f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1872
diff changeset
    51
        #imageFile             'tiny_file_pix.xpm'              
8d2f35d8c1f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1872
diff changeset
    52
        #textFile              'tiny_file_text.xpm'             
8d2f35d8c1f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1872
diff changeset
    53
1859
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    54
        "/ mime-type to icon mappings.
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    55
        'image/*'                                       'tiny_file_pix.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    56
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    57
        "/ misc text ...
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    58
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    59
        'text/html'                                     'tiny_file_html.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    60
"/        'text/plain'                                    'tiny_file_text.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    61
        'text/*'                                        'tiny_file_text.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    62
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    63
        'application/postscript'                        'tiny_file_postscript.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    64
        'application/pdf'                               'tiny_file_pdf.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    65
        'application/rtf'                               'tiny_file_rtf.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    66
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    67
        "/ video formats ...
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    68
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    69
"/        'video/x-sgi-movie'                             'tiny_file_movie.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    70
"/        'video/x-msvideo'                               'tiny_file_movie.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    71
"/        'video/quicktime'                               'tiny_file_movie.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    72
"/        'video/x-mpeg2'                                 'tiny_file_movie.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    73
"/        'video/mpeg'                                    'tiny_file_movie.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    74
        'video/*'                                       'tiny_file_movie2.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    75
        'application/vnd.rn-realmedia'                  'tiny_file_movie2.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    76
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    77
        "/ audio formats ...
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    78
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    79
"/        'audio/x-pn-realaudio'                          'tiny_file_sound.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    80
"/        'audio/x-mpeg'                                  'tiny_file_sound.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    81
"/        'audio/x-mp3'                                   'tiny_file_sound.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    82
"/        'audio/x-wav'                                   'tiny_file_sound.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    83
"/        'audio/x-aiff'                                  'tiny_file_sound.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    84
"/        'audio/basic'                                   'tiny_file_sound.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    85
"/        'audio/x-shockwave-flash'                       'tiny_file_sound.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    86
        'audio/*'                                       'tiny_file_sound.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    87
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    88
        "/ misc stuff
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    89
        'application/winword'                           'tiny_file_text.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    90
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    91
        "/ binary formats
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    92
        'application/binary'                            'tiny_file_binary.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    93
        'application/library'                           'tiny_file_binary.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    94
        'application/shared-library'                    'tiny_file_binary.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    95
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    96
        "/ progr. languages
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    97
        'application/x-smalltalk-source'                'tiny_file_st.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    98
        'application/x-smalltalk-source-sif'            'tiny_file_text.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
    99
        'application/x-c-source'                        'tiny_file_text.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   100
        'application/x-c-header'                        'tiny_file_text.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   101
        'application/x-cpp-source'                      'tiny_file_text.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   102
        'application/x-javascript'                      'tiny_file_text.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   103
        'application/x-java-source'                     'tiny_file_java.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   104
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   105
        'application/x-sh'                              'tiny_file_text.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   106
        'application/x-csh'                             'tiny_file_text.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   107
        'application/x-tcl'                             'tiny_file_text.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   108
        'application/x-perl'                            'tiny_file_text.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   109
        'application/x-make'                            'tiny_file_text.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   110
        'application/x-batch-script'                    'tiny_file_text.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   111
        'application/x-asn1-source'                     'tiny_file_text.xpm'
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   112
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   113
        "/ compressors / archivers
1869
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   114
        'application/x-tar'                             'tiny_file_archive.xpm'
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   115
        'application/x-gtar'                            'tiny_file_archive.xpm'
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   116
        'application/x-tar-compressed'                  'tiny_file_compressed_archive.xpm'
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   117
        'application/x-zip-compressed'                  'tiny_file_compressed_archive.xpm'
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   118
        'application/x-gzip-compressed'                 'tiny_file_compressed_archive.xpm'
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   119
        'application/x-cpio'                            'tiny_file_archive.xpm'
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   120
        'application/x-shar'                            'tiny_file_archive.xpm'
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   121
        'application/java-archive'                      'tiny_file_archive.xpm'
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   122
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   123
        '*'                                             'tiny_file_plain.xpm'
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   124
     ) pairWiseDo:[:fileTypeOrMimeTypePattern :baseName |
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   125
        defaults at:fileTypeOrMimeTypePattern put:baseName.
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   126
    ].
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   127
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   128
    addMapping := [:key :baseNameOrName |
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   129
        |fileName image|
1859
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   130
1869
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   131
        baseNameOrName notNil ifTrue:[
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   132
            image := fileNameToImageMap at:baseNameOrName ifAbsent:nil.
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   133
            image isNil ifTrue:[
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   134
                image := Smalltalk imageFromFileNamed:baseNameOrName forClass:self.
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   135
                image isNil ifTrue:[
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   136
                    fileName := 'bitmaps/xpmBitmaps/document_images/' , baseNameOrName.
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   137
                    image := Smalltalk imageFromFileNamed:fileName forClass:self.
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   138
                ].
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   139
            ].
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   140
            fileNameToImageMap at:baseNameOrName put:image.
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   141
            key includesMatchCharacters ifTrue:[
1877
c0fd68badf2d threadsafe
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   142
                matchedIcons add:(key -> image).
1869
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   143
            ] ifFalse:[    
1877
c0fd68badf2d threadsafe
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   144
                icons at:key put:image.
1869
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   145
            ]
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   146
        ]
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   147
    ].
1859
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   148
1869
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   149
    "all mappings from the resource file"
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   150
    resources keysAndValuesDo:addMapping.
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   151
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   152
    "missing mappings from above defaults"
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   153
    defaults keysAndValuesDo:[:key :baseName |
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   154
        (resources includesKey:key) ifFalse:[
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   155
            addMapping value:key value:baseName
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   156
        ].
c6800c75b7d0 resource file handling cleaned up
Claus Gittinger <cg@exept.de>
parents: 1865
diff changeset
   157
    ].
1859
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   158
1876
efbef37f8dce threadsafe
Claus Gittinger <cg@exept.de>
parents: 1875
diff changeset
   159
    Icons := icons.
efbef37f8dce threadsafe
Claus Gittinger <cg@exept.de>
parents: 1875
diff changeset
   160
    MatchedIcons := matchedIcons.
efbef37f8dce threadsafe
Claus Gittinger <cg@exept.de>
parents: 1875
diff changeset
   161
1859
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   162
    "
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   163
     self initializeIcons
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   164
    "
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   165
! !
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   166
1865
Claus Gittinger <cg@exept.de>
parents: 1863
diff changeset
   167
!MIMETypeIconLibrary class methodsFor:'accessing'!
1859
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   168
1862
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   169
fileTypeIconKeyFor:aFilename
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   170
    aFilename isSymbolicLink ifTrue:[
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   171
        ^ #symbolicLink.
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   172
    ].
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   173
    aFilename isDirectory ifTrue:[
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   174
        ^ #directory.
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   175
    ].
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   176
    aFilename isSpecialFile ifTrue:[
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   177
        ^ #specialFile.
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   178
    ].
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   179
    aFilename isExecutableProgram ifTrue:[
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   180
        ^ #executableFile
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   181
    ].
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   182
    ^ #file.
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   183
!
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   184
1860
1b1ac79d73e9 icon separate from the FileBrowser
penk
parents: 1859
diff changeset
   185
iconForKey:mimeTypeOrKey
1859
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   186
1875
8d2f35d8c1f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1872
diff changeset
   187
    ^ self icons at:mimeTypeOrKey ifAbsent:nil.
1860
1b1ac79d73e9 icon separate from the FileBrowser
penk
parents: 1859
diff changeset
   188
!
1859
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   189
1860
1b1ac79d73e9 icon separate from the FileBrowser
penk
parents: 1859
diff changeset
   190
iconForKeyMatching:mimeTypeOrKey
1b1ac79d73e9 icon separate from the FileBrowser
penk
parents: 1859
diff changeset
   191
1861
72fa6acc0d62 mime type icons separated from the FileBrowser
penk
parents: 1860
diff changeset
   192
    |icn assoc|
72fa6acc0d62 mime type icons separated from the FileBrowser
penk
parents: 1860
diff changeset
   193
72fa6acc0d62 mime type icons separated from the FileBrowser
penk
parents: 1860
diff changeset
   194
    icn := self iconForKey:mimeTypeOrKey.
72fa6acc0d62 mime type icons separated from the FileBrowser
penk
parents: 1860
diff changeset
   195
    icn notNil ifTrue:[^icn].
72fa6acc0d62 mime type icons separated from the FileBrowser
penk
parents: 1860
diff changeset
   196
    assoc := self  iconForMatchKey:mimeTypeOrKey.
72fa6acc0d62 mime type icons separated from the FileBrowser
penk
parents: 1860
diff changeset
   197
    assoc notNil ifTrue:[^ assoc value].
72fa6acc0d62 mime type icons separated from the FileBrowser
penk
parents: 1860
diff changeset
   198
    ^ nil.
72fa6acc0d62 mime type icons separated from the FileBrowser
penk
parents: 1860
diff changeset
   199
!
72fa6acc0d62 mime type icons separated from the FileBrowser
penk
parents: 1860
diff changeset
   200
72fa6acc0d62 mime type icons separated from the FileBrowser
penk
parents: 1860
diff changeset
   201
iconForMatchKey:matchKey
72fa6acc0d62 mime type icons separated from the FileBrowser
penk
parents: 1860
diff changeset
   202
1875
8d2f35d8c1f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1872
diff changeset
   203
    ^ self matchedIcons detect:[:assoc | assoc key match:matchKey] ifNone:nil.
1862
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   204
!
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   205
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   206
iconKeyForFile:aFilenameArg
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   207
    "given a fileName, return an appropriate icon"
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   208
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   209
    |aFilename fileType mimeType suffix|
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   210
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   211
    aFilename := aFilenameArg.
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   212
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   213
    aFilenameArg isFilename ifTrue:[
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   214
        fileType := self fileTypeIconKeyFor:aFilename.
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   215
    ] ifFalse:[
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   216
        fileType := #file
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   217
    ].
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   218
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   219
    (fileType == #directory) ifFalse:[
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   220
        suffix := aFilename suffix.
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   221
        (suffix = 'bak' or:[suffix = 'sav']) ifTrue:[
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   222
            aFilename := aFilename withoutSuffix.
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   223
        ].
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   224
        mimeType := MIMETypes mimeTypeForFilename:aFilename.
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   225
    ].
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   226
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   227
    ^ (mimeType ? fileType).
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   228
!
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   229
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   230
iconKeyForRemoteDirectory:aFilenameArg
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   231
    "given a fileName, return an appropriate icon"
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   232
9b48ee153f4b mime type icons separated from the FileBrowser
penk
parents: 1861
diff changeset
   233
    ^ #directoryNetwork
1875
8d2f35d8c1f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1872
diff changeset
   234
!
8d2f35d8c1f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1872
diff changeset
   235
8d2f35d8c1f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1872
diff changeset
   236
icons
8d2f35d8c1f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1872
diff changeset
   237
    Icons isNil ifTrue:[
8d2f35d8c1f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1872
diff changeset
   238
        self initializeIcons
8d2f35d8c1f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1872
diff changeset
   239
    ].
8d2f35d8c1f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1872
diff changeset
   240
    ^ Icons
8d2f35d8c1f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1872
diff changeset
   241
!
8d2f35d8c1f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1872
diff changeset
   242
8d2f35d8c1f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1872
diff changeset
   243
matchedIcons
8d2f35d8c1f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1872
diff changeset
   244
    MatchedIcons isNil ifTrue:[
8d2f35d8c1f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1872
diff changeset
   245
        self initializeIcons
8d2f35d8c1f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1872
diff changeset
   246
    ].
8d2f35d8c1f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1872
diff changeset
   247
    ^ MatchedIcons
1859
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   248
! !
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   249
1865
Claus Gittinger <cg@exept.de>
parents: 1863
diff changeset
   250
!MIMETypeIconLibrary class methodsFor:'documentation'!
1859
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   251
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   252
version
1877
c0fd68badf2d threadsafe
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   253
    ^ '$Header: /cvs/stx/stx/libview2/MIMETypeIconLibrary.st,v 1.11 2003-12-04 15:53:59 cg Exp $'
1859
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   254
! !
ec5e2e788ae0 initial checkin
penk
parents:
diff changeset
   255
1865
Claus Gittinger <cg@exept.de>
parents: 1863
diff changeset
   256
MIMETypeIconLibrary initialize!