home *** CD-ROM | disk | FTP | other *** search
- package com.sfs.html;
-
- import java.awt.BorderLayout;
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.Event;
- import java.awt.Label;
- import java.awt.Panel;
- import java.awt.Scrollbar;
- import java.io.IOException;
- import java.net.URL;
-
- public class HtmlViewer extends Panel implements Runnable {
- private static final int GAP = 5;
- HtmlCanvas canvas;
- Scrollbar scrollbar;
- Label Status;
- Event evt;
- String start;
- URL actUrl;
- int oldWidth = -1;
- boolean performJumps;
-
- public Dimension minimumSize() {
- return new Dimension(400, 300);
- }
-
- public Dimension preferredSize() {
- return ((Component)this).getSize();
- }
-
- public HtmlViewer(URL var1, boolean var2) {
- this.actUrl = var1;
- ((Container)this).setLayout(new BorderLayout());
- this.performJumps = var2;
- ((Container)this).add("Center", this.canvas = new HtmlCanvas());
- ((Container)this).add("East", this.scrollbar = new Scrollbar(1));
- ((Container)this).add("South", this.Status = new Label(" ready"));
- this.Status.setBackground(Color.lightGray);
- this.canvas.setBackground(Color.white);
-
- try {
- this.canvas.changeDocument(new HtmlDocument(this.actUrl));
- } catch (IOException var5) {
- ((Throwable)var5).printStackTrace(System.out);
- }
-
- ((Component)this).setBackground(Color.lightGray);
- }
-
- public void run() {
- if (this.evt.target == this.canvas && this.evt.id == 501) {
- int var1 = this.evt.x - this.canvas.getLocation().x;
- int var2 = this.evt.y - this.canvas.getLocation().y;
- URL var3 = this.canvas.getHref(var1, var2);
- if (var3 != null) {
- this.Status.setText(" loading " + var3.toString());
-
- try {
- this.canvas.changeDocument(new HtmlDocument(var3));
- } catch (Exception var6) {
- ((Throwable)var6).printStackTrace();
- }
-
- this.Status.setText(" ready");
- this.doLayout();
- this.canvas.repaint();
- }
- }
-
- this.evt = null;
- }
-
- public void doLayout() {
- super.doLayout();
- Dimension var1 = this.canvas.getSize();
- if (var1.height == 0) {
- var1.height = ((Component)this).getSize().height;
- }
-
- this.scrollbar.setValues(this.scrollbar.getValue(), 20, 0, this.canvas.getVirtualHeight() - var1.height - 1);
- if (this.oldWidth == -1 || Math.abs(this.oldWidth - var1.width) > 50) {
- this.Status.setText(" formatting document ...");
- this.canvas.setWidth(var1.width);
- this.Status.setText(" ready");
- this.oldWidth = var1.width;
- }
-
- }
-
- public boolean handleEvent(Event var1) {
- if (var1.target == this.scrollbar) {
- switch (var1.id) {
- case 601:
- case 602:
- case 603:
- case 604:
- case 605:
- this.canvas.setStart(this.scrollbar.getValue());
- this.start = null;
- return true;
- }
- }
-
- if (!this.performJumps || (var1.target != this.canvas || var1.id != 501) && var1.id != 1001) {
- if (var1.target == this.canvas && var1.id == 503) {
- int var2 = var1.x - this.canvas.location().x;
- int var3 = var1.y - this.canvas.location().y;
- URL var4 = this.canvas.getHref(var2, var3);
- if (var4 != null) {
- this.Status.setText(var4.toString());
- } else if (!this.Status.getText().equals(" ready")) {
- this.Status.setText(" ready");
- }
-
- return true;
- } else {
- return super.handleEvent(var1);
- }
- } else {
- if (this.evt == null) {
- this.evt = var1;
- (new Thread(this)).start();
- }
-
- return true;
- }
- }
- }
-