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

  1. import java.awt.Color;
  2. import java.awt.Font;
  3. import java.awt.FontMetrics;
  4. import java.awt.Graphics;
  5. import java.awt.Image;
  6. import java.awt.MediaTracker;
  7. import java.io.DataInputStream;
  8. import java.io.FilterInputStream;
  9. import java.io.IOException;
  10. import java.io.InputStream;
  11. import java.net.URL;
  12.  
  13. public final class TOCScrollScript implements Runnable {
  14.    public TOCTreeItem item;
  15.    // $FF: renamed from: ├╗ TOCScrollItem
  16.    private TOCScrollItem field_0;
  17.    // $FF: renamed from: ok int
  18.    public int field_1;
  19.    // $FF: renamed from: ├ô java.lang.String
  20.    private String field_2;
  21.    // $FF: renamed from: ├ö java.net.URL
  22.    private URL field_3;
  23.    // $FF: renamed from: ├â TOC
  24.    private TOC field_4;
  25.    // $FF: renamed from: ├¬ java.lang.Thread
  26.    private Thread field_5;
  27.    public MediaTracker tracker;
  28.    public boolean fDone;
  29.    // $FF: renamed from: ├╝ boolean
  30.    private boolean field_6;
  31.  
  32.    public void stop() {
  33.       if (this.field_5 != null) {
  34.          this.field_5.stop();
  35.          this.field_5 = null;
  36.       }
  37.  
  38.    }
  39.  
  40.    // $FF: renamed from: ├Æ (java.lang.String) TOCScrollItem
  41.    private final TOCScrollItem method_0(String var1) {
  42.       var1 = var1.trim();
  43.       int var2 = var1.indexOf(" ");
  44.       String var3;
  45.       if (var2 != -1) {
  46.          var3 = var1.substring(0, var2);
  47.       } else {
  48.          var3 = var1;
  49.       }
  50.  
  51.       if (!var3.equals("ScrollItemHelp") && !var3.equals("ScrollItem")) {
  52.          System.out.println("Invalid keyword '" + var3 + "'. Ignoring line.");
  53.          return null;
  54.       } else if (var3.equals("ScrollItemHelp")) {
  55.          if (this.field_0 != null) {
  56.             var3 = this.method_2(var1, "text");
  57.             if (var3 != null) {
  58.                this.field_0.helpText = var3;
  59.             }
  60.          }
  61.  
  62.          return null;
  63.       } else {
  64.          TOCScrollItem var4 = new TOCScrollItem();
  65.          var4.id = this.field_4.iID++;
  66.          var4.target = new String();
  67.          var4.text = new String();
  68.          var4.helpText = new String();
  69.          var4.textFont = this.field_4.standardF;
  70.          var4.textColor = this.field_4.textCInfo;
  71.          var3 = this.method_2(var1, "text");
  72.          if (var3 != null) {
  73.             var4.text = var3;
  74.          }
  75.  
  76.          var3 = this.method_2(var1, "font");
  77.          if (var3 != null) {
  78.             String var6 = var3.substring(0, var3.indexOf(","));
  79.             String var5 = var3.substring(var3.indexOf(",") + 1);
  80.  
  81.             try {
  82.                int var7 = Integer.valueOf(var5);
  83.                var4.textFont = new Font(var6, 0, var7);
  84.             } catch (NumberFormatException var8) {
  85.                System.out.println("Bad font value '" + var3 + "'. Ignoring font parameter.");
  86.             }
  87.          }
  88.  
  89.          var3 = this.method_2(var1, "color");
  90.          if (var3 != null) {
  91.             var4.textColor = this.field_4.ColorFromRGB(var3.trim());
  92.          }
  93.  
  94.          var3 = this.method_2(var1, "url");
  95.          if (var3 != null) {
  96.             if (var3.indexOf(44) != -1) {
  97.                var4.target = var3.substring(var3.indexOf(44) + 1);
  98.                var3 = var3.substring(0, var3.indexOf(44));
  99.             }
  100.  
  101.             var4.url = this.field_4.getURL(var3);
  102.          }
  103.  
  104.          var4.w = this.method_1(var4, 0, this.field_4.infoHeight, false, (Graphics)null) + 20;
  105.          var4.image = this.field_4.TOCCreateImage(var4.w, this.field_4.infoHeight);
  106.          this.method_1(var4, 0, this.field_4.infoHeight, true, var4.image.getGraphics());
  107.          this.field_4.getToolkit().sync();
  108.          return var4;
  109.       }
  110.    }
  111.  
  112.    // $FF: renamed from: ├╗ (TOCScrollItem, int, int, boolean, java.awt.Graphics) int
  113.    private int method_1(TOCScrollItem var1, int var2, int var3, boolean var4, Graphics var5) {
  114.       String var6 = var1.text;
  115.       char[] var8 = new char[2];
  116.       int var9 = 0;
  117.       int var10 = var2;
  118.       boolean var13 = true;
  119.       int var15 = var6.length();
  120.       boolean var16 = false;
  121.       boolean var17 = false;
  122.       String var18 = var1.textFont.getName();
  123.       int var19 = var1.textFont.getSize();
  124.       Font var20 = new Font(var18, 0, var19);
  125.       FontMetrics var21 = this.field_4.getFontMetrics(var20);
  126.       Color var22 = var1.textColor;
  127.       if (var4) {
  128.          var5.setColor(this.field_4.bgCInfo);
  129.          var5.fillRect(0, 0, var1.w, var3);
  130.          var5.setColor(this.field_4.lineC);
  131.          var5.drawLine(0, 0, var1.w, 0);
  132.          var5.drawLine(var1.w - 11, var3 / 2, var1.w - 10, var3 / 2);
  133.          var5.drawLine(var1.w - 11, var3 / 2 - 1, var1.w - 10, var3 / 2 - 1);
  134.       }
  135.  
  136.       while(var13) {
  137.          var13 = false;
  138.          if (var9 < var15) {
  139.             char var7 = var6.charAt(var9);
  140.             switch (var7) {
  141.                case '&':
  142.                   String var42 = var6.substring(var9, var9 + 4);
  143.                   var42 = var42.toUpperCase();
  144.                   if (var42.equals(">")) {
  145.                      var7 = '>';
  146.                      var9 += 3;
  147.                   } else if (var42.equals("<")) {
  148.                      var7 = '<';
  149.                      var9 += 3;
  150.                   }
  151.  
  152.                   ++var9;
  153.                   break;
  154.                case '<':
  155.                   if (var9 + 3 <= var15) {
  156.                      String var14 = var6.substring(var9, var9 + 3);
  157.                      var14 = var14.toLowerCase();
  158.                      if (var14.equals("<b>")) {
  159.                         var16 = true;
  160.                         var9 += 2;
  161.                         var13 = true;
  162.                      } else if (var14.equals("<i>")) {
  163.                         var17 = true;
  164.                         var9 += 2;
  165.                         var13 = true;
  166.                      }
  167.                   }
  168.  
  169.                   if (var9 + 4 <= var15) {
  170.                      String var34 = var6.substring(var9, var9 + 4);
  171.                      var34 = var34.toLowerCase();
  172.                      if (var34.equals("</b>")) {
  173.                         var16 = false;
  174.                         var9 += 3;
  175.                         var13 = true;
  176.                      } else if (var34.equals("</i>")) {
  177.                         var17 = false;
  178.                         var9 += 3;
  179.                         var13 = true;
  180.                      }
  181.                   }
  182.  
  183.                   if (var9 + 5 <= var15) {
  184.                      String var36 = var6.substring(var9, var9 + 5);
  185.                      var36 = var36.toLowerCase();
  186.                      if (var36.equals("<img ")) {
  187.                         int var24 = -1;
  188.                         int var25 = -1;
  189.                         int var26 = 0;
  190.                         URL var27 = null;
  191.                         int var12 = var6.indexOf(">", var9 + 1);
  192.                         String var28 = var6.substring(var9 + 5, var12);
  193.                         var28 = var28.trim();
  194.                         String var29 = this.method_2(var28, "width");
  195.                         if (var29 != null) {
  196.                            var24 = Integer.parseInt(var29);
  197.                         }
  198.  
  199.                         var29 = this.method_2(var28, "height");
  200.                         if (var29 != null) {
  201.                            var25 = Integer.parseInt(var29);
  202.                         }
  203.  
  204.                         var29 = this.method_2(var28, "border");
  205.                         if (var29 != null) {
  206.                            var26 = Integer.parseInt(var29);
  207.                         }
  208.  
  209.                         var29 = this.method_2(var28, "src");
  210.                         if (var29 != null) {
  211.                            var27 = this.field_4.getURL(var29);
  212.                         }
  213.  
  214.                         var9 = var12;
  215.                         var13 = true;
  216.                         if (var27 != null) {
  217.                            Image var23 = this.field_4.getImage(var27);
  218.                            this.tracker.addImage(var23, 1);
  219.  
  220.                            try {
  221.                               this.tracker.waitForID(1);
  222.                            } catch (Exception var30) {
  223.                               var23 = null;
  224.                            }
  225.  
  226.                            if (var23 != null) {
  227.                               if (var24 == -1) {
  228.                                  var24 = var23.getWidth(this.field_4);
  229.                               }
  230.  
  231.                               if (var25 == -1) {
  232.                                  var25 = var23.getHeight(this.field_4);
  233.                               }
  234.  
  235.                               if (var4) {
  236.                                  int var11 = (this.field_4.infoHeight - var25 + 1) / 2;
  237.                                  var5.drawImage(var23, var10 + var26, var11, this.field_4);
  238.                               }
  239.  
  240.                               var10 += var24 + 2 * var26;
  241.                            }
  242.                         }
  243.                      }
  244.                   }
  245.  
  246.                   if (var9 + 6 <= var15) {
  247.                      String var38 = var6.substring(var9, var9 + 6);
  248.                      var38 = var38.toLowerCase();
  249.                      if (var38.equals("<font ")) {
  250.                         int var31 = var6.indexOf(">", var9 + 1);
  251.                         String var44 = var6.substring(var9 + 6, var31);
  252.                         var44 = var44.trim();
  253.                         String var49 = this.method_2(var44, "family");
  254.                         if (var49 != null) {
  255.                            var18 = var49;
  256.                         }
  257.  
  258.                         var49 = this.method_2(var44, "size");
  259.                         if (var49 != null) {
  260.                            var19 = Integer.parseInt(var49);
  261.                         }
  262.  
  263.                         var9 = var31;
  264.                         var13 = true;
  265.                      }
  266.                   }
  267.  
  268.                   if (var9 + 7 <= var15) {
  269.                      String var40 = var6.substring(var9, var9 + 7);
  270.                      var40 = var40.toLowerCase();
  271.                      if (var40.equals("<color ")) {
  272.                         int var32 = var6.indexOf(">", var9 + 1);
  273.                         String var46 = var6.substring(var9 + 7, var32);
  274.                         var46 = var46.trim();
  275.                         String var51 = this.method_2(var46, "value");
  276.                         if (var51 != null) {
  277.                            var22 = this.field_4.ColorFromRGB(var51);
  278.                         }
  279.  
  280.                         var9 = var32;
  281.                         var13 = true;
  282.                      }
  283.                   }
  284.  
  285.                   ++var9;
  286.                   if (var13) {
  287.                      byte var48 = 0;
  288.                      if (!var17 && var16) {
  289.                         var48 = 1;
  290.                      } else if (var17 && !var16) {
  291.                         var48 = 2;
  292.                      } else if (var17 && var16) {
  293.                         var48 = 3;
  294.                      }
  295.  
  296.                      var20 = new Font(var18, var48, var19);
  297.                      var21 = this.field_4.getFontMetrics(var20);
  298.                   }
  299.                   break;
  300.                default:
  301.                   ++var9;
  302.             }
  303.  
  304.             if (!var13) {
  305.                if (var4) {
  306.                   var8[0] = var7;
  307.                   var5.setFont(var20);
  308.                   var5.setColor(var22);
  309.                   var5.drawChars(var8, 0, 1, var10, this.field_4.yInfoBase);
  310.                }
  311.  
  312.                var10 += var21.charWidth(var7);
  313.                var13 = true;
  314.             }
  315.          }
  316.       }
  317.  
  318.       return var10;
  319.    }
  320.  
  321.    public TOCScrollScript(URL var1, String var2, TOC var3, TOCTreeItem var4, boolean var5) {
  322.       this.field_2 = var2;
  323.       this.field_3 = var1;
  324.       this.field_4 = var3;
  325.       this.item = var4;
  326.       this.field_6 = var5;
  327.       this.tracker = new MediaTracker(this.field_4);
  328.    }
  329.  
  330.    // $FF: renamed from: ├ò (java.lang.String, java.lang.String) java.lang.String
  331.    private final String method_2(String var1, String var2) {
  332.       int var3 = -1;
  333.       int var4 = -1;
  334.       boolean var6 = false;
  335.  
  336.       while(!var6) {
  337.          var3 = var1.indexOf(var2, var3 + 1);
  338.          if (var3 == -1) {
  339.             var6 = true;
  340.          } else if (var3 == 0 || var1.charAt(var3 - 1) == ' ') {
  341.             var6 = true;
  342.          }
  343.       }
  344.  
  345.       var6 = false;
  346.  
  347.       while(!var6) {
  348.          var4 = var1.indexOf("text", var4 + 1);
  349.          if (var4 == -1) {
  350.             var6 = true;
  351.          } else if (var1.charAt(var4 - 1) == ' ') {
  352.             var6 = true;
  353.          }
  354.       }
  355.  
  356.       if (var4 != -1 && var3 > var4) {
  357.          return null;
  358.       } else if (var3 == -1) {
  359.          return null;
  360.       } else {
  361.          String var5 = var1.substring(var3);
  362.          var3 = var5.indexOf("=");
  363.          if (var3 == -1) {
  364.             System.out.println("Error in '" + var2 + "' parameter in " + var1);
  365.             return null;
  366.          } else {
  367.             ++var3;
  368.             if (var2.equals("text")) {
  369.                var5 = var5.substring(var3);
  370.             } else {
  371.                var5 = var5.substring(var3);
  372.                if (var5.indexOf(" ") != -1) {
  373.                   var5 = var5.substring(0, var5.indexOf(" "));
  374.                }
  375.             }
  376.  
  377.             var5.trim();
  378.             return var5;
  379.          }
  380.       }
  381.    }
  382.  
  383.    public void start() {
  384.       if (this.field_5 == null) {
  385.          this.field_5 = new Thread(this);
  386.          this.field_5.start();
  387.       }
  388.  
  389.    }
  390.  
  391.    // $FF: renamed from: ├ÿ () int
  392.    private final int method_3() {
  393.       byte var5 = 1;
  394.  
  395.       InputStream var1;
  396.       DataInputStream var2;
  397.       try {
  398.          URL var3 = new URL(this.field_3, this.field_2);
  399.          var1 = var3.openStream();
  400.          var2 = new DataInputStream(var1);
  401.       } catch (IOException var9) {
  402.          return -1;
  403.       }
  404.  
  405.       try {
  406.          String var4;
  407.          while((var4 = var2.readLine()) != null) {
  408.             var4 = var4.trim();
  409.             if (!var4.startsWith("//") && var4.length() != 0) {
  410.                TOCScrollItem var6 = this.method_0(var4);
  411.                if (var6 != null) {
  412.                   if (this.item.scroll == null) {
  413.                      this.item.scroll = var6;
  414.                      this.item.lStart = System.currentTimeMillis();
  415.                      if (this.field_6) {
  416.                         this.field_4.genericScroll = var6;
  417.                         this.field_4.lStart = this.item.lStart;
  418.                         if (this.field_4.script != null) {
  419.                            TOCTreeItem var7 = this.field_4.script.start;
  420.  
  421.                            for(int var8 = 0; var8 < this.field_4.script.listlen; ++var8) {
  422.                               if (var7.fct == 0 && var7.scrollScriptFile == null) {
  423.                                  var7.scroll = var6;
  424.                                  var7.lStart = this.field_4.lStart;
  425.                               }
  426.  
  427.                               var7 = var7.nextLine;
  428.                            }
  429.                         }
  430.                      }
  431.                   } else {
  432.                      this.field_0.next = var6;
  433.                   }
  434.  
  435.                   this.field_0 = var6;
  436.                }
  437.             }
  438.          }
  439.  
  440.          var1.close();
  441.          ((FilterInputStream)var2).close();
  442.          return var5;
  443.       } catch (IOException var10) {
  444.          return -1;
  445.       }
  446.    }
  447.  
  448.    public void run() {
  449.       while(this.field_5 != null) {
  450.          this.field_1 = this.method_3();
  451.          this.fDone = true;
  452.          this.stop();
  453.       }
  454.  
  455.    }
  456. }
  457.