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 / HTMLRootView.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-02-26  |  3.9 KB  |  140 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.BoxView;
  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.Graphics;
  9. import java.awt.Image;
  10. import java.awt.Rectangle;
  11. import java.awt.Shape;
  12. import java.awt.Toolkit;
  13. import java.awt.image.ImageObserver;
  14. import java.net.MalformedURLException;
  15. import java.net.URL;
  16.  
  17. class HTMLRootView extends BoxView {
  18.    transient Image bgimage;
  19.    transient Color bgcolor;
  20.    transient String colorStr;
  21.    transient String imageStr;
  22.    HTMLRootImageObserver imageObserver;
  23.    boolean bImageLoaded = false;
  24.    boolean bImageLoadFailed = false;
  25.    int imgWidth = -1;
  26.    int imgHeight = -1;
  27.    int drawWidth = -1;
  28.    int drawHeight = -1;
  29.  
  30.    public HTMLRootView(Element var1, int var2) {
  31.       super(var1, var2);
  32.    }
  33.  
  34.    public void loadBackground(AttributeSet var1) {
  35.       this.imageStr = (String)var1.getAttribute("background");
  36.       this.colorStr = (String)var1.getAttribute("bgcolor");
  37.       this.bImageLoaded = false;
  38.       this.bImageLoadFailed = false;
  39.       this.imgWidth = this.imgHeight = this.drawWidth = this.drawHeight = -1;
  40.       this.bgimage = null;
  41.       if (this.colorStr == null) {
  42.          this.bgcolor = Color.lightGray;
  43.       } else {
  44.          try {
  45.             this.bgcolor = HTMLUtils.stringToColor(this.colorStr);
  46.          } catch (HTMLException var2) {
  47.             this.bgcolor = Color.lightGray;
  48.          }
  49.       }
  50.  
  51.       if (this.imageStr != null) {
  52.          this.imageObserver = new HTMLRootImageObserver(this);
  53.          this.bgimage = this.loadImage(this.imageStr);
  54.          this.bImageLoaded = false;
  55.       }
  56.  
  57.    }
  58.  
  59.    private Image loadImage(String var1) {
  60.       if (var1 == null) {
  61.          return null;
  62.       } else {
  63.          URL var2 = null;
  64.          URL var3 = (URL)((View)this).getElement().getDocument().getProperty("stream");
  65.          if (var3 != null) {
  66.             try {
  67.                var2 = new URL(var3, var1);
  68.             } catch (MalformedURLException var4) {
  69.                System.out.println("Malformed URL:" + var3);
  70.             }
  71.          }
  72.  
  73.          return var2 != null ? Toolkit.getDefaultToolkit().getImage(var2) : Toolkit.getDefaultToolkit().getImage(var1);
  74.       }
  75.    }
  76.  
  77.    public void paint(Graphics var1, Shape var2) {
  78.       super.paint(var1, var2);
  79.    }
  80.  
  81.    public void paintBackground(Graphics var1, Shape var2) {
  82.       Element var3 = ((View)this).getElement();
  83.       AttributeSet var4 = var3.getAttributes();
  84.       String var5 = (String)var4.getAttribute("bgcolor");
  85.       String var6 = (String)var4.getAttribute("background");
  86.       if (var5 != null) {
  87.          if (!var5.equals(this.colorStr)) {
  88.             this.loadBackground(var4);
  89.          }
  90.       } else if (this.colorStr != null) {
  91.          this.loadBackground(var4);
  92.       }
  93.  
  94.       if (var6 != null) {
  95.          if (!var6.equals(this.imageStr)) {
  96.             this.loadBackground(var4);
  97.          }
  98.       } else if (this.imageStr != null) {
  99.          this.loadBackground(var4);
  100.       }
  101.  
  102.       Rectangle var7 = var2.getBounds();
  103.       ((BoxView)this).setSize((float)var7.width, (float)var7.height);
  104.       if (this.bgimage != null) {
  105.          if (!this.bImageLoaded) {
  106.             this.paintBGColor(var1, var2);
  107.             if (!this.bImageLoadFailed) {
  108.                var1.drawImage(this.bgimage, 0, 0, this.imageObserver);
  109.             }
  110.          } else {
  111.             for(int var8 = 0; var8 < var7.width; var8 += this.imgWidth) {
  112.                for(int var9 = 0; var9 < var7.height; var9 += this.imgHeight) {
  113.                   var1.drawImage(this.bgimage, var8, var9, (ImageObserver)null);
  114.                }
  115.             }
  116.          }
  117.  
  118.          if (!this.bImageLoadFailed) {
  119.             if (this.imgWidth <= 0) {
  120.                this.imgWidth = this.bgimage.getWidth(this.imageObserver);
  121.             }
  122.  
  123.             if (this.imgHeight <= 0) {
  124.                this.imgHeight = this.bgimage.getHeight(this.imageObserver);
  125.                return;
  126.             }
  127.          }
  128.       } else {
  129.          this.paintBGColor(var1, var2);
  130.       }
  131.  
  132.    }
  133.  
  134.    private void paintBGColor(Graphics var1, Shape var2) {
  135.       Rectangle var3 = var2.getBounds();
  136.       var1.setColor(this.bgcolor);
  137.       var1.fillRect(0, 0, var3.width, var3.height);
  138.    }
  139. }
  140.