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

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