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