home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161a.iso / handson / files / copyjava.exe / com / sun / java / swing / ImageIcon.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-02-26  |  5.0 KB  |  201 lines

  1. package com.sun.java.swing;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Graphics;
  5. import java.awt.Image;
  6. import java.awt.MediaTracker;
  7. import java.awt.Toolkit;
  8. import java.awt.image.ColorModel;
  9. import java.awt.image.ImageObserver;
  10. import java.awt.image.MemoryImageSource;
  11. import java.awt.image.PixelGrabber;
  12. import java.io.IOException;
  13. import java.io.ObjectInputStream;
  14. import java.io.ObjectOutputStream;
  15. import java.io.Serializable;
  16. import java.net.URL;
  17.  
  18. public class ImageIcon implements Icon, Serializable {
  19.    transient Image image;
  20.    transient int loadStatus;
  21.    ImageObserver imageObserver;
  22.    String description;
  23.    protected static final Component component = new 1();
  24.    protected static final MediaTracker tracker;
  25.    int width;
  26.    int height;
  27.  
  28.    public ImageIcon(String var1, String var2) {
  29.       this.width = -1;
  30.       this.height = -1;
  31.       this.image = Toolkit.getDefaultToolkit().getImage(var1);
  32.       this.description = var2;
  33.       this.loadImage(this.image);
  34.    }
  35.  
  36.    public ImageIcon(String var1) {
  37.       this(var1, var1);
  38.    }
  39.  
  40.    public ImageIcon(URL var1, String var2) {
  41.       this.width = -1;
  42.       this.height = -1;
  43.       this.image = Toolkit.getDefaultToolkit().getImage(var1);
  44.       this.description = var2;
  45.       this.loadImage(this.image);
  46.    }
  47.  
  48.    public ImageIcon(URL var1) {
  49.       this(var1, var1.toExternalForm());
  50.    }
  51.  
  52.    public ImageIcon(Image var1, String var2) {
  53.       this(var1);
  54.       this.description = var2;
  55.    }
  56.  
  57.    public ImageIcon(Image var1) {
  58.       this.width = -1;
  59.       this.height = -1;
  60.       this.image = var1;
  61.       Object var2 = var1.getProperty("comment", this.imageObserver);
  62.       if (var2 instanceof String) {
  63.          this.description = (String)var2;
  64.       }
  65.  
  66.       this.loadImage(var1);
  67.    }
  68.  
  69.    public ImageIcon(byte[] var1, String var2) {
  70.       this.width = -1;
  71.       this.height = -1;
  72.       this.image = Toolkit.getDefaultToolkit().createImage(var1);
  73.       if (this.image != null) {
  74.          this.description = var2;
  75.          this.loadImage(this.image);
  76.       }
  77.    }
  78.  
  79.    public ImageIcon(byte[] var1) {
  80.       this.width = -1;
  81.       this.height = -1;
  82.       this.image = Toolkit.getDefaultToolkit().createImage(var1);
  83.       if (this.image != null) {
  84.          Object var2 = this.image.getProperty("comment", this.imageObserver);
  85.          if (var2 instanceof String) {
  86.             this.description = (String)var2;
  87.          }
  88.  
  89.          this.loadImage(this.image);
  90.       }
  91.    }
  92.  
  93.    public ImageIcon() {
  94.       this.width = -1;
  95.       this.height = -1;
  96.    }
  97.  
  98.    protected void loadImage(Image var1) {
  99.       MediaTracker var2 = tracker;
  100.       synchronized(var2){}
  101.  
  102.       try {
  103.          tracker.addImage(var1, 0);
  104.  
  105.          try {
  106.             tracker.waitForID(0, 5000L);
  107.          } catch (InterruptedException var5) {
  108.             System.out.println("INTERRUPTED while loading Image");
  109.          }
  110.  
  111.          this.loadStatus = tracker.statusID(0, false);
  112.          tracker.removeImage(var1, 0);
  113.          this.width = var1.getWidth(this.imageObserver);
  114.          this.height = var1.getHeight(this.imageObserver);
  115.       } catch (Throwable var6) {
  116.          throw var6;
  117.       }
  118.  
  119.    }
  120.  
  121.    public int getImageLoadStatus() {
  122.       return this.loadStatus;
  123.    }
  124.  
  125.    public Image getImage() {
  126.       return this.image;
  127.    }
  128.  
  129.    public void setImage(Image var1) {
  130.       this.image = var1;
  131.       this.loadImage(var1);
  132.    }
  133.  
  134.    public String getDescription() {
  135.       return this.description;
  136.    }
  137.  
  138.    public void setDescription(String var1) {
  139.       this.description = var1;
  140.    }
  141.  
  142.    public synchronized void paintIcon(Component var1, Graphics var2, int var3, int var4) {
  143.       if (this.imageObserver == null) {
  144.          var2.drawImage(this.image, var3, var4, var1);
  145.       } else {
  146.          var2.drawImage(this.image, var3, var4, this.imageObserver);
  147.       }
  148.    }
  149.  
  150.    public int getIconWidth() {
  151.       return this.width;
  152.    }
  153.  
  154.    public int getIconHeight() {
  155.       return this.height;
  156.    }
  157.  
  158.    public void setImageObserver(ImageObserver var1) {
  159.       this.imageObserver = var1;
  160.    }
  161.  
  162.    public ImageObserver getImageObserver() {
  163.       return this.imageObserver;
  164.    }
  165.  
  166.    private void readObject(ObjectInputStream var1) throws ClassNotFoundException, IOException {
  167.       var1.defaultReadObject();
  168.       int var2 = var1.readInt();
  169.       int var3 = var1.readInt();
  170.       int[] var4 = (int[])var1.readObject();
  171.       Toolkit var5 = Toolkit.getDefaultToolkit();
  172.       ColorModel var6 = ColorModel.getRGBdefault();
  173.       this.image = var5.createImage(new MemoryImageSource(var2, var3, var6, var4, 0, var2));
  174.    }
  175.  
  176.    private void writeObject(ObjectOutputStream var1) throws IOException {
  177.       var1.defaultWriteObject();
  178.       int var2 = this.getIconWidth();
  179.       int var3 = this.getIconHeight();
  180.       int[] var4 = new int[var2 * var3];
  181.  
  182.       try {
  183.          PixelGrabber var5 = new PixelGrabber(this.image, 0, 0, var2, var3, var4, 0, var2);
  184.          var5.grabPixels();
  185.          if ((var5.getStatus() & 128) != 0) {
  186.             throw new IOException("failed to load image contents");
  187.          }
  188.       } catch (InterruptedException var6) {
  189.          throw new IOException("image load interrupted");
  190.       }
  191.  
  192.       var1.writeInt(var2);
  193.       var1.writeInt(var3);
  194.       var1.writeObject(var4);
  195.    }
  196.  
  197.    static {
  198.       tracker = new MediaTracker(component);
  199.    }
  200. }
  201.