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

  1. package com.sun.java.swing.text.html;
  2.  
  3. import com.sun.java.swing.text.AttributeSet;
  4. import com.sun.java.swing.text.DefaultStyledDocument;
  5. import com.sun.java.swing.text.Element;
  6. import com.sun.java.swing.text.View;
  7. import java.awt.Color;
  8. import java.awt.Image;
  9. import java.awt.Toolkit;
  10. import java.awt.image.ImageObserver;
  11. import java.net.MalformedURLException;
  12. import java.net.URL;
  13. import java.util.Dictionary;
  14.  
  15. class ImageView$ImageInfo implements HTMLDefs {
  16.    Element fElement;
  17.    Image fImage;
  18.    int fHeight;
  19.    int fWidth;
  20.    static final String kAttributeName = "$IMGObject";
  21.    static final String IMAGE_CACHE_PROPERTY = "imageCache";
  22.    private static final int DEFAULT_WIDTH = 32;
  23.    private static final int DEFAULT_HEIGHT = 32;
  24.    private static final int DEFAULT_BORDER = 2;
  25.  
  26.    void initialize(ImageView var1, Element var2) {
  27.       if (this.fElement == null) {
  28.          this.fElement = var2;
  29.          var2.getAttributes();
  30.          URL var3 = this.getSourceURL();
  31.          if (var3 != null) {
  32.             Dictionary var4 = (Dictionary)((View)var1).getDocument().getProperty("imageCache");
  33.             if (var4 != null) {
  34.                this.fImage = (Image)var4.get(var3);
  35.             } else {
  36.                this.fImage = Toolkit.getDefaultToolkit().getImage(var3);
  37.             }
  38.          }
  39.  
  40.          this.fHeight = this.getIntAttr("height", -1);
  41.          boolean var6 = this.fHeight > 0;
  42.          if (!var6 && this.fImage != null) {
  43.             this.fHeight = this.fImage.getHeight(var1);
  44.          }
  45.  
  46.          if (this.fHeight <= 0) {
  47.             this.fHeight = 32;
  48.          }
  49.  
  50.          this.fWidth = this.getIntAttr("width", -1);
  51.          boolean var5 = this.fWidth > 0;
  52.          if (!var5 && this.fImage != null) {
  53.             this.fWidth = this.fImage.getWidth(var1);
  54.          }
  55.  
  56.          if (this.fWidth <= 0) {
  57.             this.fWidth = 32;
  58.          }
  59.  
  60.          if (this.fImage != null) {
  61.             if (var5 && var6) {
  62.                Toolkit.getDefaultToolkit().prepareImage(this.fImage, this.fHeight, this.fWidth, var1);
  63.             } else {
  64.                Toolkit.getDefaultToolkit().prepareImage(this.fImage, -1, -1, var1);
  65.             }
  66.          }
  67.  
  68.          if (ImageView.access$0()) {
  69.             if (this.fImage != null) {
  70.                System.out.println("ImageInfo: new on " + var3 + " (" + this.fWidth + "x" + this.fHeight + ")");
  71.             } else {
  72.                System.out.println("ImageInfo: couldn't get image at " + var3);
  73.             }
  74.  
  75.             if (this.isLink()) {
  76.                System.out.println("           It's a link! Border = " + this.getBorder());
  77.             }
  78.          }
  79.  
  80.       }
  81.    }
  82.  
  83.    void changedUpdate(ImageView var1, Element var2) {
  84.       this.fElement = null;
  85.       this.initialize(var1, var2);
  86.    }
  87.  
  88.    boolean isLink() {
  89.       return this.fElement.getAttributes().isDefined("href");
  90.    }
  91.  
  92.    int getBorder() {
  93.       return this.getIntAttr("border", this.isLink() ? 2 : 0);
  94.    }
  95.  
  96.    int getSpace(int var1) {
  97.       return this.getIntAttr(var1 == 0 ? "hspace" : "vspace", 0);
  98.    }
  99.  
  100.    Color getBorderColor() {
  101.       HTMLDocument var1 = (HTMLDocument)this.fElement.getDocument();
  102.       AttributeSet var2 = this.fElement.getAttributes();
  103.       return ((DefaultStyledDocument)var1).getForeground(var2);
  104.    }
  105.  
  106.    float getVerticalAlignment() {
  107.       String var1 = (String)this.fElement.getAttributes().getAttribute("align");
  108.       if (var1 != null) {
  109.          var1 = var1.toLowerCase();
  110.          if (var1.equals("top") || var1.equals("texttop")) {
  111.             return 0.0F;
  112.          }
  113.  
  114.          if (var1.equals("center") || var1.equals("middle") || var1.equals("absmiddle")) {
  115.             return 0.5F;
  116.          }
  117.       }
  118.  
  119.       return 1.0F;
  120.    }
  121.  
  122.    boolean hasPixels(ImageObserver var1) {
  123.       return this.fImage != null && this.fImage.getHeight(var1) > 0 && this.fImage.getWidth(var1) > 0;
  124.    }
  125.  
  126.    private URL getSourceURL() {
  127.       String var1 = (String)this.fElement.getAttributes().getAttribute("src");
  128.       if (var1 == null) {
  129.          return null;
  130.       } else {
  131.          URL var2 = (URL)this.fElement.getDocument().getProperty("stream");
  132.  
  133.          try {
  134.             return new URL(var2, var1);
  135.          } catch (MalformedURLException var3) {
  136.             return null;
  137.          }
  138.       }
  139.    }
  140.  
  141.    private int getIntAttr(String var1, int var2) {
  142.       AttributeSet var3 = this.fElement.getAttributes();
  143.       if (var3.isDefined(var1)) {
  144.          String var5 = (String)var3.getAttribute(var1);
  145.          int var4;
  146.          if (var5 == null) {
  147.             var4 = var2;
  148.          } else {
  149.             try {
  150.                var4 = Math.max(0, Integer.parseInt(var5));
  151.             } catch (NumberFormatException var6) {
  152.                var4 = var2;
  153.             }
  154.          }
  155.  
  156.          return var4;
  157.       } else {
  158.          return var2;
  159.       }
  160.    }
  161. }
  162.