home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 October / PCO1097.ISO / FilesBBS / FREI / TOC42.EXE / RUNTIME / TOCScript.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-08-29  |  6.5 KB  |  579 lines

  1. import java.awt.Font;
  2. import java.io.BufferedInputStream;
  3. import java.io.DataInputStream;
  4. import java.io.EOFException;
  5. import java.io.FilterInputStream;
  6. import java.io.IOException;
  7. import java.io.InputStream;
  8. import java.net.MalformedURLException;
  9. import java.net.URL;
  10. import java.util.Vector;
  11.  
  12. public final class TOCScript {
  13.    public TOCTreeItem item;
  14.    public TOCTreeItem start;
  15.    public int listlen;
  16.    public TOCMenuItem menuPrev;
  17.    public TOCMenuItem menuStart;
  18.    public TOCMenuItem[] itemPrev;
  19.    // $FF: renamed from: ├Ü int
  20.    private int field_0;
  21.    // $FF: renamed from: ok int
  22.    public int field_1;
  23.    // $FF: renamed from: ├ô java.lang.String
  24.    private String field_2;
  25.    // $FF: renamed from: ├ö java.net.URL
  26.    private URL field_3;
  27.    // $FF: renamed from: ├¢ boolean
  28.    private boolean field_4;
  29.    // $FF: renamed from: ├£ int
  30.    private int field_5;
  31.    // $FF: renamed from: ├â TOC
  32.    private TOC field_6;
  33.    // $FF: renamed from: ├¥ java.io.BufferedInputStream
  34.    private BufferedInputStream field_7;
  35.    // $FF: renamed from: ├₧ TOCZLWTable
  36.    private TOCZLWTable field_8;
  37.    // $FF: renamed from: ├ƒ int
  38.    private int field_9 = -1;
  39.    // $FF: renamed from: ├á int[]
  40.    private int[] field_10 = new int[4096];
  41.    // $FF: renamed from: ├í int
  42.    private int field_11;
  43.    // $FF: renamed from: ├ó java.util.Vector
  44.    private Vector field_12;
  45.    // $FF: renamed from: ├ú java.lang.String
  46.    private String field_13;
  47.  
  48.    // $FF: renamed from: ├Æ (java.lang.String) TOCTreeItem
  49.    private final TOCTreeItem method_0(String var1) {
  50.       var1 = var1.trim();
  51.       int var2 = var1.indexOf(" ");
  52.       String var3;
  53.       if (var2 != -1) {
  54.          var3 = var1.substring(0, var2);
  55.       } else {
  56.          var3 = var1;
  57.       }
  58.  
  59.       if (!var3.equals("Menu") && !var3.equals("MenuItem") && !var3.equals("BeginSubMenu") && !var3.equals("EndSubMenu")) {
  60.          TOCTreeItem var4 = new TOCTreeItem();
  61.          var4.id = this.field_6.iID;
  62.          var4.level = -1;
  63.          var4.target = new String();
  64.          var4.isSelected = false;
  65.          var4.isExpanded = false;
  66.          var4.isAutoExpand = false;
  67.          var4.text = new String();
  68.          var4.helpText = new String();
  69.          TOC var10000 = this.field_6;
  70.          var10000.iID += 2;
  71.          if (var3.equals("Item")) {
  72.             var4.fct = 0;
  73.          } else if (var3.equals("ItemHelp")) {
  74.             var4.fct = 1;
  75.          } else if (var3.equals("BeginSubTree")) {
  76.             var4.fct = 97;
  77.          } else if (var3.equals("EndSubTree")) {
  78.             var4.fct = 98;
  79.          } else {
  80.             var4.fct = -1;
  81.          }
  82.  
  83.          var3 = this.method_3(var1, "text");
  84.          if (var3 != null) {
  85.             var4.text = var3;
  86.          }
  87.  
  88.          var3 = this.method_3(var1, "image");
  89.          if (var3 != null) {
  90.             var4.imageName = var3;
  91.          }
  92.  
  93.          var3 = this.method_3(var1, "openimage");
  94.          if (var3 != null) {
  95.             var4.imageOpenName = var3;
  96.          }
  97.  
  98.          var3 = this.method_3(var1, "sound");
  99.          if (var3 != null) {
  100.             var4.sound = var3;
  101.          }
  102.  
  103.          var3 = this.method_3(var1, "font");
  104.          if (var3 != null) {
  105.             String var6 = var3.substring(0, var3.indexOf(","));
  106.             String var5 = var3.substring(var3.indexOf(",") + 1);
  107.  
  108.             try {
  109.                int var7 = Integer.valueOf(var5);
  110.                var4.textFont = new Font(var6, 0, var7);
  111.             } catch (NumberFormatException var10) {
  112.             }
  113.          }
  114.  
  115.          var3 = this.method_3(var1, "color");
  116.          if (var3 != null) {
  117.             var4.textColor = this.field_6.ColorFromRGB(var3.trim());
  118.          }
  119.  
  120.          var3 = this.method_3(var1, "expanded");
  121.          if (var3 != null && var3.equals("YES")) {
  122.             var4.isExpanded = true;
  123.          }
  124.  
  125.          var3 = this.method_3(var1, "expandonselect");
  126.          if (var3 != null && var3.equals("YES")) {
  127.             var4.isAutoExpand = true;
  128.          }
  129.  
  130.          var3 = this.method_3(var1, "selected");
  131.          if (var3 != null && var3.equals("YES") && !this.field_4) {
  132.             var4.isSelected = true;
  133.             this.field_4 = true;
  134.          }
  135.  
  136.          var3 = this.method_3(var1, "url");
  137.          if (var3 != null) {
  138.             if (var3.indexOf(44) != -1) {
  139.                var4.target = var3.substring(var3.indexOf(44) + 1);
  140.                var3 = var3.substring(0, var3.indexOf(44));
  141.             }
  142.  
  143.             boolean var25 = true;
  144.  
  145.             try {
  146.                var4.url = new URL(var3);
  147.             } catch (MalformedURLException var9) {
  148.                var25 = false;
  149.             }
  150.  
  151.             if (!var25) {
  152.                try {
  153.                   var4.url = new URL(this.field_3, var3);
  154.                } catch (MalformedURLException var8) {
  155.                   var4.url = null;
  156.                }
  157.             }
  158.          }
  159.  
  160.          var3 = this.method_3(var1, "infoscript");
  161.          if (var3 != null) {
  162.             var4.scrollScriptFile = var3;
  163.             var3 = this.method_3(var1, "inforeload");
  164.             if (var3 != null) {
  165.                var4.lReloadInt = Long.parseLong(var3) * 100L;
  166.             } else {
  167.                var4.lReloadInt = -1L;
  168.             }
  169.          } else {
  170.             var4.scroll = this.field_6.genericScroll;
  171.             var4.lReloadInt = this.field_6.lReload;
  172.             var4.lStart = this.field_6.lStart;
  173.          }
  174.  
  175.          var3 = this.method_3(var1, "level");
  176.          if (var3 != null) {
  177.             var4.level = Integer.parseInt(var3);
  178.          }
  179.  
  180.          return var4;
  181.       } else {
  182.          this.method_4(var1);
  183.          return null;
  184.       }
  185.    }
  186.  
  187.    // $FF: renamed from: ├Ü () int
  188.    private final int method_1() {
  189.       int var2;
  190.       if (this.field_9 == -1) {
  191.          int var1;
  192.          if ((var1 = this.field_7.read()) == -1 || (this.field_9 = this.field_7.read()) == -1) {
  193.             throw new EOFException();
  194.          }
  195.  
  196.          var2 = var1 << 4 & 4080 | this.field_9 >> 4 & 15;
  197.          this.field_9 &= 15;
  198.       } else {
  199.          int var3;
  200.          if ((var3 = this.field_7.read()) == -1) {
  201.             throw new EOFException();
  202.          }
  203.  
  204.          var2 = var3 | this.field_9 << 8 & 3840;
  205.          this.field_9 = -1;
  206.       }
  207.  
  208.       return var2;
  209.    }
  210.  
  211.    public TOCScript(URL var1, String var2, TOC var3) {
  212.       this.field_2 = var2;
  213.       this.field_3 = var1;
  214.       this.field_6 = var3;
  215.       this.itemPrev = new TOCMenuItem[10];
  216.       this.field_5 = 1000;
  217.       this.field_0 = 0;
  218.       this.field_12 = new Vector();
  219.       this.field_13 = new String();
  220.       if (this.field_6.fCompTOCScript) {
  221.          this.field_8 = new TOCZLWTable();
  222.       }
  223.  
  224.       this.field_4 = false;
  225.       this.field_1 = this.method_5();
  226.    }
  227.  
  228.    // $FF: renamed from: ├¢ () int
  229.    private final int method_2() {
  230.       try {
  231.          URL var3 = new URL(this.field_3, this.field_2);
  232.          InputStream var1 = var3.openStream();
  233.          DataInputStream var2 = new DataInputStream(var1);
  234.  
  235.          String var4;
  236.          while((var4 = var2.readLine()) != null) {
  237.             if (var4.length() > 0) {
  238.                this.field_12.addElement(var4);
  239.             }
  240.          }
  241.  
  242.          var1.close();
  243.          ((FilterInputStream)var2).close();
  244.          return 1;
  245.       } catch (IOException var5) {
  246.          return -1;
  247.       }
  248.    }
  249.  
  250.    // $FF: renamed from: ├ö (java.lang.String, java.lang.String) java.lang.String
  251.    private final String method_3(String var1, String var2) {
  252.       int var3 = -1;
  253.       int var4 = -1;
  254.       boolean var6 = false;
  255.  
  256.       while(!var6) {
  257.          var3 = var1.indexOf(var2, var3 + 1);
  258.          if (var3 == -1) {
  259.             var6 = true;
  260.          } else if (var1.charAt(var3 - 1) == ' ') {
  261.             var6 = true;
  262.          }
  263.       }
  264.  
  265.       var6 = false;
  266.  
  267.       while(!var6) {
  268.          var4 = var1.indexOf("text", var4 + 1);
  269.          if (var4 == -1) {
  270.             var6 = true;
  271.          } else if (var1.charAt(var4 - 1) == ' ') {
  272.             var6 = true;
  273.          }
  274.       }
  275.  
  276.       if (var4 != -1 && var3 > var4) {
  277.          return null;
  278.       } else if (var3 == -1) {
  279.          return null;
  280.       } else {
  281.          String var5 = var1.substring(var3);
  282.          var3 = var5.indexOf("=");
  283.          ++var3;
  284.          if (var2.equals("text")) {
  285.             var5 = var5.substring(var3);
  286.          } else {
  287.             var5 = var5.substring(var3);
  288.             if (var5.indexOf(" ") != -1) {
  289.                var5 = var5.substring(0, var5.indexOf(" "));
  290.             }
  291.          }
  292.  
  293.          var5.trim();
  294.          return var5;
  295.       }
  296.    }
  297.  
  298.    // $FF: renamed from: ├£ (java.lang.String) void
  299.    private final void method_4(String var1) {
  300.       int var2 = var1.indexOf(" ");
  301.       String var3;
  302.       if (var2 != -1) {
  303.          var3 = var1.substring(0, var2);
  304.       } else {
  305.          var3 = var1;
  306.       }
  307.  
  308.       if (var3.equals("BeginSubMenu")) {
  309.          ++this.field_0;
  310.          this.itemPrev[this.field_0] = null;
  311.       } else if (var3.equals("EndSubMenu")) {
  312.          this.field_0 += -1;
  313.       } else {
  314.          TOCMenuItem var4 = new TOCMenuItem();
  315.          var4.id = this.field_5++;
  316.          var4.target = new String();
  317.          var4.text = new String();
  318.          if (var3.equals("Menu")) {
  319.             if (this.menuPrev == null) {
  320.                this.menuStart = var4;
  321.             } else {
  322.                this.menuPrev.next = var4;
  323.             }
  324.  
  325.             this.menuPrev = var4;
  326.             this.field_0 = 0;
  327.             this.itemPrev[0] = null;
  328.          } else {
  329.             if (this.menuPrev.subItem == null) {
  330.                this.menuPrev.subItem = var4;
  331.             }
  332.  
  333.             if (this.itemPrev[this.field_0] != null) {
  334.                this.itemPrev[this.field_0].next = var4;
  335.             }
  336.  
  337.             if (this.field_0 > 0 && this.itemPrev[this.field_0 - 1].subItem == null) {
  338.                this.itemPrev[this.field_0 - 1].subItem = var4;
  339.             }
  340.  
  341.             this.itemPrev[this.field_0] = var4;
  342.          }
  343.  
  344.          var3 = this.method_3(var1, "text");
  345.          if (var3 != null) {
  346.             var4.text = var3;
  347.          }
  348.  
  349.          var3 = this.method_3(var1, "url");
  350.          if (var3 != null) {
  351.             if (var3.indexOf(44) != -1) {
  352.                var4.target = var3.substring(var3.indexOf(44) + 1);
  353.                var3 = var3.substring(0, var3.indexOf(44));
  354.             }
  355.  
  356.             boolean var5 = true;
  357.  
  358.             try {
  359.                var4.url = new URL(var3);
  360.             } catch (MalformedURLException var6) {
  361.                var5 = false;
  362.             }
  363.  
  364.             if (!var5) {
  365.                try {
  366.                   var4.url = new URL(this.field_3, var3);
  367.                   return;
  368.                } catch (MalformedURLException var7) {
  369.                   var4.url = null;
  370.                }
  371.             }
  372.          }
  373.  
  374.       }
  375.    }
  376.  
  377.    // $FF: renamed from: ├ò () int
  378.    private final int method_5() {
  379.       TOCTreeItem var1 = null;
  380.       boolean var3 = true;
  381.       int var9 = 1;
  382.       if (this.field_6.fCompTOCScript) {
  383.          if ((var9 = this.method_8()) == -1) {
  384.             return -1;
  385.          }
  386.       } else if ((var9 = this.method_2()) == -1) {
  387.          return -1;
  388.       }
  389.  
  390.       int var7 = 0;
  391.       int var6 = 0;
  392.       this.start = null;
  393.       int var8 = 0;
  394.       boolean var5 = false;
  395.  
  396.       while(var8 < this.field_12.size()) {
  397.          String var2 = (String)this.field_12.elementAt(var8++);
  398.          var2 = var2.trim();
  399.          if (!var2.startsWith("//") && var2.length() != 0) {
  400.             this.item = this.method_0(var2);
  401.             if (this.item != null) {
  402.                ++this.listlen;
  403.                if (this.start == null) {
  404.                   this.start = this.item;
  405.                }
  406.  
  407.                if (var1 != null) {
  408.                   var1.nextLine = this.item;
  409.                }
  410.  
  411.                if (this.item.fct == 0 && this.item.level > var6 + 1) {
  412.                   var6 = this.item.level - 1;
  413.                }
  414.  
  415.                if (this.item.fct == 97) {
  416.                   var3 = false;
  417.                   ++var7;
  418.                   if (var7 > var6) {
  419.                      var6 = var7;
  420.                   }
  421.                } else if (this.item.fct == 98) {
  422.                   var3 = false;
  423.                   --var7;
  424.                } else {
  425.                   var3 = true;
  426.                }
  427.  
  428.                if (this.item.fct == 1) {
  429.                   var1.helpText = this.item.text;
  430.                }
  431.  
  432.                if (this.item.fct == 0) {
  433.                   var5 = true;
  434.                } else {
  435.                   var5 = false;
  436.                }
  437.  
  438.                var1 = this.item;
  439.             }
  440.          }
  441.       }
  442.  
  443.       TOCTreeItem[] var11 = new TOCTreeItem[var6 + 1];
  444.       boolean var4 = false;
  445.       this.item = this.start;
  446.       var7 = 0;
  447.  
  448.       for(int var10 = 0; var10 < this.listlen; ++var10) {
  449.          if (this.item.fct == 0) {
  450.             if (!this.field_4) {
  451.                this.item.isSelected = true;
  452.                this.field_4 = true;
  453.             }
  454.  
  455.             if (this.item.level > 0) {
  456.                if (this.item.level > var7 + 1) {
  457.                   var4 = true;
  458.                }
  459.  
  460.                var7 = this.item.level - 1;
  461.             }
  462.  
  463.             if (var4) {
  464.                var11[var7 - 1].child = this.item;
  465.                var4 = false;
  466.             } else if (var11[var7] != null) {
  467.                var11[var7].next = this.item;
  468.             }
  469.  
  470.             if (var7 > 0) {
  471.                this.item.parent = var11[var7 - 1];
  472.             }
  473.  
  474.             var11[var7] = this.item;
  475.          } else if (this.item.fct == 97) {
  476.             ++var7;
  477.             var4 = true;
  478.          } else if (this.item.fct == 98 && var7 > 0) {
  479.             --var7;
  480.          }
  481.  
  482.          this.item = this.item.nextLine;
  483.       }
  484.  
  485.       return var9;
  486.    }
  487.  
  488.    // $FF: renamed from: ├¥ (int) void
  489.    private final void method_6(int var1) {
  490.       if (var1 != 10 && var1 != 13) {
  491.          String var10001 = this.field_13;
  492.          this.field_13 = var10001 + (char)var1;
  493.       } else if (this.field_13.length() > 0) {
  494.          this.field_12.addElement(this.field_13);
  495.          this.field_13 = "";
  496.          return;
  497.       }
  498.  
  499.    }
  500.  
  501.    // $FF: renamed from: ├₧ () int
  502.    private final int method_7() {
  503.       int var6 = -1;
  504.       short var8 = 32767;
  505.  
  506.       try {
  507.          this.field_11 = 0;
  508.          boolean var7 = false;
  509.          int var3 = this.method_1();
  510.          int var1 = this.field_8.String_TE[var3].FollChar;
  511.          this.method_6(var1);
  512.          int var4 = var1;
  513.          int var5 = this.method_1();
  514.  
  515.          try {
  516.             while(true) {
  517.                int var2 = var5;
  518.                if (!this.field_8.String_TE[var5].Used) {
  519.                   var6 = var4;
  520.                   var2 = var3;
  521.                   var7 = true;
  522.                }
  523.  
  524.                while(this.field_8.String_TE[var2].PrevChar != var8) {
  525.                   this.field_10[++this.field_11] = this.field_8.String_TE[var2].FollChar;
  526.                   var2 = this.field_8.String_TE[var2].PrevChar;
  527.                }
  528.  
  529.                var4 = this.field_8.String_TE[var2].FollChar;
  530.                this.method_6(var4);
  531.  
  532.                while(this.field_11 > 0) {
  533.                   int[] var10001 = this.field_10;
  534.                   int var10004 = this.field_11;
  535.                   this.field_11 = var10004 + -1;
  536.                   this.method_6(var10001[var10004]);
  537.                }
  538.  
  539.                if (var7) {
  540.                   var4 = var6;
  541.                   this.method_6(var6);
  542.                   var7 = false;
  543.                }
  544.  
  545.                this.field_8.MakeTableElement(var3, var4);
  546.                var3 = var5;
  547.                var5 = this.method_1();
  548.             }
  549.          } catch (EOFException var9) {
  550.             if (this.field_13.length() > 0) {
  551.                this.field_12.addElement(this.field_13);
  552.             }
  553.  
  554.             return 1;
  555.          }
  556.       } catch (IOException var10) {
  557.          return -1;
  558.       }
  559.    }
  560.  
  561.    // $FF: renamed from: ├ƒ () int
  562.    private final int method_8() {
  563.       int var4 = 1;
  564.  
  565.       try {
  566.          URL var3 = new URL(this.field_3, this.field_2);
  567.          InputStream var2 = var3.openStream();
  568.          DataInputStream var1 = new DataInputStream(var2);
  569.          this.field_7 = new BufferedInputStream(var1, 16384);
  570.          var4 = this.method_7();
  571.          this.field_7.close();
  572.          ((FilterInputStream)var1).close();
  573.          return var4;
  574.       } catch (IOException var5) {
  575.          return -1;
  576.       }
  577.    }
  578. }
  579.