home *** CD-ROM | disk | FTP | other *** search
- package com.sfs.html;
-
- import java.awt.Color;
- import java.io.IOException;
- import java.net.URL;
- import java.util.Hashtable;
-
- public class HtmlDocument {
- private IntVector codes = new IntVector();
- private StringVector strings = new StringVector();
- private ImageVector images = new ImageVector();
- private String title;
- private String location;
- private String start;
- private Color bgColor;
- private Color textColor;
- private Color linkColor;
- private URL base;
- private String endOfText;
- private static final int TEXT = 0;
- // $FF: renamed from: A int
- private static final int field_0 = 1;
- private static final int ADDRESS = 2;
- // $FF: renamed from: B int
- private static final int field_1 = 3;
- private static final int BASE = 4;
- private static final int BIG = 5;
- private static final int BLOCKQUOTE = 6;
- private static final int BODY = 7;
- // $FF: renamed from: BR int
- private static final int field_2 = 8;
- private static final int CENTER = 9;
- private static final int CITE = 10;
- private static final int CODE = 11;
- // $FF: renamed from: DD int
- private static final int field_3 = 12;
- private static final int DIR = 13;
- // $FF: renamed from: DL int
- private static final int field_4 = 14;
- // $FF: renamed from: DT int
- private static final int field_5 = 15;
- // $FF: renamed from: EM int
- private static final int field_6 = 16;
- private static final int FONT = 17;
- // $FF: renamed from: H1 int
- private static final int field_7 = 18;
- // $FF: renamed from: H2 int
- private static final int field_8 = 19;
- // $FF: renamed from: H3 int
- private static final int field_9 = 20;
- // $FF: renamed from: H4 int
- private static final int field_10 = 21;
- // $FF: renamed from: H5 int
- private static final int field_11 = 22;
- // $FF: renamed from: H6 int
- private static final int field_12 = 23;
- // $FF: renamed from: HR int
- private static final int field_13 = 24;
- // $FF: renamed from: I int
- private static final int field_14 = 25;
- private static final int IMG = 26;
- private static final int KBD = 27;
- // $FF: renamed from: LI int
- private static final int field_15 = 28;
- private static final int LISTING = 29;
- private static final int MENU = 30;
- // $FF: renamed from: OL int
- private static final int field_16 = 31;
- // $FF: renamed from: P int
- private static final int field_17 = 32;
- private static final int PRE = 33;
- private static final int SAMP = 34;
- private static final int SMALL = 35;
- private static final int STRONG = 36;
- private static final int TITLE = 37;
- // $FF: renamed from: TT int
- private static final int field_18 = 38;
- // $FF: renamed from: UL int
- private static final int field_19 = 39;
- private static final int VAR = 40;
- private static final int XMP = 41;
- private static final int MAXCODES = 42;
- protected static final String[] names = new String[]{null, "A", "ADDRESS", "B", "BASE", "BIG", "BLOCKQUOTE", "BODY", "BR", "CENTER", "CITE", "CODE", "DD", "DIR", "DL", "DT", "EM", "FONT", "H1", "H2", "H3", "H4", "H5", "H6", "HR", "I", "IMG", "KBD", "LI", "LISTING", "MENU", "OL", "P", "PRE", "SAMP", "SMALL", "STRONG", "TITLE", "TT", "UL", "VAR", "XMP"};
-
- private void pushHeader(int var1, HtmlPager var2) {
- var2.pushStandardFont();
- var2.pushBold();
- var2.pushFontSize(var1);
- }
-
- private void popHeader(HtmlPager var1) {
- var1.popFont();
- var1.popFont();
- var1.popFont();
- }
-
- private void parse(HtmlTokenizer var1) {
- while(!var1.eof()) {
- if (!this.parseTextItem(var1) && !this.parseOpenItem(var1) && !this.parseCloseItem(var1)) {
- var1.getTagOrText();
- }
- }
-
- }
-
- private void drawClose(int var1, HtmlPager var2) {
- switch (var1) {
- case 0:
- return;
- case 1:
- var2.popAnchor();
- return;
- case 2:
- var2.popFont();
- return;
- case 3:
- var2.popFont();
- return;
- case 4:
- return;
- case 5:
- var2.popFont();
- return;
- case 6:
- var2.popRightMargin();
- var2.popLeftMargin(true);
- return;
- case 7:
- return;
- case 8:
- return;
- case 9:
- var2.popCenter();
- return;
- case 10:
- return;
- case 11:
- var2.popFont();
- return;
- case 12:
- return;
- case 13:
- var2.popList();
- var2.popLeftMargin(true);
- return;
- case 14:
- var2.popLeftMargin(true);
- return;
- case 15:
- return;
- case 16:
- var2.popFont();
- return;
- case 17:
- var2.popFontColor();
- var2.popFont();
- return;
- case 18:
- this.popHeader(var2);
- var2.drawNewLine(true);
- return;
- case 19:
- this.popHeader(var2);
- var2.drawNewLine(true);
- return;
- case 20:
- this.popHeader(var2);
- var2.drawNewLine(true);
- return;
- case 21:
- this.popHeader(var2);
- var2.drawNewLine(true);
- return;
- case 22:
- this.popHeader(var2);
- var2.drawNewLine(true);
- return;
- case 23:
- this.popHeader(var2);
- var2.drawNewLine(true);
- return;
- case 24:
- return;
- case 25:
- var2.popFont();
- return;
- case 26:
- return;
- case 27:
- var2.popFont();
- return;
- case 28:
- return;
- case 29:
- var2.popPreformatted();
- return;
- case 30:
- var2.popList();
- var2.popLeftMargin(true);
- return;
- case 31:
- var2.popList();
- var2.popLeftMargin(true);
- return;
- case 32:
- return;
- case 33:
- var2.popPreformatted();
- return;
- case 34:
- var2.popFont();
- return;
- case 35:
- var2.popFont();
- return;
- case 36:
- var2.popFont();
- return;
- case 37:
- return;
- case 38:
- var2.popFont();
- return;
- case 39:
- var2.popList();
- var2.popLeftMargin(true);
- return;
- case 40:
- var2.popFont();
- var2.popFont();
- return;
- case 41:
- var2.popPreformatted();
- return;
- default:
- }
- }
-
- private void drawOpen(int var1, HtmlPager var2) {
- switch (var1) {
- case 0:
- String var7 = this.strings.nextElement();
- var2.drawText(var7);
- return;
- case 1:
- String var4 = this.strings.nextElement();
- String var5 = this.strings.nextElement();
- var2.pushAnchor(var4, var5);
- return;
- case 2:
- var2.pushItalic();
- return;
- case 3:
- var2.pushBold();
- return;
- case 4:
- return;
- case 5:
- var2.pushFontSize(var2.getFontSize() - 1);
- return;
- case 6:
- var2.pushRightMargin();
- var2.pushLeftMargin(true);
- return;
- case 7:
- return;
- case 8:
- var2.drawNewLine(false);
- return;
- case 9:
- var2.pushCenter();
- return;
- case 10:
- return;
- case 11:
- var2.pushFixedFont();
- return;
- case 12:
- var2.drawNewLine(false);
- return;
- case 13:
- var2.pushLeftMargin(true);
- var2.pushListButton();
- return;
- case 14:
- var2.pushLeftMargin(true);
- return;
- case 15:
- var2.popLeftMargin(true);
- var2.pushLeftMargin(false);
- return;
- case 16:
- var2.pushItalic();
- return;
- case 17:
- int var3 = getFontSize(this.strings.nextElement(), var2);
- Color var9 = getColor(this.strings.nextElement(), var2.getFontColor());
- var2.pushFontColor(var9);
- var2.pushFontSize(var3);
- return;
- case 18:
- var2.drawNewLine(true);
- this.pushHeader(1, var2);
- return;
- case 19:
- var2.drawNewLine(true);
- this.pushHeader(2, var2);
- return;
- case 20:
- var2.drawNewLine(true);
- this.pushHeader(3, var2);
- return;
- case 21:
- var2.drawNewLine(true);
- this.pushHeader(4, var2);
- return;
- case 22:
- var2.drawNewLine(true);
- this.pushHeader(5, var2);
- return;
- case 23:
- var2.drawNewLine(true);
- this.pushHeader(6, var2);
- return;
- case 24:
- var2.drawRule();
- return;
- case 25:
- var2.pushItalic();
- return;
- case 26:
- String var6 = this.strings.nextElement();
- HtmlImage var8 = this.images.nextElement();
- var2.drawImage(var8, var6);
- return;
- case 27:
- var2.pushFixedFont();
- return;
- case 28:
- var2.drawNewLine(false);
- var2.drawListItem();
- return;
- case 29:
- var2.pushPreformatted();
- return;
- case 30:
- var2.pushLeftMargin(true);
- var2.pushListButton();
- return;
- case 31:
- var2.pushLeftMargin(true);
- var2.pushListNumber();
- return;
- case 32:
- var2.drawNewLine(true);
- return;
- case 33:
- var2.pushPreformatted();
- return;
- case 34:
- var2.pushFixedFont();
- return;
- case 35:
- var2.pushFontSize(var2.getFontSize() + 1);
- return;
- case 36:
- var2.pushBold();
- return;
- case 37:
- return;
- case 38:
- var2.pushFixedFont();
- return;
- case 39:
- var2.pushLeftMargin(true);
- var2.pushListButton();
- return;
- case 40:
- var2.pushFixedFont();
- var2.pushBold();
- return;
- case 41:
- var2.pushPreformatted();
- return;
- default:
- }
- }
-
- private static String get(Hashtable var0, String var1) {
- return (String)var0.get(var1);
- }
-
- private boolean parseTextItem(HtmlTokenizer var1) {
- String var2;
- if (this.endOfText == null) {
- var2 = var1.getText();
- } else {
- var2 = var1.getPreformattedText(this.endOfText);
- }
-
- if (var2 != null) {
- this.codes.addElement(0);
- this.strings.addElement(var2);
- return true;
- } else {
- return false;
- }
- }
-
- protected synchronized void draw(HtmlPager var1) {
- var1.setBase(this.base);
- var1.setColors(this.bgColor, this.textColor, this.linkColor);
- this.codes.reset();
- this.strings.reset();
- this.images.reset();
-
- while(this.codes.hasMoreElements()) {
- int var2 = this.codes.nextElement();
- if (var2 >= 0) {
- this.drawOpen(var2, var1);
- } else {
- this.drawClose(-var2, var1);
- }
- }
-
- var1.finish();
- }
-
- private static int getInt(String var0) {
- try {
- return Integer.parseInt(var0, 10);
- } catch (Exception var1) {
- return -1;
- }
- }
-
- public String getStart() {
- return this.start;
- }
-
- private static Color getColor(String var0, Color var1) {
- if (var0 == null) {
- return var1;
- } else {
- if (var0.charAt(0) == '#') {
- var0 = var0.substring(1);
- }
-
- try {
- int var2 = Integer.parseInt(var0.substring(0, 2), 16);
- int var3 = Integer.parseInt(var0.substring(2, 4), 16);
- int var4 = Integer.parseInt(var0.substring(4, 6), 16);
- return var2 >= 0 && var3 >= 0 && var4 >= 0 ? new Color(var2, var3, var4) : var1;
- } catch (Exception var5) {
- return var1;
- }
- }
- }
-
- public String getURLString() {
- return this.start == null ? this.location : this.location + "#" + this.start;
- }
-
- private void fillLocationAndStart(URL var1) {
- String var2 = var1.getProtocol();
- String var3 = var1.getHost();
- int var4 = var1.getPort();
-
- String var5;
- for(var5 = var1.getFile(); var5.startsWith("/"); var5 = var5.substring(1)) {
- }
-
- if (var4 < 0) {
- this.location = var2 + "://" + var3 + "/" + var5;
- } else {
- this.location = var2 + "://" + var3 + ":" + var4 + "/" + var5;
- }
-
- this.start = var1.getRef();
- }
-
- private static int getFontSize(String var0, HtmlPager var1) {
- if (var0 == null) {
- return var1.getFontSize();
- } else {
- try {
- if (var0.charAt(0) == '+') {
- return var1.getFontSize() - Integer.parseInt(var0.substring(1), 10);
- } else {
- return var0.charAt(0) == '-' ? var1.getFontSize() + Integer.parseInt(var0.substring(1), 10) : 7 - Integer.parseInt(var0, 10);
- }
- } catch (Exception var2) {
- return var1.getFontSize();
- }
- }
- }
-
- private boolean parseCloseItem(HtmlTokenizer var1) {
- int var2 = 1;
-
- while(!var1.getCloseTag(names[var2])) {
- ++var2;
- if (var2 >= 42) {
- return false;
- }
- }
-
- this.codes.addElement(-var2);
- if (var2 == 33 || var2 == 29 || var2 == 41) {
- this.endOfText = null;
- }
-
- return true;
- }
-
- public String getTitle() {
- return this.title;
- }
-
- public HtmlDocument(URL var1) throws IOException {
- this.base = var1;
- this.fillLocationAndStart(var1);
- this.parse(new HtmlTokenizer(var1.openStream()));
- this.codes.trimToSize();
- this.strings.trimToSize();
- this.images.trimToSize();
- }
-
- private boolean parseOpenItem(HtmlTokenizer var1) {
- int var2 = 1;
-
- do {
- Hashtable var3 = var1.getOpenTag(names[var2]);
- if (var3 != null) {
- this.codes.addElement(var2);
- switch (var2) {
- case 1:
- this.strings.addElement(get(var3, "HREF"));
- this.strings.addElement(get(var3, "NAME"));
- break;
- case 4:
- String var4 = get(var3, "HREF");
- this.strings.addElement(var4);
-
- try {
- this.base = new URL(var4);
- } catch (Exception var7) {
- }
- break;
- case 7:
- this.bgColor = getColor(get(var3, "BGCOLOR"), this.bgColor);
- this.textColor = getColor(get(var3, "TEXT"), this.textColor);
- this.linkColor = getColor(get(var3, "LINK"), this.linkColor);
- break;
- case 17:
- this.strings.addElement(get(var3, "SIZE"));
- this.strings.addElement(get(var3, "COLOR"));
- break;
- case 26:
- int var5 = getInt(get(var3, "WIDTH"));
- int var6 = getInt(get(var3, "HEIGHT"));
- this.images.addElement(this.base, get(var3, "SRC"), var5, var6);
- this.strings.addElement(get(var3, "ALIGN"));
- break;
- case 29:
- case 41:
- this.endOfText = "/" + names[var2];
- break;
- case 33:
- this.endOfText = "";
- break;
- case 37:
- this.title = var1.getText();
-
- while(!var1.getCloseTag(names[var2])) {
- var1.getTagOrText();
- }
- }
-
- return true;
- }
-
- ++var2;
- } while(var2 < 42);
-
- return false;
- }
-
- public String getLocation() {
- return this.location;
- }
- }
-