home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 October / PCO1097.ISO / FilesBBS / WIN95 / IAVAZIP.EXE / DATA.Z / HtmlViewer.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-08-18  |  3.3 KB  |  132 lines

  1. package com.sfs.html;
  2.  
  3. import java.awt.BorderLayout;
  4. import java.awt.Color;
  5. import java.awt.Component;
  6. import java.awt.Container;
  7. import java.awt.Dimension;
  8. import java.awt.Event;
  9. import java.awt.Label;
  10. import java.awt.Panel;
  11. import java.awt.Scrollbar;
  12. import java.io.IOException;
  13. import java.net.URL;
  14.  
  15. public class HtmlViewer extends Panel implements Runnable {
  16.    private static final int GAP = 5;
  17.    HtmlCanvas canvas;
  18.    Scrollbar scrollbar;
  19.    Label Status;
  20.    Event evt;
  21.    String start;
  22.    URL actUrl;
  23.    int oldWidth = -1;
  24.    boolean performJumps;
  25.  
  26.    public Dimension minimumSize() {
  27.       return new Dimension(400, 300);
  28.    }
  29.  
  30.    public Dimension preferredSize() {
  31.       return ((Component)this).getSize();
  32.    }
  33.  
  34.    public HtmlViewer(URL var1, boolean var2) {
  35.       this.actUrl = var1;
  36.       ((Container)this).setLayout(new BorderLayout());
  37.       this.performJumps = var2;
  38.       ((Container)this).add("Center", this.canvas = new HtmlCanvas());
  39.       ((Container)this).add("East", this.scrollbar = new Scrollbar(1));
  40.       ((Container)this).add("South", this.Status = new Label("  ready"));
  41.       this.Status.setBackground(Color.lightGray);
  42.       this.canvas.setBackground(Color.white);
  43.  
  44.       try {
  45.          this.canvas.changeDocument(new HtmlDocument(this.actUrl));
  46.       } catch (IOException var5) {
  47.          ((Throwable)var5).printStackTrace(System.out);
  48.       }
  49.  
  50.       ((Component)this).setBackground(Color.lightGray);
  51.    }
  52.  
  53.    public void run() {
  54.       if (this.evt.target == this.canvas && this.evt.id == 501) {
  55.          int var1 = this.evt.x - this.canvas.getLocation().x;
  56.          int var2 = this.evt.y - this.canvas.getLocation().y;
  57.          URL var3 = this.canvas.getHref(var1, var2);
  58.          if (var3 != null) {
  59.             this.Status.setText("  loading " + var3.toString());
  60.  
  61.             try {
  62.                this.canvas.changeDocument(new HtmlDocument(var3));
  63.             } catch (Exception var6) {
  64.                ((Throwable)var6).printStackTrace();
  65.             }
  66.  
  67.             this.Status.setText("  ready");
  68.             this.doLayout();
  69.             this.canvas.repaint();
  70.          }
  71.       }
  72.  
  73.       this.evt = null;
  74.    }
  75.  
  76.    public void doLayout() {
  77.       super.doLayout();
  78.       Dimension var1 = this.canvas.getSize();
  79.       if (var1.height == 0) {
  80.          var1.height = ((Component)this).getSize().height;
  81.       }
  82.  
  83.       this.scrollbar.setValues(this.scrollbar.getValue(), 20, 0, this.canvas.getVirtualHeight() - var1.height - 1);
  84.       if (this.oldWidth == -1 || Math.abs(this.oldWidth - var1.width) > 50) {
  85.          this.Status.setText("  formatting document ...");
  86.          this.canvas.setWidth(var1.width);
  87.          this.Status.setText("  ready");
  88.          this.oldWidth = var1.width;
  89.       }
  90.  
  91.    }
  92.  
  93.    public boolean handleEvent(Event var1) {
  94.       if (var1.target == this.scrollbar) {
  95.          switch (var1.id) {
  96.             case 601:
  97.             case 602:
  98.             case 603:
  99.             case 604:
  100.             case 605:
  101.                this.canvas.setStart(this.scrollbar.getValue());
  102.                this.start = null;
  103.                return true;
  104.          }
  105.       }
  106.  
  107.       if (!this.performJumps || (var1.target != this.canvas || var1.id != 501) && var1.id != 1001) {
  108.          if (var1.target == this.canvas && var1.id == 503) {
  109.             int var2 = var1.x - this.canvas.location().x;
  110.             int var3 = var1.y - this.canvas.location().y;
  111.             URL var4 = this.canvas.getHref(var2, var3);
  112.             if (var4 != null) {
  113.                this.Status.setText(var4.toString());
  114.             } else if (!this.Status.getText().equals("  ready")) {
  115.                this.Status.setText("  ready");
  116.             }
  117.  
  118.             return true;
  119.          } else {
  120.             return super.handleEvent(var1);
  121.          }
  122.       } else {
  123.          if (this.evt == null) {
  124.             this.evt = var1;
  125.             (new Thread(this)).start();
  126.          }
  127.  
  128.          return true;
  129.       }
  130.    }
  131. }
  132.