home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 October / PCO1097.ISO / FilesBBS / FREI / TOC42.EXE / TOCScript.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-08-29  |  7.9 KB  |  658 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.                System.out.println("Bad font value '" + var3 + "'. Ignoring font parameter.");
  113.             }
  114.          }
  115.  
  116.          var3 = this.method_3(var1, "color");
  117.          if (var3 != null) {
  118.             var4.textColor = this.field_6.ColorFromRGB(var3.trim());
  119.          }
  120.  
  121.          var3 = this.method_3(var1, "expanded");
  122.          if (var3 != null && var3.equals("YES")) {
  123.             var4.isExpanded = true;
  124.          }
  125.  
  126.          var3 = this.method_3(var1, "expandonselect");
  127.          if (var3 != null && var3.equals("YES")) {
  128.             var4.isAutoExpand = true;
  129.          }
  130.  
  131.          var3 = this.method_3(var1, "selected");
  132.          if (var3 != null && var3.equals("YES")) {
  133.             if (!this.field_4) {
  134.                var4.isSelected = true;
  135.                this.field_4 = true;
  136.             } else {
  137.                System.out.println("More than one item is marked selected. Ignoring all beside the first one.");
  138.             }
  139.          }
  140.  
  141.          var3 = this.method_3(var1, "url");
  142.          if (var3 != null) {
  143.             if (var3.indexOf(44) != -1) {
  144.                var4.target = var3.substring(var3.indexOf(44) + 1);
  145.                var3 = var3.substring(0, var3.indexOf(44));
  146.             }
  147.  
  148.             boolean var25 = true;
  149.  
  150.             try {
  151.                var4.url = new URL(var3);
  152.             } catch (MalformedURLException var9) {
  153.                var25 = false;
  154.             }
  155.  
  156.             if (!var25) {
  157.                try {
  158.                   var4.url = new URL(this.field_3, var3);
  159.                } catch (MalformedURLException var8) {
  160.                   System.out.println("Bad URL '" + var3 + "'. Deleting URL value.");
  161.                   var4.url = null;
  162.                }
  163.             }
  164.          }
  165.  
  166.          var3 = this.method_3(var1, "infoscript");
  167.          if (var3 != null) {
  168.             var4.scrollScriptFile = var3;
  169.             var3 = this.method_3(var1, "inforeload");
  170.             if (var3 != null) {
  171.                var4.lReloadInt = Long.parseLong(var3) * 100L;
  172.             } else {
  173.                var4.lReloadInt = -1L;
  174.             }
  175.          } else {
  176.             var4.scroll = this.field_6.genericScroll;
  177.             var4.lReloadInt = this.field_6.lReload;
  178.             var4.lStart = this.field_6.lStart;
  179.          }
  180.  
  181.          var3 = this.method_3(var1, "level");
  182.          if (var3 != null) {
  183.             var4.level = Integer.parseInt(var3);
  184.          }
  185.  
  186.          return var4;
  187.       } else {
  188.          this.method_4(var1);
  189.          return null;
  190.       }
  191.    }
  192.  
  193.    // $FF: renamed from: ├ô () int
  194.    private final int method_1() {
  195.       int var2;
  196.       if (this.field_9 == -1) {
  197.          int var1;
  198.          if ((var1 = this.field_7.read()) == -1 || (this.field_9 = this.field_7.read()) == -1) {
  199.             throw new EOFException();
  200.          }
  201.  
  202.          var2 = var1 << 4 & 4080 | this.field_9 >> 4 & 15;
  203.          this.field_9 &= 15;
  204.       } else {
  205.          int var3;
  206.          if ((var3 = this.field_7.read()) == -1) {
  207.             throw new EOFException();
  208.          }
  209.  
  210.          var2 = var3 | this.field_9 << 8 & 3840;
  211.          this.field_9 = -1;
  212.       }
  213.  
  214.       return var2;
  215.    }
  216.  
  217.    public TOCScript(URL var1, String var2, TOC var3) {
  218.       this.field_2 = var2;
  219.       this.field_3 = var1;
  220.       this.field_6 = var3;
  221.       this.itemPrev = new TOCMenuItem[10];
  222.       this.field_5 = 1000;
  223.       this.field_0 = 0;
  224.       this.field_12 = new Vector();
  225.       this.field_13 = new String();
  226.       if (this.field_6.fCompTOCScript) {
  227.          this.field_8 = new TOCZLWTable();
  228.       }
  229.  
  230.       this.field_4 = false;
  231.       this.field_1 = this.method_5();
  232.    }
  233.  
  234.    // $FF: renamed from: ├ö () int
  235.    private final int method_2() {
  236.       try {
  237.          URL var3 = new URL(this.field_3, this.field_2);
  238.          InputStream var1 = var3.openStream();
  239.          DataInputStream var2 = new DataInputStream(var1);
  240.  
  241.          String var4;
  242.          while((var4 = var2.readLine()) != null) {
  243.             if (var4.length() > 0) {
  244.                this.field_12.addElement(var4);
  245.             }
  246.          }
  247.  
  248.          var1.close();
  249.          ((FilterInputStream)var2).close();
  250.          return 1;
  251.       } catch (IOException var5) {
  252.          System.out.println("I/O error while opening/reading script file.");
  253.          return -1;
  254.       }
  255.    }
  256.  
  257.    // $FF: renamed from: ├ò (java.lang.String, java.lang.String) java.lang.String
  258.    private final String method_3(String var1, String var2) {
  259.       int var3 = -1;
  260.       int var4 = -1;
  261.       boolean var6 = false;
  262.  
  263.       while(!var6) {
  264.          var3 = var1.indexOf(var2, var3 + 1);
  265.          if (var3 == -1) {
  266.             var6 = true;
  267.          } else if (var1.charAt(var3 - 1) == ' ') {
  268.             var6 = true;
  269.          }
  270.       }
  271.  
  272.       var6 = false;
  273.  
  274.       while(!var6) {
  275.          var4 = var1.indexOf("text", var4 + 1);
  276.          if (var4 == -1) {
  277.             var6 = true;
  278.          } else if (var1.charAt(var4 - 1) == ' ') {
  279.             var6 = true;
  280.          }
  281.       }
  282.  
  283.       if (var4 != -1 && var3 > var4) {
  284.          return null;
  285.       } else if (var3 == -1) {
  286.          return null;
  287.       } else {
  288.          String var5 = var1.substring(var3);
  289.          var3 = var5.indexOf("=");
  290.          if (var3 == -1) {
  291.             System.out.println("Error in '" + var2 + "' parameter in " + var1);
  292.             return null;
  293.          } else {
  294.             ++var3;
  295.             if (var2.equals("text")) {
  296.                var5 = var5.substring(var3);
  297.             } else {
  298.                var5 = var5.substring(var3);
  299.                if (var5.indexOf(" ") != -1) {
  300.                   var5 = var5.substring(0, var5.indexOf(" "));
  301.                }
  302.             }
  303.  
  304.             var5.trim();
  305.             return var5;
  306.          }
  307.       }
  308.    }
  309.  
  310.    // $FF: renamed from: ├û (java.lang.String) void
  311.    private final void method_4(String var1) {
  312.       int var2 = var1.indexOf(" ");
  313.       String var3;
  314.       if (var2 != -1) {
  315.          var3 = var1.substring(0, var2);
  316.       } else {
  317.          var3 = var1;
  318.       }
  319.  
  320.       if (var3.equals("BeginSubMenu")) {
  321.          ++this.field_0;
  322.          if (this.field_0 > 9) {
  323.             System.out.println("SubMenu structure exceed maximum level of 10.");
  324.             this.field_0 += -1;
  325.          } else {
  326.             this.itemPrev[this.field_0] = null;
  327.          }
  328.       } else if (var3.equals("EndSubMenu")) {
  329.          if (this.field_0 == 0) {
  330.             System.out.println("EndSubMenu without BeginSubMenu.");
  331.          } else {
  332.             this.field_0 += -1;
  333.          }
  334.       } else if (var3.equals("MenuItem") && this.menuPrev == null) {
  335.          System.out.println("MenuItem before Menu ignored.");
  336.       } else {
  337.          TOCMenuItem var4 = new TOCMenuItem();
  338.          var4.id = this.field_5++;
  339.          var4.target = new String();
  340.          var4.text = new String();
  341.          if (var3.equals("Menu")) {
  342.             if (this.menuPrev == null) {
  343.                this.menuStart = var4;
  344.             } else {
  345.                this.menuPrev.next = var4;
  346.             }
  347.  
  348.             if (this.field_0 > 0) {
  349.                System.out.println("BeginSubMenu without EndSubMenu.");
  350.             }
  351.  
  352.             this.menuPrev = var4;
  353.             this.field_0 = 0;
  354.             this.itemPrev[0] = null;
  355.          } else {
  356.             if (this.menuPrev.subItem == null) {
  357.                this.menuPrev.subItem = var4;
  358.             }
  359.  
  360.             if (this.itemPrev[this.field_0] != null) {
  361.                this.itemPrev[this.field_0].next = var4;
  362.             }
  363.  
  364.             if (this.field_0 > 0 && this.itemPrev[this.field_0 - 1].subItem == null) {
  365.                this.itemPrev[this.field_0 - 1].subItem = var4;
  366.             }
  367.  
  368.             this.itemPrev[this.field_0] = var4;
  369.          }
  370.  
  371.          var3 = this.method_3(var1, "text");
  372.          if (var3 != null) {
  373.             var4.text = var3;
  374.          }
  375.  
  376.          var3 = this.method_3(var1, "url");
  377.          if (var3 != null) {
  378.             if (var3.indexOf(44) != -1) {
  379.                var4.target = var3.substring(var3.indexOf(44) + 1);
  380.                var3 = var3.substring(0, var3.indexOf(44));
  381.             }
  382.  
  383.             boolean var5 = true;
  384.  
  385.             try {
  386.                var4.url = new URL(var3);
  387.             } catch (MalformedURLException var6) {
  388.                var5 = false;
  389.             }
  390.  
  391.             if (!var5) {
  392.                try {
  393.                   var4.url = new URL(this.field_3, var3);
  394.                   return;
  395.                } catch (MalformedURLException var7) {
  396.                   System.out.println("Bad URL '" + var3 + "'. Deleting URL value.");
  397.                   var4.url = null;
  398.                }
  399.             }
  400.          }
  401.  
  402.       }
  403.    }
  404.  
  405.    // $FF: renamed from: ├ÿ () int
  406.    private final int method_5() {
  407.       TOCTreeItem var1 = null;
  408.       boolean var3 = true;
  409.       int var9 = 1;
  410.       if (this.field_6.fCompTOCScript) {
  411.          if ((var9 = this.method_8()) == -1) {
  412.             return -1;
  413.          }
  414.       } else if ((var9 = this.method_2()) == -1) {
  415.          return -1;
  416.       }
  417.  
  418.       int var7 = 0;
  419.       int var6 = 0;
  420.       this.start = null;
  421.       int var8 = 0;
  422.       boolean var5 = false;
  423.  
  424.       while(var8 < this.field_12.size()) {
  425.          String var2 = (String)this.field_12.elementAt(var8++);
  426.          var2 = var2.trim();
  427.          if (!var2.startsWith("//") && var2.length() != 0) {
  428.             this.item = this.method_0(var2);
  429.             if (this.item != null) {
  430.                ++this.listlen;
  431.                if (this.start == null) {
  432.                   this.start = this.item;
  433.                }
  434.  
  435.                if (var1 != null) {
  436.                   var1.nextLine = this.item;
  437.                }
  438.  
  439.                if (this.item.fct == 0 && this.item.level > var6 + 1) {
  440.                   var6 = this.item.level - 1;
  441.                }
  442.  
  443.                if (this.item.fct == 97) {
  444.                   if (!var3) {
  445.                      System.out.println("BeginSubTree error. Two or more continuous.");
  446.                      var9 = -1;
  447.                   }
  448.  
  449.                   var3 = false;
  450.                   ++var7;
  451.                   if (var7 > var6) {
  452.                      var6 = var7;
  453.                   }
  454.                } else if (this.item.fct == 98) {
  455.                   var3 = false;
  456.                   --var7;
  457.                } else {
  458.                   var3 = true;
  459.                }
  460.  
  461.                if (this.item.fct == 1) {
  462.                   if (!var5) {
  463.                      System.out.println("ItemHelp, but no Item in line above. Ignoring line.");
  464.                   } else {
  465.                      var1.helpText = this.item.text;
  466.                   }
  467.                }
  468.  
  469.                if (this.item.fct == 0) {
  470.                   var5 = true;
  471.                } else {
  472.                   var5 = false;
  473.                }
  474.  
  475.                var1 = this.item;
  476.             }
  477.          }
  478.       }
  479.  
  480.       if (this.field_0 > 0) {
  481.          System.out.println("BeginSubMenu without EndSubMenu.");
  482.       }
  483.  
  484.       if (var9 == -1) {
  485.          return var9;
  486.       } else {
  487.          TOCTreeItem[] var11 = new TOCTreeItem[var6 + 1];
  488.          boolean var4 = false;
  489.          this.item = this.start;
  490.          var7 = 0;
  491.  
  492.          for(int var10 = 0; var10 < this.listlen; ++var10) {
  493.             if (this.item.fct == 0) {
  494.                if (!this.field_4) {
  495.                   this.item.isSelected = true;
  496.                   this.field_4 = true;
  497.                }
  498.  
  499.                if (this.item.level > 0) {
  500.                   if (this.item.level > var7 + 1) {
  501.                      var4 = true;
  502.                   }
  503.  
  504.                   if (this.item.level > var7 + 2) {
  505.                      System.out.println("Error in level hierarchy. At least one level left out.");
  506.                      return -1;
  507.                   }
  508.  
  509.                   var7 = this.item.level - 1;
  510.                }
  511.  
  512.                if (var4) {
  513.                   if (var7 == 0) {
  514.                      System.out.println("BeginSubTree, but no parent item available.");
  515.                      return -1;
  516.                   }
  517.  
  518.                   var11[var7 - 1].child = this.item;
  519.                   var4 = false;
  520.                } else if (var11[var7] != null) {
  521.                   var11[var7].next = this.item;
  522.                }
  523.  
  524.                if (var7 > 0) {
  525.                   this.item.parent = var11[var7 - 1];
  526.                }
  527.  
  528.                var11[var7] = this.item;
  529.             } else if (this.item.fct != 1) {
  530.                if (this.item.fct == 97) {
  531.                   ++var7;
  532.                   var4 = true;
  533.                } else {
  534.                   if (this.item.fct != 98) {
  535.                      var9 = -1;
  536.                      System.out.println("Bad function keyword.");
  537.                      break;
  538.                   }
  539.  
  540.                   if (var7 > 0) {
  541.                      --var7;
  542.                   } else {
  543.                      System.out.println("Begin/EndSubTree error.");
  544.                   }
  545.                }
  546.             }
  547.  
  548.             this.item = this.item.nextLine;
  549.          }
  550.  
  551.          this.item = this.start;
  552.  
  553.          for(int var15 = 0; var15 < this.listlen; ++var15) {
  554.             if (this.item.isExpanded && this.item.child == null) {
  555.                this.item.isExpanded = false;
  556.                System.out.println("Expanded flag set on item without children. Removing flag.");
  557.             }
  558.  
  559.             this.item = this.item.nextLine;
  560.          }
  561.  
  562.          return var9;
  563.       }
  564.    }
  565.  
  566.    // $FF: renamed from: ├Ö (int) void
  567.    private final void method_6(int var1) {
  568.       if (var1 != 10 && var1 != 13) {
  569.          String var10001 = this.field_13;
  570.          this.field_13 = var10001 + (char)var1;
  571.       } else if (this.field_13.length() > 0) {
  572.          this.field_12.addElement(this.field_13);
  573.          this.field_13 = "";
  574.          return;
  575.       }
  576.  
  577.    }
  578.  
  579.    // $FF: renamed from: ├Ü () int
  580.    private final int method_7() {
  581.       int var6 = -1;
  582.       short var8 = 32767;
  583.  
  584.       try {
  585.          this.field_11 = 0;
  586.          boolean var7 = false;
  587.          int var3 = this.method_1();
  588.          int var1 = this.field_8.String_TE[var3].FollChar;
  589.          this.method_6(var1);
  590.          int var4 = var1;
  591.          int var5 = this.method_1();
  592.  
  593.          try {
  594.             while(true) {
  595.                int var2 = var5;
  596.                if (!this.field_8.String_TE[var5].Used) {
  597.                   var6 = var4;
  598.                   var2 = var3;
  599.                   var7 = true;
  600.                }
  601.  
  602.                while(this.field_8.String_TE[var2].PrevChar != var8) {
  603.                   this.field_10[++this.field_11] = this.field_8.String_TE[var2].FollChar;
  604.                   var2 = this.field_8.String_TE[var2].PrevChar;
  605.                }
  606.  
  607.                var4 = this.field_8.String_TE[var2].FollChar;
  608.                this.method_6(var4);
  609.  
  610.                while(this.field_11 > 0) {
  611.                   int[] var10001 = this.field_10;
  612.                   int var10004 = this.field_11;
  613.                   this.field_11 = var10004 + -1;
  614.                   this.method_6(var10001[var10004]);
  615.                }
  616.  
  617.                if (var7) {
  618.                   var4 = var6;
  619.                   this.method_6(var6);
  620.                   var7 = false;
  621.                }
  622.  
  623.                this.field_8.MakeTableElement(var3, var4);
  624.                var3 = var5;
  625.                var5 = this.method_1();
  626.             }
  627.          } catch (EOFException var9) {
  628.             if (this.field_13.length() > 0) {
  629.                this.field_12.addElement(this.field_13);
  630.             }
  631.  
  632.             return 1;
  633.          }
  634.       } catch (IOException var10) {
  635.          return -1;
  636.       }
  637.    }
  638.  
  639.    // $FF: renamed from: ├¢ () int
  640.    private final int method_8() {
  641.       int var4 = 1;
  642.  
  643.       try {
  644.          URL var3 = new URL(this.field_3, this.field_2);
  645.          InputStream var2 = var3.openStream();
  646.          DataInputStream var1 = new DataInputStream(var2);
  647.          this.field_7 = new BufferedInputStream(var1, 16384);
  648.          var4 = this.method_7();
  649.          this.field_7.close();
  650.          ((FilterInputStream)var1).close();
  651.          return var4;
  652.       } catch (IOException var5) {
  653.          System.out.println("I/O error while opening/reading compressed script file.");
  654.          return -1;
  655.       }
  656.    }
  657. }
  658.