home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 2004 May / DPPCPRO0504.ISO / May / Seatools / SeaTools.iso / tools / en / webhelp / webhelp.jar / hhapplet / ImageCache.class (.txt) < prev    next >
Encoding:
Java Class File  |  2002-04-17  |  2.5 KB  |  137 lines

  1. package hhapplet;
  2.  
  3. import java.applet.Applet;
  4. import java.awt.Image;
  5. import java.awt.Toolkit;
  6. import java.io.InputStream;
  7. import java.net.MalformedURLException;
  8. import java.net.URL;
  9. import java.util.Hashtable;
  10.  
  11. public class ImageCache {
  12.    private Hashtable m_Imagehash = null;
  13.    private Applet m_applet = null;
  14.    private static ImageCache m_imageCache = null;
  15.  
  16.    public static void createInstance(Applet var0) {
  17.       m_imageCache = new ImageCache(var0);
  18.    }
  19.  
  20.    public ImageCache(Applet var1) {
  21.       this.m_applet = var1;
  22.       this.m_Imagehash = new Hashtable();
  23.    }
  24.  
  25.    public String GetImagePrefixName(int var1) {
  26.       switch (var1) {
  27.          case 0:
  28.             return "topimage";
  29.          case 1:
  30.             return "topimageopen";
  31.          default:
  32.             return "";
  33.       }
  34.    }
  35.  
  36.    public synchronized Image GetImage(String var1) {
  37.       URL var2 = null;
  38.       boolean var3 = true;
  39.       if (var1 == null) {
  40.          return null;
  41.       } else {
  42.          try {
  43.             if (var1.toLowerCase().startsWith("zip:")) {
  44.                return (Image)this.m_Imagehash.get(var1.substring(4, var1.length()));
  45.             }
  46.  
  47.             var1 = var1.replace('|', ':');
  48.             var2 = new URL(var1);
  49.          } catch (MalformedURLException var7) {
  50.             var3 = false;
  51.          }
  52.  
  53.          if (!var3 && this.m_applet != null) {
  54.             try {
  55.                var2 = new URL(this.m_applet.getDocumentBase(), var1);
  56.             } catch (MalformedURLException var6) {
  57.             }
  58.          }
  59.  
  60.          if (var2 == null) {
  61.             return null;
  62.          } else {
  63.             Object var4 = this.m_Imagehash.get(var2);
  64.             if (var4 != null && var4 instanceof Image) {
  65.                return (Image)var4;
  66.             } else if (this.m_applet != null) {
  67.                try {
  68.                   var8 = this.m_applet.getImage(var2);
  69.                } catch (Exception var5) {
  70.                   return null;
  71.                }
  72.  
  73.                if (var8 != null) {
  74.                   this.m_Imagehash.put(var2, var8);
  75.                }
  76.  
  77.                return var8;
  78.             } else {
  79.                return null;
  80.             }
  81.          }
  82.       }
  83.    }
  84.  
  85.    public Image GetGif(String var1) {
  86.       return this.GetImage(var1 + ".gif");
  87.    }
  88.  
  89.    public Image GetGif(int var1) {
  90.       return this.GetGif(var1, 0);
  91.    }
  92.  
  93.    public Image GetGif(int var1, int var2) {
  94.       return this.GetGif(this.GetImagePrefixName(var2) + String.valueOf(var1));
  95.    }
  96.  
  97.    public void putImage(String var1, long var2, Object var4) {
  98.       if (var4 instanceof InputStream) {
  99.          InputStream var5 = (InputStream)var4;
  100.          if (this.m_Imagehash.get(var1) == null) {
  101.             try {
  102.                if (var2 < 65535L) {
  103.                   int var6 = (int)var2;
  104.                   byte[] var7 = new byte[var6];
  105.  
  106.                   int var8;
  107.                   int var10;
  108.                   for(var8 = var5.read(var7); var8 < var6; var8 += var10) {
  109.                      byte[] var9 = new byte[var6 - var8];
  110.                      var10 = var5.read(var9);
  111.                      if (var10 == 0) {
  112.                         break;
  113.                      }
  114.  
  115.                      for(int var11 = 0; var11 < var10 && var11 < var6 - var8; ++var11) {
  116.                         var7[var8 + var11] = var9[var11];
  117.                      }
  118.                   }
  119.  
  120.                   if (var6 == var8) {
  121.                      this.m_Imagehash.put(var1, Toolkit.getDefaultToolkit().createImage(var7));
  122.                      return;
  123.                   }
  124.                }
  125.             } catch (Exception var12) {
  126.                ((Throwable)var12).printStackTrace();
  127.             }
  128.          }
  129.       }
  130.  
  131.    }
  132.  
  133.    public static ImageCache getInstance() {
  134.       return m_imageCache;
  135.    }
  136. }
  137.