initial checkin
authorpenk
Mon, 01 Dec 2003 15:04:07 +0100
changeset 1859 ec5e2e788ae0
parent 1858 3770543620e2
child 1860 1b1ac79d73e9
initial checkin
MIMETypeIconLibrary.st
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MIMETypeIconLibrary.st	Mon Dec 01 15:04:07 2003 +0100
@@ -0,0 +1,209 @@
+"{ Package: 'stx:libview' }"
+
+Object subclass:#MimeTypeIconLibrary
+	instanceVariableNames:''
+	classVariableNames:'Icons MatchedIcons DefaultIcons'
+	poolDictionaries:''
+	category:'Interface-Smalltalk'
+!
+
+
+!MimeTypeIconLibrary class methodsFor:'initialization'!
+
+icons
+    DefaultIcons isNil ifTrue:[
+        self initializeIcons
+    ].
+    ^ Icons
+!
+
+initialize
+!
+
+initializeFileTypeIcons
+    |resources|
+
+    resources := ResourcePack for:self.
+
+    #(
+        "/ internal-type to icon mappings.
+        (#directory             'ICON_DIRECTORY'            'tiny_yellow_dir.xpm'            )
+        (#directoryOpen         'ICON_DIRECTORY_OPEN'       'tiny_yellow_dir_open.xpm'       )
+        (#directoryLocked       'ICON_DIRECTORY_LOCKED'     'tiny_yellow_dir_locked.xpm'     )
+        (#directoryLink         'ICON_DIRECTORY_LINK'       'tiny_yellow_dir_link.xpm'       )
+        (#directoryNetwork      'ICON_DIRECTORY_NETWORK'    'tiny_yellow_dir_network.xpm'    )
+        (#file                  'ICON_FILE'                 'tiny_file_plain.xpm'            )
+        (#fileLink              'ICON_FILE_LINK'            'tiny_file_link.xpm'             )
+        (#fileLocked            'ICON_FILE_LOCKED'          'tiny_file_lock.xpm'             )
+        (#imageFile             'ICON_IMAGE_FILE'           'tiny_file_pix.xpm'              )
+        (#textFile              'ICON_TEXT_FILE'            'tiny_file_text.xpm'             )
+        (#executableFile        'ICON_EXECUTABLEFILE'       'tiny_file_exec.xpm'             )
+        (#deviceFile            'ICON_DEVICE_FILE'          'tiny_file_device.xpm'           )
+        (#binaryFile            'ICON_BINARY_FILE'          'tiny_file_binary.xpm'           )
+        (#specialFile           'ICON_SPECIALFILE'          'tiny_file_special.xpm'          )
+
+        (#addOnLocked           'ICON_ADDON_LOCKED'         'tiny_addOn_lock.xpm'            )
+        (#addOnLinked           'ICON_ADDON_LINKED'         'tiny_addOn_link.xpm'            )
+
+        (#directoryGray         'ICON_DIRECTORY_GRAY'       'tiny_yellow_dir_gray.xpm'       )
+        (#directoryOpenGray     'ICON_DIRECTORY_OPEN_GRAY'  'tiny_yellow_dir_open_gray.xpm'  )
+     ) do:[:entry |
+        |key resource defaultName nm img|
+
+        key := entry at:1.
+        resource := entry at:2.
+        defaultName := entry at:3.
+
+        resource notNil ifTrue:[
+            nm := resources at:resource default:nil.
+        ].
+        nm isNil ifTrue:[
+            nm := 'xpmBitmaps/document_images/' , defaultName
+        ].
+        Icons at:key put:(Smalltalk imageFromFileNamed:nm forClass:self).
+    ]
+
+    "
+     self initializeFileTypeIcons
+    "
+!
+
+initializeIcons
+    Icons := Dictionary new.
+    MatchedIcons := OrderedCollection new.
+    self initializeFileTypeIcons.
+    self initializeMimeTypeIcons.
+
+    "
+     self initializeIcons
+    "
+
+    "Modified: / 1.8.1998 / 17:39:27 / cg"
+!
+
+initializeMimeTypeIcons
+    #(
+        "/ mime-type to icon mappings.
+"/        'image/jpeg'                                    'tiny_file_pix.xpm'
+"/        'image/gif'                                     'tiny_file_pix.xpm'
+"/        'image/tiff'                                    'tiny_file_pix.xpm'
+"/        'image/x-xbitmap'                               'tiny_file_pix.xpm'
+"/        'image/x-xpixmap'                               'tiny_file_pix.xpm'
+"/        'image/x-png'                                   'tiny_file_pix.xpm'
+"/        'image/x-photo-cd'                              'tiny_file_pix.xpm'
+"/        'image/x-MS-bmp'                                'tiny_file_pix.xpm'
+"/        'image/x-rgb'                                   'tiny_file_pix.xpm'
+"/        'image/x-portable-pixmap'                       'tiny_file_pix.xpm'
+"/        'image/x-portable-graymap'                      'tiny_file_pix.xpm'
+"/        'image/x-portable-bitmap'                       'tiny_file_pix.xpm'
+"/        'image/x-portable-anymap'                       'tiny_file_pix.xpm'
+"/        'image/x-xwindowdump'                           'tiny_file_pix.xpm'
+"/        'image/x-cmu-raster'                            'tiny_file_pix.xpm'
+"/        'image/x-targa'                                 'tiny_file_pix.xpm'
+        'image/*'                                       'tiny_file_pix.xpm'
+
+        "/ misc text ...
+
+        'text/html'                                     'tiny_file_html.xpm'
+"/        'text/plain'                                    'tiny_file_text.xpm'
+        'text/*'                                        'tiny_file_text.xpm'
+
+        'application/postscript'                        'tiny_file_postscript.xpm'
+        'application/pdf'                               'tiny_file_pdf.xpm'
+        'application/rtf'                               'tiny_file_rtf.xpm'
+
+        "/ video formats ...
+
+"/        'video/x-sgi-movie'                             'tiny_file_movie.xpm'
+"/        'video/x-msvideo'                               'tiny_file_movie.xpm'
+"/        'video/quicktime'                               'tiny_file_movie.xpm'
+"/        'video/x-mpeg2'                                 'tiny_file_movie.xpm'
+"/        'video/mpeg'                                    'tiny_file_movie.xpm'
+        'video/*'                                       'tiny_file_movie2.xpm'
+        'application/vnd.rn-realmedia'                  'tiny_file_movie2.xpm'
+
+        "/ audio formats ...
+
+"/        'audio/x-pn-realaudio'                          'tiny_file_sound.xpm'
+"/        'audio/x-mpeg'                                  'tiny_file_sound.xpm'
+"/        'audio/x-mp3'                                   'tiny_file_sound.xpm'
+"/        'audio/x-wav'                                   'tiny_file_sound.xpm'
+"/        'audio/x-aiff'                                  'tiny_file_sound.xpm'
+"/        'audio/basic'                                   'tiny_file_sound.xpm'
+"/        'audio/x-shockwave-flash'                       'tiny_file_sound.xpm'
+        'audio/*'                                       'tiny_file_sound.xpm'
+
+        "/ misc stuff
+        'application/winword'                           'tiny_file_text.xpm'
+
+        "/ binary formats
+        'application/binary'                            'tiny_file_binary.xpm'
+        'application/library'                           'tiny_file_binary.xpm'
+        'application/shared-library'                    'tiny_file_binary.xpm'
+
+        "/ progr. languages
+        'application/x-smalltalk-source'                'tiny_file_st.xpm'
+        'application/x-smalltalk-source-sif'            'tiny_file_text.xpm'
+        'application/x-c-source'                        'tiny_file_text.xpm'
+        'application/x-c-header'                        'tiny_file_text.xpm'
+        'application/x-cpp-source'                      'tiny_file_text.xpm'
+        'application/x-javascript'                      'tiny_file_text.xpm'
+        'application/x-java-source'                     'tiny_file_java.xpm'
+
+        'application/x-sh'                              'tiny_file_text.xpm'
+        'application/x-csh'                             'tiny_file_text.xpm'
+        'application/x-tcl'                             'tiny_file_text.xpm'
+        'application/x-perl'                            'tiny_file_text.xpm'
+        'application/x-make'                            'tiny_file_text.xpm'
+        'application/x-batch-script'                    'tiny_file_text.xpm'
+        'application/x-asn1-source'                     'tiny_file_text.xpm'
+
+        "/ compressors / archivers
+        'application/x-tar'                           'tiny_file_archive.xpm'
+        'application/x-gtar'                          'tiny_file_archive.xpm'
+        'application/x-tar-compressed'                'tiny_file_compressed_archive.xpm'
+        'application/x-zip-compressed'                'tiny_file_compressed_archive.xpm'
+        'application/x-gzip-compressed'               'tiny_file_compressed_archive.xpm'
+        'application/x-cpio'                          'tiny_file_archive.xpm'
+        'application/x-shar'                          'tiny_file_archive.xpm'
+        'application/java-archive'                    'tiny_file_archive.xpm'
+
+        '*'                                           'tiny_file_plain.xpm'
+     ) pairWiseDo:[:mimeTypePattern :fileName |
+        | nm |
+
+        nm := 'xpmBitmaps/document_images/' , fileName.
+        mimeTypePattern includesMatchCharacters ifTrue:[
+            MatchedIcons add:(mimeTypePattern-> (Smalltalk imageFromFileNamed:nm forClass:self)).
+        ] ifFalse:[    
+            Icons at:mimeTypePattern put:(Smalltalk imageFromFileNamed:nm forClass:self).
+        ]
+    ]
+
+    "
+     self initializeIcons
+    "
+! !
+
+!MimeTypeIconLibrary class methodsFor:'accessing'!
+
+matchedIcons
+    MatchedIcons isNil ifTrue:[
+        MatchedIcons := OrderedCollection new.
+    ].
+    ^ MatchedIcons
+! !
+
+!MimeTypeIconLibrary class methodsFor:'default'!
+
+defaultIcons
+    ^ DefaultIcons
+! !
+
+!MimeTypeIconLibrary class methodsFor:'documentation'!
+
+version
+    ^ '$Header: /cvs/stx/stx/libview2/MIMETypeIconLibrary.st,v 1.1 2003-12-01 14:04:07 penk Exp $'
+! !
+
+MimeTypeIconLibrary initialize!