home *** CD-ROM | disk | FTP | other *** search
/ Internet Magazine 2002 June / INTERNET92.ISO / pc / software / windows / building / visual_dhtml / visualdhtmlwin2000.exe / tscroll.___ (.txt) < prev    next >
Encoding:
Java Class File  |  2001-10-19  |  11.4 KB  |  806 lines

  1. import java.applet.Applet;
  2. import java.awt.Color;
  3. import java.awt.Component;
  4. import java.awt.Dimension;
  5. import java.awt.Event;
  6. import java.awt.Font;
  7. import java.awt.FontMetrics;
  8. import java.awt.Graphics;
  9. import java.awt.Image;
  10. import java.net.MalformedURLException;
  11. import java.net.URL;
  12. import java.util.Vector;
  13.  
  14. public class tscroll extends OCAviewerExtend implements Runnable {
  15.    Font m_font;
  16.    // $FF: renamed from: fm java.awt.FontMetrics
  17.    FontMetrics field_0;
  18.    Font[] m_cur_font;
  19.    FontMetrics typefm;
  20.    FontMetrics hlfm;
  21.    Graphics g_hloff;
  22.    Image hloff;
  23.    Thread animator;
  24.    // $FF: renamed from: d java.awt.Dimension
  25.    Dimension field_1;
  26.    Image off;
  27.    Graphics g_off;
  28.    URL goURL;
  29.    int old_lindex;
  30.    int type_rel_pos;
  31.    long next_time;
  32.    boolean end_pause;
  33.    boolean typing = false;
  34.    int type_index = 0;
  35.    boolean tag = false;
  36.    // $FF: renamed from: my int
  37.    int field_2;
  38.    int hLine = -1;
  39.    boolean mouseIn = false;
  40.    int l_h = -1;
  41.    int desc_line;
  42.    int old_line;
  43.    int[] m_size_pause;
  44.    boolean go_one = false;
  45.    int num_links;
  46.    int[] link_cords;
  47.    String[] link_urls;
  48.    int[] line_coords;
  49.    int[] re_draw;
  50.    int font_style;
  51.    int num_descrips;
  52.    int scroll_y;
  53.    int last_h = -1;
  54.    int cur_dline;
  55.    int hold_move;
  56.    int link_ref = 0;
  57.    int type_line = 0;
  58.    boolean done_draw = false;
  59.    boolean first_run = false;
  60.    boolean paused;
  61.    boolean mdown = false;
  62.    private boolean m_def_size_extra = false;
  63.    private int m_bottom_margin = 5;
  64.    private int m_jump = 5;
  65.    private int m_type_delay = 50;
  66.    private boolean[] m_size_extra;
  67.    private int m_def_halign;
  68.    private int m_scroll_delay = 10;
  69.    private int m_def_size = 14;
  70.    private Color m_def_textcolor;
  71.    private Color m_bgcolor;
  72.    private Color m_def_hlcolor;
  73.    private String m_def_fontface;
  74.    private String m_sb_text;
  75.    private int m_xoffset;
  76.    private String m_def_loadwhere;
  77.    private String m_offsbtext;
  78.    private boolean m_typeit;
  79.    private boolean[] m_cur_typeit;
  80.    private int m_end_pause;
  81.    int[] type_coords;
  82.    String[] type_text;
  83.    int[] type_id;
  84.    int i_h;
  85.    private Color[] m_textcolor;
  86.    private String[] m_desc;
  87.    private String[] m_linkurl;
  88.    private int[] m_halign;
  89.    private String[] m_loadwhere;
  90.    private String[] d_temp;
  91.    int[] type_rel;
  92.  
  93.    public boolean mouseMove(Event var1, int var2, int var3) {
  94.       this.field_2 = var3;
  95.       this.mCheck();
  96.       return true;
  97.    }
  98.  
  99.    public void stop() {
  100.       if (this.animator != null) {
  101.          this.animator.stop();
  102.          this.animator = null;
  103.       }
  104.  
  105.    }
  106.  
  107.    public boolean mouseEnter(Event var1, int var2, int var3) {
  108.       this.mouseIn = true;
  109.       ((OCAviewerExtend)this).showStatus(this.m_sb_text);
  110.       return true;
  111.    }
  112.  
  113.    public void mCheck() {
  114.       for(int var1 = 0; var1 < this.num_links; ++var1) {
  115.          if (!this.mouseIn) {
  116.             this.hLine = -1;
  117.             this.chl(var1);
  118.             return;
  119.          }
  120.  
  121.          if (this.field_2 > this.link_cords[var1 * 3] + this.scroll_y && this.field_2 < this.link_cords[var1 * 3 + 1] + this.scroll_y) {
  122.             this.hLine = this.link_cords[var1 * 3 + 2];
  123.             this.link_ref = var1;
  124.             this.chl(var1);
  125.             return;
  126.          }
  127.  
  128.          if (var1 == this.num_links - 1) {
  129.             this.hLine = -1;
  130.             this.chl(var1);
  131.             return;
  132.          }
  133.       }
  134.  
  135.    }
  136.  
  137.    public boolean mouseExit(Event var1, int var2, int var3) {
  138.       this.mouseIn = false;
  139.       this.mCheck();
  140.       ((OCAviewerExtend)this).showStatus(this.m_offsbtext);
  141.       return true;
  142.    }
  143.  
  144.    static int getAlignValue(String var0) {
  145.       if (var0.equalsIgnoreCase("right")) {
  146.          return 2;
  147.       } else {
  148.          return var0.equalsIgnoreCase("center") ? 1 : 0;
  149.       }
  150.    }
  151.  
  152.    public void paint(Graphics var1) {
  153.       if (this.done_draw) {
  154.          this.DrawBG(var1);
  155.          var1.drawImage(this.off, 0, this.scroll_y, this);
  156.          var1.setColor(this.m_bgcolor);
  157.       }
  158.  
  159.       if (!this.tag) {
  160.          var1.drawString("Incorrect 'Notice' tag", 5, 20);
  161.       }
  162.  
  163.    }
  164.  
  165.    public tscroll() {
  166.       this.m_def_textcolor = Color.black;
  167.       this.m_bgcolor = Color.white;
  168.       this.m_def_hlcolor = Color.blue;
  169.       this.m_def_fontface = "System";
  170.       this.m_sb_text = "OpenCube - Typewriter Scroll";
  171.       this.m_xoffset = 5;
  172.       this.m_def_loadwhere = "_self";
  173.       this.m_offsbtext = "Java by OpenCube";
  174.       this.m_typeit = true;
  175.       this.m_end_pause = 2000;
  176.    }
  177.  
  178.    public boolean mouseUp(Event var1, int var2, int var3) {
  179.       for(int var4 = this.type_coords.length - 1; var4 > -1; --var4) {
  180.          if (this.scroll_y > -this.type_coords[var4]) {
  181.             this.cur_dline = var4;
  182.          }
  183.       }
  184.  
  185.       this.mdown = false;
  186.       if (this.hLine != -1 && !this.link_urls[this.link_ref].equals("-1")) {
  187.          try {
  188.             this.goURL = new URL(((OCAviewerExtend)this).getDocumentBase(), this.link_urls[this.link_ref]);
  189.          } catch (MalformedURLException var5) {
  190.          }
  191.  
  192.          ((Applet)this).getAppletContext().showDocument(this.goURL, this.m_loadwhere[this.hLine]);
  193.       }
  194.  
  195.       return true;
  196.    }
  197.  
  198.    public void start() {
  199.       if (!this.first_run) {
  200.          this.DrawBG(((Component)this).getGraphics());
  201.          ((OCAviewerExtend)this).showStatus(this.m_sb_text);
  202.          this.first_run = true;
  203.       }
  204.  
  205.       if (this.animator == null) {
  206.          this.animator = new Thread(this);
  207.          this.animator.start();
  208.       }
  209.  
  210.    }
  211.  
  212.    public void DrawBG(Graphics var1) {
  213.       var1.setColor(this.m_bgcolor);
  214.       var1.setColor(this.m_bgcolor);
  215.       var1.fillRect(0, 0, this.field_1.width, this.field_1.height);
  216.    }
  217.  
  218.    public void ScrollIt(boolean var1) {
  219.       this.scroll_y -= this.m_jump;
  220.       if (this.scroll_y <= this.field_1.height - this.type_coords[this.type_line]) {
  221.          if (this.type_line != this.type_coords.length - 1) {
  222.             this.DrawType(this.type_line);
  223.             ++this.type_line;
  224.          } else {
  225.             if (this.go_one) {
  226.                ((Component)this).getGraphics().drawImage(this.off, 0, this.scroll_y, this);
  227.             } else {
  228.                this.DrawType(this.type_line);
  229.                this.end_pause = true;
  230.  
  231.                for(this.next_time = System.currentTimeMillis() + (long)this.m_end_pause; System.currentTimeMillis() < this.next_time; this.mCheck()) {
  232.                   try {
  233.                      Thread.sleep(50L);
  234.                   } catch (InterruptedException var2) {
  235.                   }
  236.                }
  237.  
  238.                this.end_pause = false;
  239.             }
  240.  
  241.             this.go_one = true;
  242.          }
  243.       } else {
  244.          ((Component)this).getGraphics().drawImage(this.off, 0, this.scroll_y, this);
  245.       }
  246.  
  247.       if (this.scroll_y < -this.off.getHeight(this)) {
  248.          this.scroll_y = this.field_1.height;
  249.          this.type_line = 0;
  250.          this.go_one = false;
  251.          this.DrawScroll();
  252.       }
  253.  
  254.    }
  255.  
  256.    public void DrawScroll() {
  257.       Object var1 = null;
  258.       Vector var2 = new Vector();
  259.       Vector var3 = new Vector();
  260.       Vector var4 = new Vector();
  261.       Vector var5 = new Vector();
  262.       int var6 = 0;
  263.       int var7 = 0;
  264.       int var8 = 0;
  265.       int var9 = 0;
  266.       boolean var10 = false;
  267.       int var11 = 0;
  268.  
  269.       do {
  270.          var6 = 0;
  271.  
  272.          for(int var12 = 0; var12 < this.num_descrips; ++var12) {
  273.             if (var11 == 0) {
  274.                this.field_0 = ((Component)this).getFontMetrics(this.m_cur_font[var12]);
  275.                if (this.m_size_pause[var12] == 1) {
  276.                   var9 = var6;
  277.                   var10 = true;
  278.                } else if (!var10) {
  279.                   var9 = var6;
  280.                }
  281.  
  282.                String[] var16 = ocwordw.WrapText(this.m_desc[var12], this.field_1.width - this.m_xoffset * 2, this.field_0);
  283.  
  284.                for(int var21 = 0; var21 < var16.length; ++var21) {
  285.                   var6 += this.field_0.getHeight();
  286.                   if (this.m_cur_typeit[var12]) {
  287.                      if (var12 == 0) {
  288.                         this.scroll_y = this.field_1.height - (var6 + this.field_0.getDescent() + this.m_bottom_margin);
  289.                      }
  290.  
  291.                      var2.addElement((new Integer(var6 + this.field_0.getDescent() + this.m_bottom_margin)).toString());
  292.                      var3.addElement(var16[var21]);
  293.                      var4.addElement((new Integer(var12)).toString());
  294.                      var5.addElement((new Integer(var21)).toString());
  295.                   }
  296.                }
  297.  
  298.                if (var12 == this.m_desc.length - 1) {
  299.                   this.i_h = var6 + this.field_0.getDescent() + 5;
  300.                   this.off = ((Component)this).createImage(this.field_1.width, this.i_h);
  301.                   this.g_off = this.off.getGraphics();
  302.                   this.g_off.setColor(this.m_bgcolor);
  303.                   this.g_off.fillRect(0, 0, this.field_1.width, this.i_h);
  304.                } else if (var6 - var9 < this.field_1.height && this.m_size_pause[var12] == 2) {
  305.                   if (this.m_size_extra[var12]) {
  306.                      var6 = var6 + (this.field_1.height - (var6 - var9)) + 1 + (var6 - var9);
  307.                   } else {
  308.                      var6 = var6 + (this.field_1.height - (var6 - var9)) + 1;
  309.                   }
  310.  
  311.                   var10 = false;
  312.                }
  313.             } else {
  314.                this.g_off.setFont(this.m_cur_font[var12]);
  315.                this.field_0 = this.g_off.getFontMetrics(this.m_cur_font[var12]);
  316.                var7 = var6;
  317.                if (this.m_size_pause[var12] == 1) {
  318.                   var9 = var6;
  319.                   var10 = true;
  320.                } else if (!var10) {
  321.                   var9 = var6;
  322.                }
  323.  
  324.                this.line_coords[var12] = var6 + 1;
  325.                this.re_draw[var12] = var6;
  326.                String[] var15 = ocwordw.WrapText(this.m_desc[var12], this.field_1.width - this.m_xoffset * 2, this.field_0);
  327.  
  328.                for(int var13 = 0; var13 < var15.length; ++var13) {
  329.                   var6 += this.field_0.getHeight();
  330.                   this.g_off.setColor(this.m_textcolor[var12]);
  331.                   if (!this.m_cur_typeit[var12]) {
  332.                      if (this.m_halign[var12] == 1) {
  333.                         this.g_off.drawString(var15[var13], (this.field_1.width - this.field_0.stringWidth(var15[var13])) / 2, var6);
  334.                      } else if (this.m_halign[var12] == 0) {
  335.                         this.g_off.drawString(var15[var13], this.m_xoffset, var6);
  336.                      } else if (this.m_halign[var12] == 2) {
  337.                         this.g_off.drawString(var15[var13], this.field_1.width - this.field_0.stringWidth(var15[var13]) - this.m_xoffset, var6);
  338.                      }
  339.                   }
  340.                }
  341.  
  342.                if (this.m_linkurl[var12].length() > 3) {
  343.                   if (var12 == this.m_desc.length - 1) {
  344.                      var6 += this.field_0.getDescent();
  345.                   }
  346.  
  347.                   this.link_cords[var8 * 3] = var7;
  348.                   this.link_cords[var8 * 3 + 1] = var6;
  349.                   this.link_cords[var8 * 3 + 2] = var12;
  350.                   this.link_urls[var8] = this.m_linkurl[var12];
  351.                   ++var8;
  352.                }
  353.  
  354.                if (var12 != this.m_desc.length - 1 && var6 - var9 < this.field_1.height && this.m_size_pause[var12] == 2) {
  355.                   if (this.m_size_extra[var12]) {
  356.                      var6 = var6 + (this.field_1.height - (var6 - var9)) + 1 + (var6 - var9);
  357.                   } else {
  358.                      var6 = var6 + (this.field_1.height - (var6 - var9)) + 1;
  359.                   }
  360.  
  361.                   var10 = false;
  362.                }
  363.             }
  364.          }
  365.  
  366.          ++var11;
  367.       } while(var11 < 2);
  368.  
  369.       this.type_text = new String[var3.size()];
  370.       var3.copyInto(this.type_text);
  371.       this.type_coords = new int[var2.size()];
  372.       String[] var19 = new String[var2.size()];
  373.       var2.copyInto(var19);
  374.       this.type_id = new int[var2.size()];
  375.       String[] var20 = new String[var2.size()];
  376.       var4.copyInto(var20);
  377.       this.type_rel = new int[var2.size()];
  378.       String[] var22 = new String[var2.size()];
  379.       var5.copyInto(var22);
  380.  
  381.       for(int var14 = 0; var14 < var2.size(); ++var14) {
  382.          this.type_coords[var14] = new Integer(var19[var14]);
  383.          this.type_id[var14] = new Integer(var20[var14]);
  384.          this.type_rel[var14] = new Integer(var22[var14]);
  385.       }
  386.  
  387.       this.done_draw = true;
  388.    }
  389.  
  390.    public String CheckSPart(String var1) {
  391.       return var1.trim().length() == 0 ? " " : var1.trim();
  392.    }
  393.  
  394.    public void DrawType(int var1) {
  395.       int var2 = 0;
  396.       int var3 = 0;
  397.       Object var4 = null;
  398.       this.typefm = ((Component)this).getFontMetrics(this.m_cur_font[this.type_id[var1]]);
  399.       var3 = this.type_coords[var1] - this.typefm.getDescent() - this.m_bottom_margin;
  400.       if (this.type_id[var1] == this.old_line) {
  401.          ++this.desc_line;
  402.       } else {
  403.          this.desc_line = 1;
  404.          this.old_line = this.type_id[var1];
  405.       }
  406.  
  407.       if (this.m_halign[this.type_id[var1]] == 1) {
  408.          var2 = (this.field_1.width - this.typefm.stringWidth(this.type_text[var1])) / 2;
  409.       } else if (this.m_halign[this.type_id[var1]] == 0) {
  410.          var2 = this.m_xoffset;
  411.       }
  412.  
  413.       if (this.m_halign[this.type_id[var1]] == 2) {
  414.          var2 = this.field_1.width - this.typefm.stringWidth(this.type_text[var1]) - this.m_xoffset;
  415.       }
  416.  
  417.       this.typing = true;
  418.  
  419.       for(int var5 = this.type_index; var5 <= this.type_text[var1].length(); ++var5) {
  420.          this.type_index = var5;
  421.          Color var8;
  422.          if (this.type_id[var1] == this.hLine) {
  423.             var8 = this.m_def_hlcolor;
  424.          } else {
  425.             var8 = this.m_textcolor[this.type_id[var1]];
  426.          }
  427.  
  428.          this.UDraw(this.type_text[var1].substring(0, var5), var2, var3, this.m_cur_font[this.type_id[var1]], var8);
  429.  
  430.          try {
  431.             Thread.sleep((long)this.m_type_delay);
  432.          } catch (InterruptedException var6) {
  433.          }
  434.  
  435.          ((Component)this).getGraphics().drawImage(this.off, 0, this.scroll_y, this);
  436.       }
  437.  
  438.       this.type_index = 0;
  439.       this.typing = false;
  440.    }
  441.  
  442.    public boolean mouseDown(Event var1, int var2, int var3) {
  443.       this.mdown = true;
  444.       this.hold_move = this.field_2;
  445.       return true;
  446.    }
  447.  
  448.    private void chl(int var1) {
  449.       if (this.l_h != this.hLine) {
  450.          if (this.l_h != -1) {
  451.             this.method_0(this.l_h, false);
  452.             ((OCAviewerExtend)this).showStatus(this.m_sb_text);
  453.          }
  454.  
  455.          if (this.hLine != -1) {
  456.             this.method_0(this.hLine, true);
  457.             ((OCAviewerExtend)this).showStatus(this.link_urls[var1]);
  458.          }
  459.  
  460.          ((Component)this).getGraphics().drawImage(this.off, 0, this.scroll_y, this);
  461.       }
  462.  
  463.       this.l_h = this.hLine;
  464.    }
  465.  
  466.    public void run() {
  467.       while(true) {
  468.          this.ScrollIt(true);
  469.          this.mCheck();
  470.  
  471.          try {
  472.             Thread.sleep((long)this.m_scroll_delay);
  473.          } catch (InterruptedException var1) {
  474.          }
  475.       }
  476.    }
  477.  
  478.    public void init() {
  479.       String var1 = "Typewriter Scroll, Copyright (c) 1999, OpenCube Inc.";
  480.       this.field_1 = ((Component)this).size();
  481.       int var3 = 0;
  482.       this.scroll_y = this.field_1.height;
  483.       String var2 = ((OCAviewerExtend)this).getParameter("Notice");
  484.       if (var2 == null) {
  485.          this.m_sb_text = "Missing 'Notice' Tag";
  486.       } else {
  487.          String var4 = compkey.getKey(var2, ((OCAviewerExtend)this).getDocumentBase());
  488.          if (!var4.equals(var1)) {
  489.             if (var4.equals("-1")) {
  490.                this.m_sb_text = "Licence Error: Invalid URL";
  491.             } else {
  492.                this.m_sb_text = "Incorrect Copyright Notice in 'Notice' tag";
  493.             }
  494.          } else {
  495.             this.tag = true;
  496.             var2 = ((OCAviewerExtend)this).getParameter("font");
  497.             if (var2 != null) {
  498.                this.m_font = ocfontc.getFontSD(var2, ",");
  499.             } else {
  500.                this.m_font = new Font("Helvetica", 0, 12);
  501.             }
  502.  
  503.             var2 = ((OCAviewerExtend)this).getParameter("bottommargin");
  504.             if (var2 != null) {
  505.                this.m_bottom_margin = Integer.parseInt(var2);
  506.             }
  507.  
  508.             var2 = ((OCAviewerExtend)this).getParameter("typedelay");
  509.             if (var2 != null) {
  510.                this.m_type_delay = Integer.parseInt(var2);
  511.             }
  512.  
  513.             var2 = ((OCAviewerExtend)this).getParameter("scroll_jump");
  514.             if (var2 != null) {
  515.                this.m_jump = Integer.parseInt(var2);
  516.             }
  517.  
  518.             var2 = ((OCAviewerExtend)this).getParameter("extrasize");
  519.             if (var2 != null) {
  520.                this.m_def_size_extra = Boolean.valueOf(var2);
  521.             }
  522.  
  523.             var2 = ((OCAviewerExtend)this).getParameter("typemessage");
  524.             if (var2 != null) {
  525.                this.m_typeit = Boolean.valueOf(var2);
  526.             }
  527.  
  528.             var2 = ((OCAviewerExtend)this).getParameter("fontface");
  529.             if (var2 != null) {
  530.                this.m_def_fontface = var2;
  531.             }
  532.  
  533.             var2 = ((OCAviewerExtend)this).getParameter("loadwhere");
  534.             if (var2 != null) {
  535.                this.m_def_loadwhere = var2;
  536.             }
  537.  
  538.             var2 = ((OCAviewerExtend)this).getParameter("textcolor");
  539.             if (var2 != null) {
  540.                this.m_def_textcolor = occcolor.ConvertColor(var2);
  541.             }
  542.  
  543.             var2 = ((OCAviewerExtend)this).getParameter("bgcolor");
  544.             if (var2 != null) {
  545.                this.m_bgcolor = occcolor.ConvertColor(var2);
  546.             }
  547.  
  548.             ((Component)this).setBackground(this.m_bgcolor);
  549.             var2 = ((OCAviewerExtend)this).getParameter("scrolldelay");
  550.             if (var2 != null) {
  551.                this.m_scroll_delay = Integer.parseInt(var2);
  552.             }
  553.  
  554.             var2 = ((OCAviewerExtend)this).getParameter("lrmargins");
  555.             if (var2 != null) {
  556.                this.m_xoffset = Integer.parseInt(var2);
  557.             }
  558.  
  559.             var2 = ((OCAviewerExtend)this).getParameter("enddelay");
  560.             if (var2 != null) {
  561.                this.m_end_pause = Integer.parseInt(var2);
  562.             }
  563.  
  564.             var2 = ((OCAviewerExtend)this).getParameter("hlcolor");
  565.             if (var2 != null) {
  566.                this.m_def_hlcolor = occcolor.ConvertColor(var2);
  567.             }
  568.  
  569.             var2 = ((OCAviewerExtend)this).getParameter("halign");
  570.             if (var2 != null) {
  571.                this.m_def_halign = getAlignValue(var2);
  572.             }
  573.  
  574.             var2 = ((OCAviewerExtend)this).getParameter("onsbtext");
  575.             if (var2 != null) {
  576.                this.m_sb_text = var2;
  577.             }
  578.  
  579.             var2 = ((OCAviewerExtend)this).getParameter("offsbtext");
  580.             if (var2 != null) {
  581.                this.m_offsbtext = var2;
  582.             }
  583.  
  584.             var2 = ((OCAviewerExtend)this).getParameter("fontstyle");
  585.             if (var2 != null) {
  586.                this.font_style = this.FontType(var2);
  587.             }
  588.  
  589.             while(((OCAviewerExtend)this).getParameter("desc" + var3) != null) {
  590.                ++var3;
  591.                ++this.num_descrips;
  592.             }
  593.  
  594.             this.m_textcolor = new Color[this.num_descrips];
  595.             this.m_desc = new String[this.num_descrips];
  596.             this.m_linkurl = new String[this.num_descrips];
  597.             this.m_halign = new int[this.num_descrips];
  598.             this.m_loadwhere = new String[this.num_descrips];
  599.             this.m_size_pause = new int[this.num_descrips];
  600.             this.m_size_extra = new boolean[this.num_descrips];
  601.             this.m_cur_typeit = new boolean[this.num_descrips];
  602.             this.m_cur_font = new Font[this.num_descrips];
  603.             this.line_coords = new int[this.num_descrips];
  604.             this.re_draw = new int[this.num_descrips];
  605.  
  606.             for(int var32 = 0; var32 < this.num_descrips; ++var32) {
  607.                var2 = ((OCAviewerExtend)this).getParameter("font" + var32);
  608.                if (var2 != null) {
  609.                   this.m_cur_font[var32] = ocfontc.getFontSD(var2, ",");
  610.                } else {
  611.                   this.m_cur_font[var32] = this.m_font;
  612.                }
  613.  
  614.                var2 = ((OCAviewerExtend)this).getParameter("desc" + var32);
  615.                if (var2 != null) {
  616.                   this.m_desc[var32] = var2;
  617.                } else {
  618.                   this.m_desc[var32] = " ";
  619.                }
  620.  
  621.                var2 = ((OCAviewerExtend)this).getParameter("loadwhere" + var32);
  622.                if (var2 != null) {
  623.                   this.m_loadwhere[var32] = var2;
  624.                } else {
  625.                   this.m_loadwhere[var32] = this.m_def_loadwhere;
  626.                }
  627.  
  628.                var2 = ((OCAviewerExtend)this).getParameter("halign" + var32);
  629.                if (var2 != null) {
  630.                   this.m_halign[var32] = getAlignValue(var2);
  631.                } else {
  632.                   this.m_halign[var32] = this.m_def_halign;
  633.                }
  634.  
  635.                var2 = ((OCAviewerExtend)this).getParameter("textcolor" + var32);
  636.                if (var2 != null) {
  637.                   this.m_textcolor[var32] = occcolor.ConvertColor(var2);
  638.                } else {
  639.                   this.m_textcolor[var32] = this.m_def_textcolor;
  640.                }
  641.  
  642.                var2 = ((OCAviewerExtend)this).getParameter("desturl" + var32);
  643.                if (var2 != null) {
  644.                   ++this.num_links;
  645.                   this.m_linkurl[var32] = var2;
  646.                } else {
  647.                   this.m_linkurl[var32] = "-1";
  648.                }
  649.  
  650.                var2 = ((OCAviewerExtend)this).getParameter("sizepause" + var32);
  651.                if (var2 != null) {
  652.                   this.m_size_pause[var32] = getAutoValue(var2);
  653.                } else {
  654.                   this.m_size_pause[var32] = 0;
  655.                }
  656.  
  657.                var2 = ((OCAviewerExtend)this).getParameter("extrasize" + var32);
  658.                if (var2 != null) {
  659.                   this.m_size_extra[var32] = Boolean.valueOf(var2);
  660.                } else {
  661.                   this.m_size_extra[var32] = this.m_def_size_extra;
  662.                }
  663.  
  664.                var2 = ((OCAviewerExtend)this).getParameter("typemessage" + var32);
  665.                if (var2 != null) {
  666.                   this.m_cur_typeit[var32] = Boolean.valueOf(var2);
  667.                } else {
  668.                   this.m_cur_typeit[var32] = this.m_typeit;
  669.                }
  670.             }
  671.  
  672.             this.link_cords = new int[this.num_links * 3];
  673.             this.link_urls = new String[this.num_links];
  674.             this.DrawScroll();
  675.          }
  676.       }
  677.    }
  678.  
  679.    static int getAutoValue(String var0) {
  680.       if (var0.equalsIgnoreCase("end")) {
  681.          return 2;
  682.       } else if (var0.equalsIgnoreCase("fit")) {
  683.          return 2;
  684.       } else {
  685.          return var0.equalsIgnoreCase("start") ? 1 : 0;
  686.       }
  687.    }
  688.  
  689.    public synchronized void UDraw(String var1, int var2, int var3, Font var4, Color var5) {
  690.       this.g_off.setFont(var4);
  691.       this.g_off.setColor(var5);
  692.       this.g_off.drawString(var1, var2, var3);
  693.    }
  694.  
  695.    // $FF: renamed from: HL (int, boolean) void
  696.    public synchronized void method_0(int var1, boolean var2) {
  697.       int var3 = this.re_draw[var1];
  698.       int var4 = 0;
  699.       Object var5 = null;
  700.       int var6 = 0;
  701.       int var7 = 0;
  702.       this.hlfm = ((Component)this).getFontMetrics(this.m_cur_font[var1]);
  703.       Color var14;
  704.       if (var2) {
  705.          var14 = this.m_def_hlcolor;
  706.       } else {
  707.          var14 = this.m_textcolor[var1];
  708.       }
  709.  
  710.       String[] var8 = ocwordw.WrapText(this.m_desc[var1], this.field_1.width - this.m_xoffset * 2, this.hlfm);
  711.       int var9 = var8.length * this.hlfm.getHeight() + this.hlfm.getDescent();
  712.       this.hloff = ((Component)this).createImage(this.field_1.width, var9);
  713.       this.g_hloff = this.hloff.getGraphics();
  714.       this.g_hloff.setColor(this.m_bgcolor);
  715.       this.g_hloff.fillRect(0, 0, this.field_1.width, var9);
  716.       this.g_hloff.setColor(var14);
  717.       this.g_hloff.setFont(this.m_cur_font[var1]);
  718.       var4 = -this.hlfm.getDescent();
  719.       if (this.type_id[this.type_line] >= var1) {
  720.          if (this.type_id[this.type_line] != var1) {
  721.             for(int var18 = 0; var18 < var8.length; ++var18) {
  722.                var4 += this.hlfm.getHeight();
  723.                if (this.m_halign[var1] == 1) {
  724.                   this.g_hloff.drawString(var8[var18], (this.field_1.width - this.hlfm.stringWidth(var8[var18])) / 2, var4);
  725.                } else if (this.m_halign[var1] == 0) {
  726.                   this.g_hloff.drawString(var8[var18], this.m_xoffset, var4);
  727.                }
  728.  
  729.                if (this.m_halign[var1] == 2) {
  730.                   this.g_hloff.drawString(var8[var18], this.field_1.width - this.hlfm.stringWidth(var8[var18]) - this.m_xoffset, var4);
  731.                }
  732.             }
  733.  
  734.             this.g_off.drawImage(this.hloff, 0, var3 + this.hlfm.getDescent(), this);
  735.          } else {
  736.             if (this.end_pause) {
  737.                for(int var10 = 0; var10 < var8.length; ++var10) {
  738.                   var4 += this.hlfm.getHeight();
  739.                   if (this.m_halign[var1] == 1) {
  740.                      this.g_hloff.drawString(var8[var10], (this.field_1.width - this.hlfm.stringWidth(var8[var10])) / 2, var4);
  741.                   } else if (this.m_halign[var1] == 0) {
  742.                      this.g_hloff.drawString(var8[var10], this.m_xoffset, var4);
  743.                   }
  744.  
  745.                   if (this.m_halign[var1] == 2) {
  746.                      this.g_hloff.drawString(var8[var10], this.field_1.width - this.hlfm.stringWidth(var8[var10]) - this.m_xoffset, var4);
  747.                   }
  748.                }
  749.  
  750.                this.g_off.drawImage(this.hloff, 0, var3 + this.hlfm.getDescent(), this);
  751.             }
  752.  
  753.             byte var17 = 1;
  754.             var6 = this.desc_line;
  755.             var7 = this.type_index;
  756.             if (this.typing || this.type_id[this.type_line] == this.m_desc.length) {
  757.                for(int var11 = 0; var11 < var6 - var17; ++var11) {
  758.                   var4 += this.hlfm.getHeight();
  759.                   if (this.m_halign[var1] == 1) {
  760.                      this.g_hloff.drawString(var8[var11], (this.field_1.width - this.hlfm.stringWidth(var8[var11])) / 2, var4);
  761.                   } else if (this.m_halign[var1] == 0) {
  762.                      this.g_hloff.drawString(var8[var11], this.m_xoffset, var4);
  763.                   }
  764.  
  765.                   if (this.m_halign[var1] == 2) {
  766.                      this.g_hloff.drawString(var8[var11], this.field_1.width - this.hlfm.stringWidth(var8[var11]) - this.m_xoffset, var4);
  767.                   }
  768.                }
  769.  
  770.                if (this.typing) {
  771.                   var4 += this.hlfm.getHeight();
  772.                   if (this.m_halign[var1] == 1) {
  773.                      this.g_hloff.drawString(var8[var6 - 1].substring(0, var7), (this.field_1.width - this.field_0.stringWidth(var8[var6 - 1])) / 2, var4);
  774.                   } else if (this.m_halign[var1] == 0) {
  775.                      this.g_hloff.drawString(var8[var6 - 1].substring(0, var7), this.m_xoffset, var4);
  776.                   }
  777.  
  778.                   if (this.m_halign[var1] == 2) {
  779.                      this.g_hloff.drawString(var8[var6 - 1].substring(0, var7), this.field_1.width - this.field_0.stringWidth(var8[var6 - 1]) - this.m_xoffset, var4);
  780.                   }
  781.                }
  782.  
  783.                this.g_off.drawImage(this.hloff, 0, var3 + this.hlfm.getDescent(), this);
  784.             }
  785.          }
  786.       }
  787.    }
  788.  
  789.    public int FontType(String var1) {
  790.       int var2 = 0;
  791.       if (var1.equalsIgnoreCase("bold")) {
  792.          ++var2;
  793.       }
  794.  
  795.       if (var1.equalsIgnoreCase("bolditalic")) {
  796.          var2 += 3;
  797.       }
  798.  
  799.       if (var1.equalsIgnoreCase("italic")) {
  800.          var2 += 2;
  801.       }
  802.  
  803.       return var2;
  804.    }
  805. }
  806.