home *** CD-ROM | disk | FTP | other *** search
/ Internet Magazine 2002 June / INTERNET92.ISO / pc / software / windows / building / visual_dhtml / visualdhtmlwin9x_nt.exe / slidem.___ (.txt) < prev    next >
Encoding:
Java Class File  |  2001-10-19  |  20.3 KB  |  1,658 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.awt.MediaTracker;
  11. import java.net.MalformedURLException;
  12. import java.net.URL;
  13. import java.util.Stack;
  14. import java.util.Vector;
  15.  
  16. public class slidem extends OCAviewerExtend implements Runnable {
  17.    Thread trun;
  18.    boolean clickloaded;
  19.    boolean moveloaded;
  20.    int usub_h = -1;
  21.    boolean mu_h = false;
  22.    boolean mouse_in = true;
  23.    String prev_url = "-1";
  24.    Font sub_font;
  25.    FontMetrics fm_sub_font;
  26.    Font main_font;
  27.    FontMetrics fm_main_font;
  28.    int max_subs = 0;
  29.    int break_picload = 0;
  30.    int break_pictype = 0;
  31.    int break_up = 0;
  32.    int last_bitstart = -1;
  33.    int addB = 0;
  34.    int mStart = 0;
  35.    int last_bs;
  36.    int cur_expand = -1;
  37.    int break_bgload;
  38.    URL goURL;
  39.    // $FF: renamed from: d java.awt.Dimension
  40.    Dimension field_0;
  41.    Image[] suboff;
  42.    Graphics[] g_suboff;
  43.    Image bitoff;
  44.    Graphics g_bitoff;
  45.    Image mainoff;
  46.    Graphics g_mainoff;
  47.    // $FF: renamed from: ts java.awt.Image
  48.    Image field_1;
  49.    Graphics g_ts;
  50.    int menux;
  51.    int menuy;
  52.    int menuwidth;
  53.    int menuheight;
  54.    int extra_length;
  55.    int level_max;
  56.    int max_open;
  57.    int bitheight;
  58.    int on_sub_num = 0;
  59.    int last_sub;
  60.    boolean sub_highlighted = false;
  61.    boolean tag = false;
  62.    boolean first_run = true;
  63.    private boolean m_check_previous_link = false;
  64.    private String m_loadwhere = "_self";
  65.    private String[] m_main_desturl;
  66.    private Color m_bgcolor;
  67.    private int m_jump_size;
  68.    private int m_delay;
  69.    private boolean m_tile_menus_only;
  70.    private int m_top_offset;
  71.    private boolean m_hl_text_only;
  72.    private boolean m_retract_from_offscreen;
  73.    private int m_sub_indent;
  74.    private int m_sub_height;
  75.    private Color m_sub_color;
  76.    private Color m_sub_textcolor;
  77.    private Color m_sub_hlcolor;
  78.    private Color m_sub_hltextcolor;
  79.    private Color m_sub_hlocolor;
  80.    boolean[] gif_tile;
  81.    private String m_sub_bgfile;
  82.    private Image m_subbg;
  83.    private boolean m_bgfile_stat;
  84.    private int m_sub_icon_indent;
  85.    private String m_load_msg;
  86.    private Color m_load_msgcolor;
  87.    private Color[] mc_sub_color;
  88.    private Color[] mc_sub_textcolor;
  89.    private Color[] mc_sub_hlcolor;
  90.    private Color[] mc_sub_hltextcolor;
  91.    private Color[] mc_sub_hlocolor;
  92.    private String[] mc_sub_bgfile;
  93.    private boolean[] mc_bgfile_stat;
  94.    private Image[] mc_subbg;
  95.    private Color[] mcu_sub_hlcolor;
  96.    private Color[] mcu_sub_hltextcolor;
  97.    private Color[] mcu_sub_hlocolor;
  98.    private Color mu_sub_hlcolor;
  99.    private Color mu_sub_hltextcolor;
  100.    private Color mu_sub_hlocolor;
  101.    private String m_onsbtext;
  102.    private String m_offsbtext;
  103.    private String[] m_icon_file;
  104.    private String[] m_switchfile;
  105.    private String[] m_switchufile;
  106.    private int[] m_pic_ycord;
  107.    private String[] m_maindesc;
  108.    private int[] m_mainicon;
  109.    private int m_main_height;
  110.    private int m_main_indent;
  111.    private int m_main_icon_indent;
  112.    private String m_main_bgfile;
  113.    private boolean main_gif_tile;
  114.    private Image m_main_bgimage;
  115.    private boolean m_tile_bg;
  116.    private Color m_main_textcolor;
  117.    private Color m_main_ocolor;
  118.    private Color m_main_hltextcolor;
  119.    private Color m_main_hlocolor;
  120.    private Color m_main_hlbgcolor;
  121.    private Color mu_main_hltextcolor;
  122.    private Color mu_main_hlocolor;
  123.    private Color mu_main_hlbgcolor;
  124.    int last_drawn;
  125.    int last_level;
  126.    int num_main;
  127.    int num_icons;
  128.    int add_m;
  129.    boolean[] no_subs;
  130.    String[] subs;
  131.    String[] p_subs;
  132.    int[] ItoM;
  133.    Image[] i_pic;
  134.    Image[] s_pic;
  135.    Image[] u_pic;
  136.    int cur_level;
  137.    int real_level;
  138.    boolean[] i_pic_stat;
  139.    boolean[] s_pic_stat;
  140.    boolean[] u_pic_stat;
  141.    int[] menu_coords;
  142.    String cur_link;
  143.  
  144.    public String[] getIdandText(String var1) {
  145.       Object var2 = null;
  146.       Object var3 = null;
  147.       int var4 = var1.indexOf("|");
  148.       String var6;
  149.       String var7;
  150.       if (var4 > 0) {
  151.          if (var4 < var1.length()) {
  152.             var7 = var1.substring(0, var4);
  153.             var6 = var1.substring(var4 + 1);
  154.          } else {
  155.             var6 = var1;
  156.             var7 = "-1";
  157.          }
  158.       } else {
  159.          var6 = var1;
  160.          var7 = "-1";
  161.       }
  162.  
  163.       String[] var5 = new String[]{var7, var6};
  164.       return var5;
  165.    }
  166.  
  167.    public void stop() {
  168.       this.trun.interrupt();
  169.    }
  170.  
  171.    public boolean mouseEnter(Event var1, int var2, int var3) {
  172.       this.mouse_in = true;
  173.       if (!this.tag) {
  174.          ((OCAviewerExtend)this).showStatus(this.m_onsbtext);
  175.          return true;
  176.       } else {
  177.          if (this.first_run) {
  178.             ((OCAviewerExtend)this).showStatus("Loading Menu Images...");
  179.          } else {
  180.             ((OCAviewerExtend)this).showStatus(this.m_onsbtext);
  181.          }
  182.  
  183.          return true;
  184.       }
  185.    }
  186.  
  187.    public void USubHighlight(int var1, int var2, int var3) {
  188.       this.UndoH();
  189.       ++var3;
  190.       this.usub_h = var2;
  191.       this.last_sub = var1;
  192.       this.last_level = var2;
  193.       this.last_bitstart = var3;
  194.       int var4 = this.menu_coords[var2 * 7 + 6];
  195.       Color var5 = this.mu_sub_hlcolor;
  196.       Color var6 = this.mu_sub_hlocolor;
  197.       Color var7 = this.mu_sub_hltextcolor;
  198.       if (var2 > 0) {
  199.          var5 = this.mcu_sub_hlcolor[var2 - 1];
  200.          var6 = this.mcu_sub_hlocolor[var2 - 1];
  201.          var7 = this.mcu_sub_hltextcolor[var2 - 1];
  202.       }
  203.  
  204.       int var8 = this.m_sub_indent;
  205.       if (this.m_sub_icon_indent < 0) {
  206.          var8 = this.m_sub_indent - this.m_sub_icon_indent + 1;
  207.       }
  208.  
  209.       if (this.m_hl_text_only) {
  210.          var8 = 3;
  211.       }
  212.  
  213.       int var9 = this.menu_coords[var2 * 7] - var8;
  214.       this.g_bitoff.drawImage(this.field_1, 0, -var3, this);
  215.       if (var5 != null) {
  216.          this.g_bitoff.setColor(var5);
  217.          this.g_bitoff.fillRect(var9, 0, this.field_0.width - var9, this.bitheight);
  218.       }
  219.  
  220.       if (var6 != null) {
  221.          this.g_bitoff.setColor(var6);
  222.          this.g_bitoff.drawRect(var9, 0, this.field_0.width - (var9 + 1), this.bitheight);
  223.       }
  224.  
  225.       String var10 = this.subs[var4 + var1 * 4 + 1];
  226.       int var11 = Integer.parseInt(this.subs[var4 + var1 * 4 + 2]);
  227.       if (this.u_pic != null && var11 > -1 && var11 < this.u_pic.length && this.u_pic[var11] != null) {
  228.          this.g_bitoff.drawImage(this.u_pic[var11], this.menu_coords[var2 * 7] - this.m_sub_indent + this.m_sub_icon_indent, this.bitheight / 2 - this.u_pic[var11].getHeight(this) / 2, this);
  229.       }
  230.  
  231.       this.g_bitoff.setColor(var7);
  232.       this.g_bitoff.drawString(var10, this.menu_coords[var2 * 7], this.bitheight / 2 - this.fm_sub_font.getHeight() / 2 + this.fm_sub_font.getAscent());
  233.       ((Component)this).getGraphics().drawImage(this.bitoff, 0, var3, this);
  234.    }
  235.  
  236.    public synchronized void UndoSubHighlight() {
  237.       ((Component)this).getGraphics().drawImage(this.field_1, 0, 0, this);
  238.       this.usub_h = -1;
  239.       this.sub_highlighted = false;
  240.       this.last_sub = -1;
  241.       this.last_level = -1;
  242.    }
  243.  
  244.    public synchronized void checkMouse(int var1, int var2, boolean var3) {
  245.       int var4 = 0;
  246.       if (this.cur_expand > -1 && this.cur_level > -1 && var2 < this.m_pic_ycord[this.cur_expand] + this.m_main_height + this.add_m && var2 > this.m_pic_ycord[this.cur_expand] + this.m_main_height) {
  247.          this.mStart = this.m_pic_ycord[this.cur_expand] + this.m_main_height;
  248.          int var5 = (var2 - this.mStart) / this.bitheight + 1;
  249.          int var6 = this.menu_coords[this.cur_level * 7 + 1] + this.menu_coords[this.cur_level * 7 + 3] - 1;
  250.          int var7 = this.addB + this.menu_coords[this.cur_level * 7 + 4];
  251.          int var8 = 0;
  252.          if (var2 > var6) {
  253.             for(int var12 = this.cur_level - 1; var12 >= 0; --var12) {
  254.                var4 = var12 * 7;
  255.                var7 += this.menu_coords[var4 + 4] - this.menu_coords[var4 + 7 + 5];
  256.                if (var5 <= var7) {
  257.                   this.real_level = var12;
  258.                   this.MouseInSub(this.menu_coords[var4 + 4] - (var7 - var5), var3, var5);
  259.                   return;
  260.                }
  261.             }
  262.  
  263.          } else if (var2 > this.menu_coords[this.cur_level * 7 + 1]) {
  264.             this.real_level = this.cur_level;
  265.             this.MouseInSub(var5 - this.addB, var3, var5);
  266.          } else {
  267.             for(int var9 = 0; var9 < this.cur_level; ++var9) {
  268.                var4 = var9 * 7;
  269.                if (var5 <= var8 + this.menu_coords[var4 + 7 + 5]) {
  270.                   this.real_level = var9;
  271.                   this.MouseInSub(var5 - var8, var3, var5);
  272.                   return;
  273.                }
  274.  
  275.                var8 += this.menu_coords[var4 + 7 + 5];
  276.             }
  277.  
  278.          }
  279.       } else {
  280.          this.real_level = -1;
  281.          if (this.sub_highlighted || this.usub_h > -1) {
  282.             this.UndoSubHighlight();
  283.          }
  284.  
  285.          this.on_sub_num = -1;
  286.          if (this.cur_expand > -1) {
  287.             if (!this.MouseInMain(var2, var3, 0, this.cur_expand + 1, 0)) {
  288.                this.MouseInMain(var2, var3, this.cur_expand + 1, this.num_main, this.add_m);
  289.             }
  290.  
  291.          } else {
  292.             if (!this.MouseInMain(var2, var3, 0, this.num_main, 0)) {
  293.                this.UndoH();
  294.             }
  295.  
  296.          }
  297.       }
  298.    }
  299.  
  300.    public void UHighlightPic(int var1, int var2) {
  301.       this.g_mainoff.drawImage(this.field_1, 0, -var2, this);
  302.       if (this.mu_main_hlbgcolor != null) {
  303.          this.g_mainoff.setColor(this.mu_main_hlbgcolor);
  304.          this.g_mainoff.fillRect(0, 0, this.field_0.width, this.m_main_height);
  305.       }
  306.  
  307.       if (this.i_pic != null && this.m_mainicon[var1] > -1 && this.m_mainicon[var1] < this.i_pic.length && this.i_pic[this.m_mainicon[var1]] != null) {
  308.          this.g_mainoff.drawImage(this.u_pic[this.m_mainicon[var1]], this.m_main_icon_indent, this.m_main_height / 2 - this.u_pic[this.m_mainicon[var1]].getHeight(this) / 2, this);
  309.       }
  310.  
  311.       if (this.mu_main_hlocolor != null) {
  312.          this.g_mainoff.setColor(this.mu_main_hlocolor);
  313.          this.g_mainoff.drawRect(0, 0, this.field_0.width - 1, this.m_main_height);
  314.       }
  315.  
  316.       this.g_mainoff.setColor(this.mu_main_hltextcolor);
  317.       this.g_mainoff.drawString(this.m_maindesc[var1], this.m_main_indent, this.m_main_height / 2 - this.fm_main_font.getHeight() / 2 + this.fm_main_font.getAscent());
  318.       ((Component)this).getGraphics().drawImage(this.mainoff, 0, var2, this);
  319.       this.mu_h = true;
  320.    }
  321.  
  322.    public boolean mouseExit(Event var1, int var2, int var3) {
  323.       this.mouse_in = true;
  324.       if (!this.sub_highlighted && this.usub_h <= -1) {
  325.          if (this.last_drawn != -1) {
  326.             ((Component)this).getGraphics().drawImage(this.field_1, 0, 0, this);
  327.             this.last_drawn = -1;
  328.          }
  329.       } else {
  330.          this.UndoSubHighlight();
  331.          this.on_sub_num = -1;
  332.       }
  333.  
  334.       if (!this.tag) {
  335.          ((OCAviewerExtend)this).showStatus(this.m_onsbtext);
  336.          return true;
  337.       } else {
  338.          if (this.first_run) {
  339.             ((OCAviewerExtend)this).showStatus("Loading Menu Images...");
  340.          } else {
  341.             ((OCAviewerExtend)this).showStatus(this.m_offsbtext);
  342.          }
  343.  
  344.          return true;
  345.       }
  346.    }
  347.  
  348.    public synchronized void growSub(int var1, int var2) {
  349.       int var3 = 0;
  350.       int var4 = this.menu_coords[var1 * 7 + 3];
  351.       int var5 = this.menu_coords[var1 * 7 + 1] + 1;
  352.       this.add_m += var4;
  353.       this.addB += var2;
  354.       this.g_ts.clipRect(0, var5, this.field_0.width, this.field_0.height + this.extra_length - var5);
  355.       Image var6 = ((Component)this).createImage(this.field_0.width, this.field_0.height + this.extra_length - var5);
  356.       Graphics var7 = var6.getGraphics();
  357.       var7.drawImage(this.field_1, 0, -var5, this);
  358.  
  359.       for(int var9 = var5; var9 < var5 + var4 + 1; var9 += this.m_jump_size) {
  360.          this.g_ts.drawImage(this.suboff[var1], 0, var9 - var4, this);
  361.          this.g_ts.drawImage(var6, 0, var9, this);
  362.          ((Component)this).getGraphics().drawImage(this.field_1, 0, 0, this);
  363.  
  364.          try {
  365.             Thread.sleep((long)this.m_delay);
  366.          } catch (InterruptedException var8) {
  367.          }
  368.       }
  369.  
  370.       var3 = var5 + var4;
  371.       if (this.m_jump_size > 1) {
  372.          this.g_ts.drawImage(this.suboff[var1], 0, var3 - var4, this);
  373.          this.g_ts.drawImage(var6, 0, var3, this);
  374.          ((Component)this).getGraphics().drawImage(this.field_1, 0, 0, this);
  375.       }
  376.  
  377.       this.g_ts = this.field_1.getGraphics();
  378.       System.gc();
  379.    }
  380.  
  381.    public void ExpandSub(boolean var1, int var2) {
  382.       if (var1) {
  383.          if (!this.no_subs[var2] && this.cur_level > -1) {
  384.             for(int var3 = this.cur_level; var3 > this.real_level; --var3) {
  385.                this.shrinkSub(var3);
  386.             }
  387.          }
  388.  
  389.          if (!this.drawMainMenu(var2)) {
  390.             this.cur_link = this.m_main_desturl[var2];
  391.             return;
  392.          }
  393.  
  394.          this.cur_link = this.m_main_desturl[var2];
  395.          this.growSub(this.cur_level, 0);
  396.          this.mu_h = false;
  397.          this.cur_expand = var2;
  398.       }
  399.  
  400.    }
  401.  
  402.    public void paint(Graphics var1) {
  403.       this.paintIt(var1);
  404.    }
  405.  
  406.    public boolean MouseInMain(int var1, boolean var2, int var3, int var4, int var5) {
  407.       for(int var6 = var3; var6 < var4; ++var6) {
  408.          if (var1 > this.m_pic_ycord[var6] + var5 && var1 < this.m_pic_ycord[var6] + this.m_main_height + var5) {
  409.             if (var6 != this.cur_expand) {
  410.                if (var6 != this.last_drawn) {
  411.                   ((Component)this).getGraphics().drawImage(this.field_1, 0, 0, this);
  412.                   this.last_drawn = var6;
  413.                   if (var2) {
  414.                      this.ExpandSub(var2, var6);
  415.                   } else {
  416.                      this.HighlightPic(var6, this.m_pic_ycord[var6] + var5);
  417.                   }
  418.  
  419.                   return true;
  420.                }
  421.             } else {
  422.                if (!this.mu_h || var6 != this.last_drawn) {
  423.                   this.UndoH();
  424.                }
  425.  
  426.                if (var6 != this.last_drawn) {
  427.                   this.UHighlightPic(var6, this.m_pic_ycord[var6] + var5);
  428.                   this.last_drawn = var6;
  429.                }
  430.             }
  431.  
  432.             if (var2) {
  433.                if (var6 != this.cur_expand) {
  434.                   this.ExpandSub(var2, var6);
  435.                } else {
  436.                   if (this.cur_level != -1) {
  437.                      for(int var7 = this.cur_level; var7 > this.real_level; --var7) {
  438.                         this.shrinkSub(var7);
  439.                      }
  440.  
  441.                      this.mu_h = false;
  442.                      this.cur_level = -1;
  443.                      this.cur_expand = -1;
  444.                      this.HighlightPic(var6, this.m_pic_ycord[var6] + var5);
  445.                      this.cur_link = "-1";
  446.                      return true;
  447.                   }
  448.  
  449.                   if (!this.drawMainMenu(var6)) {
  450.                      this.cur_link = this.m_main_desturl[var6];
  451.                   } else {
  452.                      this.growSub(this.cur_level, 0);
  453.                      this.cur_expand = var6;
  454.                   }
  455.                }
  456.             }
  457.  
  458.             return true;
  459.          }
  460.       }
  461.  
  462.       return false;
  463.    }
  464.  
  465.    public Image trackReturn(String var1) {
  466.       ocgifix var2 = new ocgifix();
  467.       Object var3 = null;
  468.       MediaTracker var4 = new MediaTracker(this);
  469.       if (!var1.equals("-1")) {
  470.          Image var6 = ((Applet)this).getImage(((OCAviewerExtend)this).getDocumentBase(), var1);
  471.          if (var6 != null) {
  472.             var4.addImage(var6, 0);
  473.  
  474.             try {
  475.                var4.waitForID(0);
  476.             } catch (InterruptedException var5) {
  477.                return null;
  478.             }
  479.  
  480.             if (var4.isErrorID(0)) {
  481.                System.out.println("Error Loading Image File:" + var1);
  482.                return null;
  483.             } else {
  484.                var6 = var2.gifix(var6, var1);
  485.                return var6;
  486.             }
  487.          } else {
  488.             return null;
  489.          }
  490.       } else {
  491.          return null;
  492.       }
  493.    }
  494.  
  495.    public boolean mouseUp(Event var1, int var2, int var3) {
  496.       if (this.first_run) {
  497.          return true;
  498.       } else {
  499.          this.checkMouse(var2, var3, false);
  500.          return true;
  501.       }
  502.    }
  503.  
  504.    public slidem() {
  505.       this.m_bgcolor = Color.white;
  506.       this.m_jump_size = 2;
  507.       this.m_delay = 10;
  508.       this.m_tile_menus_only = true;
  509.       this.m_top_offset = 0;
  510.       this.m_hl_text_only = false;
  511.       this.m_retract_from_offscreen = true;
  512.       this.m_sub_indent = 40;
  513.       this.m_sub_height = -1;
  514.       this.m_sub_color = Color.yellow;
  515.       this.m_sub_textcolor = Color.black;
  516.       this.m_sub_hlcolor = null;
  517.       this.m_sub_hltextcolor = Color.red;
  518.       this.m_sub_hlocolor = null;
  519.       this.m_sub_icon_indent = 1;
  520.       this.m_load_msg = "Loading Images...";
  521.       this.m_load_msgcolor = Color.white;
  522.       this.mu_sub_hlcolor = null;
  523.       this.mu_sub_hltextcolor = Color.red;
  524.       this.mu_sub_hlocolor = null;
  525.       this.m_onsbtext = "OpenCube - Sliding Tree Menu";
  526.       this.m_offsbtext = "Java by OpenCube";
  527.       this.m_main_height = -1;
  528.       this.m_main_indent = 10;
  529.       this.m_main_icon_indent = 1;
  530.       this.m_main_bgfile = "-1";
  531.       this.main_gif_tile = false;
  532.       this.m_tile_bg = true;
  533.       this.m_main_textcolor = Color.black;
  534.       this.m_main_ocolor = null;
  535.       this.m_main_hltextcolor = Color.red;
  536.       this.m_main_hlocolor = null;
  537.       this.m_main_hlbgcolor = null;
  538.       this.mu_main_hltextcolor = Color.red;
  539.       this.mu_main_hlocolor = null;
  540.       this.mu_main_hlbgcolor = null;
  541.       this.last_drawn = -1;
  542.       this.last_level = -1;
  543.       this.num_main = 0;
  544.       this.num_icons = 0;
  545.       this.cur_level = -1;
  546.       this.real_level = 0;
  547.       this.cur_link = "-1";
  548.    }
  549.  
  550.    public void paintIt(Graphics var1) {
  551.       if (!this.tag) {
  552.          var1.setColor(Color.black);
  553.          var1.drawString(this.m_onsbtext, 5, 20);
  554.       } else {
  555.          var1.drawImage(this.field_1, 0, 0, this);
  556.       }
  557.    }
  558.  
  559.    public boolean drawMainMenu(int var1) {
  560.       if (this.no_subs[var1]) {
  561.          return false;
  562.       } else {
  563.          int var2 = new Integer(this.p_subs[this.ItoM[var1] + 3]) - new Integer(this.p_subs[this.ItoM[var1] + 2]) + 1;
  564.          int var3 = new Integer(this.p_subs[this.ItoM[var1] + 2]) * 4;
  565.          this.addB = 0;
  566.          this.add_m = 0;
  567.          this.menux = this.m_main_indent + this.m_sub_indent;
  568.          this.menuy = this.m_pic_ycord[var1] + this.m_main_height;
  569.          this.menuwidth = this.field_0.width - (this.m_main_indent + this.m_sub_indent) - 1;
  570.          this.menuheight = var2 * this.bitheight;
  571.          this.menu_coords[0] = this.menux;
  572.          this.menu_coords[1] = this.menuy;
  573.          this.menu_coords[2] = this.menuwidth;
  574.          this.menu_coords[3] = this.menuheight;
  575.          this.menu_coords[4] = var2;
  576.          this.menu_coords[5] = var1;
  577.          this.menu_coords[6] = var3;
  578.          this.suboff[0] = ((Component)this).createImage(this.field_0.width, this.menuheight + 1);
  579.          this.g_suboff[0] = this.suboff[0].getGraphics();
  580.          this.g_suboff[0].setFont(this.sub_font);
  581.          Color var4 = this.mc_sub_color[0];
  582.          Color var5 = this.mc_sub_textcolor[0];
  583.          Image var6 = this.mc_subbg[0];
  584.          boolean var7 = this.mc_bgfile_stat[0];
  585.          this.g_suboff[0].setColor(var4);
  586.          this.g_suboff[0].fillRect(0, 0, this.field_0.width, this.menuheight);
  587.          if (var7) {
  588.             int var8 = 0;
  589.             int var9 = 0;
  590.             int var10 = this.m_subbg.getWidth(this);
  591.             int var11 = this.m_subbg.getHeight(this);
  592.             if (this.gif_tile[0]) {
  593.                var9 = -1;
  594.             }
  595.  
  596.             while(true) {
  597.                this.g_suboff[0].drawImage(var6, var8, var9, this);
  598.                var8 += var10;
  599.                if (var8 > this.field_0.width) {
  600.                   var8 = 0;
  601.                   var9 += var11;
  602.                   if (this.gif_tile[0]) {
  603.                      --var9;
  604.                   }
  605.  
  606.                   if (var9 > this.menuheight + 1) {
  607.                      break;
  608.                   }
  609.                }
  610.             }
  611.          }
  612.  
  613.          for(int var12 = 0; var12 < var2; ++var12) {
  614.             int var13 = Integer.parseInt(this.subs[var3 + var12 * 4 + 2]);
  615.             if (this.i_pic != null && var13 > -1 && var13 < this.i_pic.length && this.i_pic[var13] != null) {
  616.                this.g_suboff[0].drawImage(this.i_pic[var13], this.menux - this.m_sub_indent + this.m_sub_icon_indent, this.bitheight * var12 + this.bitheight / 2 - this.i_pic[var13].getHeight(this) / 2, this);
  617.             }
  618.  
  619.             this.g_suboff[0].setColor(var5);
  620.             this.g_suboff[0].drawString(this.subs[var3 + var12 * 4 + 1], this.menux, this.bitheight * var12 + this.bitheight / 2 - this.fm_sub_font.getHeight() / 2 + this.fm_sub_font.getAscent());
  621.          }
  622.  
  623.          this.cur_level = 0;
  624.          return true;
  625.       }
  626.    }
  627.  
  628.    public void destroy() {
  629.       if (this.trun != null) {
  630.          this.trun.stop();
  631.          this.trun = null;
  632.       }
  633.  
  634.    }
  635.  
  636.    public void HighlightPic(int var1, int var2) {
  637.       this.g_mainoff.drawImage(this.field_1, 0, -var2, this);
  638.       if (this.m_main_hlbgcolor != null) {
  639.          this.g_mainoff.setColor(this.m_main_hlbgcolor);
  640.          this.g_mainoff.fillRect(0, 0, this.field_0.width, this.m_main_height);
  641.       }
  642.  
  643.       if (this.i_pic != null && this.m_mainicon[var1] > -1 && this.m_mainicon[var1] < this.i_pic.length && this.i_pic[this.m_mainicon[var1]] != null) {
  644.          this.g_mainoff.drawImage(this.s_pic[this.m_mainicon[var1]], this.m_main_icon_indent, this.m_main_height / 2 - this.s_pic[this.m_mainicon[var1]].getHeight(this) / 2, this);
  645.       }
  646.  
  647.       if (this.m_main_hlocolor != null) {
  648.          this.g_mainoff.setColor(this.m_main_hlocolor);
  649.          this.g_mainoff.drawRect(0, 0, this.field_0.width - 1, this.m_main_height);
  650.       }
  651.  
  652.       this.g_mainoff.setColor(this.m_main_hltextcolor);
  653.       this.g_mainoff.drawString(this.m_maindesc[var1], this.m_main_indent, this.m_main_height / 2 - this.fm_main_font.getHeight() / 2 + this.fm_main_font.getAscent());
  654.       ((Component)this).getGraphics().drawImage(this.mainoff, 0, var2, this);
  655.    }
  656.  
  657.    public void FirstRun(Graphics var1) {
  658.       boolean var2 = false;
  659.       this.g_ts.setColor(this.m_bgcolor);
  660.       this.g_ts.fillRect(0, 0, this.field_0.width, this.field_0.height + this.extra_length + 1);
  661.       this.g_ts.setFont(new Font("Helvetica", 0, 11));
  662.       FontMetrics var3 = this.g_ts.getFontMetrics();
  663.       this.g_ts.setColor(this.m_load_msgcolor);
  664.       this.g_ts.drawString(this.m_load_msg, this.field_0.width / 2 - var3.stringWidth(this.m_load_msg) / 2, this.field_0.height / 2 + var3.getHeight() / 2);
  665.       ((Component)this).getGraphics().drawImage(this.field_1, 0, 0, this);
  666.  
  667.       for(int var4 = this.break_pictype; var4 < this.num_icons; this.break_pictype = var4++) {
  668.          if ((this.i_pic[var4] = this.trackReturn(this.m_icon_file[var4])) != null) {
  669.             this.i_pic_stat[var4] = true;
  670.          }
  671.       }
  672.  
  673.       for(int var5 = this.break_picload; var5 < this.num_icons; this.break_picload = var5++) {
  674.          if ((this.s_pic[var5] = this.trackReturn(this.m_switchfile[var5])) != null) {
  675.             this.s_pic_stat[var5] = true;
  676.          } else {
  677.             this.s_pic[var5] = this.i_pic[var5];
  678.          }
  679.       }
  680.  
  681.       for(int var6 = this.break_up; var6 < this.num_icons; this.break_up = var6++) {
  682.          if ((this.u_pic[var6] = this.trackReturn(this.m_switchufile[var6])) != null) {
  683.             this.u_pic_stat[var6] = true;
  684.          } else {
  685.             this.u_pic[var6] = this.i_pic[var6];
  686.          }
  687.       }
  688.  
  689.       if ((this.m_subbg = this.trackReturn(this.m_sub_bgfile)) != null) {
  690.          this.m_bgfile_stat = true;
  691.       }
  692.  
  693.       for(int var7 = this.break_bgload; var7 < this.level_max; this.break_bgload = var7++) {
  694.          if ((this.mc_subbg[var7] = this.trackReturn(this.mc_sub_bgfile[var7])) != null) {
  695.             this.mc_bgfile_stat[var7] = true;
  696.          }
  697.       }
  698.  
  699.       this.m_main_bgimage = this.trackReturn(this.m_main_bgfile);
  700.       ((Component)this).setBackground(this.m_bgcolor);
  701.       this.g_ts.setColor(this.m_bgcolor);
  702.       this.g_ts.fillRect(0, 0, this.field_0.width, this.field_0.height + this.extra_length + 1);
  703.       if (this.mouse_in) {
  704.          ((OCAviewerExtend)this).showStatus(this.m_onsbtext);
  705.       } else {
  706.          ((OCAviewerExtend)this).showStatus(this.m_offsbtext);
  707.       }
  708.    }
  709.  
  710.    public void MouseInSub(int var1, boolean var2, int var3) {
  711.       int var4 = this.mStart + this.bitheight * (var3 - 1);
  712.       if (this.real_level < this.cur_level) {
  713.          if (this.menu_coords[(this.real_level + 1) * 7 + 5] != var1) {
  714.             if (this.on_sub_num != var1 || this.real_level != this.last_level) {
  715.                if (this.sub_highlighted || this.usub_h > -1) {
  716.                   this.UndoSubHighlight();
  717.                }
  718.  
  719.                this.on_sub_num = var1;
  720.                this.SubHighlight(var1 - 1, this.real_level, var4, var2);
  721.             }
  722.  
  723.             this.on_sub_num = var1;
  724.             this.checkNextLevel(var2, this.menu_coords[this.real_level * 7 + 6], var1 - 1, var4);
  725.          } else {
  726.             if (this.sub_highlighted) {
  727.                this.UndoSubHighlight();
  728.             }
  729.  
  730.             if (this.usub_h != this.real_level) {
  731.                if (this.usub_h > -1) {
  732.                   this.UndoSubHighlight();
  733.                }
  734.  
  735.                this.USubHighlight(var1 - 1, this.real_level, var4);
  736.             } else {
  737.                if (var2) {
  738.                   for(int var5 = this.cur_level; var5 > this.real_level; --var5) {
  739.                      this.shrinkSub(var5);
  740.                   }
  741.  
  742.                   this.cur_level = this.real_level;
  743.                   this.SubHighlight(var1 - 1, this.real_level, var4, var2);
  744.                }
  745.  
  746.                this.on_sub_num = var1;
  747.             }
  748.          }
  749.       } else {
  750.          if (var1 != this.on_sub_num || this.last_level != this.cur_level) {
  751.             if (this.sub_highlighted || this.usub_h > -1) {
  752.                this.UndoSubHighlight();
  753.             }
  754.  
  755.             this.on_sub_num = var1;
  756.             this.SubHighlight(var1 - 1, this.cur_level, var4, var2);
  757.          }
  758.  
  759.          if (var2) {
  760.             this.on_sub_num = var1;
  761.             this.checkNextLevel(var2, this.menu_coords[this.cur_level * 7 + 6], var1 - 1, var4);
  762.          }
  763.  
  764.       }
  765.    }
  766.  
  767.    public synchronized void shrinkSub(int var1) {
  768.       int var2 = 0;
  769.       int var3 = this.menu_coords[var1 * 7 + 3];
  770.       int var4 = this.menu_coords[var1 * 7 + 1] + 1;
  771.       this.add_m -= var3;
  772.       this.last_bs = var4 - this.bitheight - 1;
  773.       this.addB -= this.menu_coords[var1 * 7 + 5];
  774.       this.g_ts.clipRect(0, var4, this.field_0.width, this.field_0.height + this.extra_length - var4);
  775.       Image var5 = ((Component)this).createImage(this.field_0.width, this.field_0.height + this.extra_length - var4 + this.m_jump_size);
  776.       Graphics var6 = var5.getGraphics();
  777.       var6.setColor(this.m_bgcolor);
  778.       var6.fillRect(0, 0, this.field_0.width, this.field_0.height + this.extra_length - var4 + this.m_jump_size);
  779.       var6.drawImage(this.field_1, 0, -var4, this);
  780.  
  781.       for(int var8 = var4; var8 > var4 - var3 - 1; var8 -= this.m_jump_size) {
  782.          this.g_ts.drawImage(var5, 0, var8, this);
  783.          ((Component)this).getGraphics().drawImage(this.field_1, 0, 0, this);
  784.  
  785.          try {
  786.             Thread.sleep((long)this.m_delay);
  787.          } catch (InterruptedException var7) {
  788.          }
  789.       }
  790.  
  791.       var2 = var4 - var3;
  792.       if (this.m_jump_size > 1) {
  793.          this.g_ts.drawImage(var5, 0, var2, this);
  794.          ((Component)this).getGraphics().drawImage(this.field_1, 0, 0, this);
  795.       }
  796.  
  797.       this.g_ts = this.field_1.getGraphics();
  798.    }
  799.  
  800.    public void start() {
  801.       if (this.tag) {
  802.          if (this.first_run) {
  803.             this.trun = new Thread(this);
  804.             this.trun.start();
  805.          } else {
  806.             this.trun.resume();
  807.          }
  808.       }
  809.    }
  810.  
  811.    public void SubHighlight(int var1, int var2, int var3, boolean var4) {
  812.       this.UndoH();
  813.       ++var3;
  814.       this.sub_highlighted = true;
  815.       this.last_sub = var1;
  816.       this.last_level = var2;
  817.       this.last_bitstart = var3;
  818.       int var5 = this.menu_coords[var2 * 7 + 6];
  819.       Color var6 = this.m_sub_hlcolor;
  820.       Color var7 = this.m_sub_hlocolor;
  821.       Color var8 = this.m_sub_hltextcolor;
  822.       var6 = this.mc_sub_hlcolor[var2];
  823.       var7 = this.mc_sub_hlocolor[var2];
  824.       var8 = this.mc_sub_hltextcolor[var2];
  825.       int var9 = this.m_sub_indent;
  826.       if (this.m_sub_icon_indent < 0) {
  827.          var9 = this.m_sub_indent - this.m_sub_icon_indent + 1;
  828.       }
  829.  
  830.       if (this.m_hl_text_only) {
  831.          var9 = 3;
  832.       }
  833.  
  834.       int var10 = this.menu_coords[var2 * 7] - var9;
  835.       this.g_bitoff.drawImage(this.field_1, 0, -var3, this);
  836.       if (var6 != null) {
  837.          this.g_bitoff.setColor(var6);
  838.          this.g_bitoff.fillRect(var10, 0, this.field_0.width - var10, this.bitheight);
  839.       }
  840.  
  841.       if (var7 != null) {
  842.          this.g_bitoff.setColor(var7);
  843.          this.g_bitoff.drawRect(var10, 0, this.field_0.width - (var10 + 1), this.bitheight);
  844.       }
  845.  
  846.       String var11 = this.subs[var5 + var1 * 4 + 1];
  847.       int var12 = Integer.parseInt(this.subs[var5 + var1 * 4 + 2]);
  848.       if (this.i_pic != null && var12 > -1 && var12 < this.i_pic.length && this.i_pic[var12] != null) {
  849.          this.g_bitoff.drawImage(this.s_pic[var12], this.menu_coords[var2 * 7] - this.m_sub_indent + this.m_sub_icon_indent, this.bitheight / 2 - this.s_pic[var12].getHeight(this) / 2, this);
  850.       }
  851.  
  852.       this.g_bitoff.setColor(var8);
  853.       this.g_bitoff.drawString(var11, this.menu_coords[var2 * 7], this.bitheight / 2 - this.fm_sub_font.getHeight() / 2 + this.fm_sub_font.getAscent());
  854.       ((Component)this).getGraphics().drawImage(this.bitoff, 0, var3, this);
  855.    }
  856.  
  857.    public boolean mouseDown(Event var1, int var2, int var3) {
  858.       if (this.first_run) {
  859.          return true;
  860.       } else {
  861.          this.checkMouse(var2, var3, true);
  862.          if (this.cur_link.equals("-1")) {
  863.             return true;
  864.          } else {
  865.             String var4 = "-1";
  866.             Object var5 = null;
  867.             int var6 = this.cur_link.indexOf("|");
  868.             String var9;
  869.             if (var6 > 0) {
  870.                if (var6 < this.cur_link.length() - 1) {
  871.                   var9 = this.cur_link.substring(0, var6);
  872.                   var4 = this.cur_link.substring(var6 + 1);
  873.                } else {
  874.                   var4 = this.cur_link;
  875.                   var9 = this.m_loadwhere;
  876.                }
  877.             } else {
  878.                var4 = this.cur_link;
  879.                var9 = this.m_loadwhere;
  880.             }
  881.  
  882.             if (!var4.equals("-1")) {
  883.                if (this.m_check_previous_link && this.prev_url.equals(var4)) {
  884.                   this.cur_link = "-1";
  885.                   return true;
  886.                }
  887.  
  888.                try {
  889.                   this.goURL = new URL(((OCAviewerExtend)this).getDocumentBase(), var4);
  890.                   ((Applet)this).getAppletContext().showDocument(this.goURL, var9);
  891.                   this.prev_url = var4;
  892.                } catch (MalformedURLException var7) {
  893.                }
  894.             }
  895.  
  896.             this.cur_link = "-1";
  897.             return true;
  898.          }
  899.       }
  900.    }
  901.  
  902.    public void run() {
  903.       while(true) {
  904.          if (this.first_run) {
  905.             ((OCAviewerExtend)this).showStatus("Loading Menu Images...");
  906.             this.FirstRun(((Component)this).getGraphics());
  907.             this.drawMain();
  908.             this.first_run = false;
  909.             this.paintIt(((Component)this).getGraphics());
  910.          }
  911.  
  912.          try {
  913.             Thread.sleep(200L);
  914.          } catch (InterruptedException var1) {
  915.          }
  916.       }
  917.    }
  918.  
  919.    public void init() {
  920.       String var1 = "Sliding Tree Menu, Copyright (c) 1999, OpenCube Inc.";
  921.       this.field_0 = ((Component)this).size();
  922.       boolean var3 = false;
  923.       String var2 = ((OCAviewerExtend)this).getParameter("Notice");
  924.       if (var2 == null) {
  925.          this.m_onsbtext = "Missing 'Notice' Tag";
  926.       } else {
  927.          String var4 = compkey.getKey(var2, ((OCAviewerExtend)this).getDocumentBase());
  928.          if (!var4.equals(var1)) {
  929.             if (var4.equals("-1")) {
  930.                this.m_onsbtext = "License Error: Invalid URL";
  931.             } else {
  932.                this.m_onsbtext = "Incorrect Copyright Notice in 'Notice' tag";
  933.             }
  934.          } else {
  935.             this.tag = true;
  936.             var2 = ((OCAviewerExtend)this).getParameter("subfont");
  937.             if (var2 != null) {
  938.                this.sub_font = ocfontc.getFontSD(var2, ",");
  939.             } else {
  940.                this.sub_font = new Font("Helvetica", 0, 12);
  941.             }
  942.  
  943.             var2 = ((OCAviewerExtend)this).getParameter("mfont");
  944.             if (var2 != null) {
  945.                this.main_font = ocfontc.getFontSD(var2, ",");
  946.             } else {
  947.                this.main_font = new Font("Helvetica", 0, 12);
  948.             }
  949.  
  950.             this.fm_sub_font = ((Component)this).getFontMetrics(this.sub_font);
  951.             this.fm_main_font = ((Component)this).getFontMetrics(this.main_font);
  952.             var2 = ((OCAviewerExtend)this).getParameter("mindent");
  953.             if (var2 != null) {
  954.                this.m_main_indent = Integer.parseInt(var2);
  955.             }
  956.  
  957.             var2 = ((OCAviewerExtend)this).getParameter("subindent");
  958.             if (var2 != null) {
  959.                this.m_sub_indent = Integer.parseInt(var2);
  960.             }
  961.  
  962.             var2 = ((OCAviewerExtend)this).getParameter("mheight");
  963.             if (var2 != null) {
  964.                this.m_main_height = Integer.parseInt(var2);
  965.             }
  966.  
  967.             if (this.m_main_height < 1) {
  968.                this.m_main_height = this.fm_main_font.getHeight();
  969.             }
  970.  
  971.             var2 = ((OCAviewerExtend)this).getParameter("mtextcolor");
  972.             if (var2 != null) {
  973.                this.m_main_textcolor = occcolor.ConvertColor(var2);
  974.             }
  975.  
  976.             var2 = ((OCAviewerExtend)this).getParameter("mhltextcolor");
  977.             if (var2 != null) {
  978.                this.m_main_hltextcolor = occcolor.ConvertColor(var2);
  979.             }
  980.  
  981.             var2 = ((OCAviewerExtend)this).getParameter("muhltextcolor");
  982.             if (var2 != null) {
  983.                this.mu_main_hltextcolor = occcolor.ConvertColor(var2);
  984.             }
  985.  
  986.             var2 = ((OCAviewerExtend)this).getParameter("loadmsgcolor");
  987.             if (var2 != null) {
  988.                this.m_load_msgcolor = occcolor.ConvertColor(var2);
  989.             }
  990.  
  991.             var2 = ((OCAviewerExtend)this).getParameter("loadmsg");
  992.             if (var2 != null) {
  993.                this.m_load_msg = var2;
  994.             }
  995.  
  996.             var2 = ((OCAviewerExtend)this).getParameter("muhltextcolor");
  997.             if (var2 != null) {
  998.                this.mu_main_hltextcolor = occcolor.ConvertColor(var2);
  999.             }
  1000.  
  1001.             var2 = ((OCAviewerExtend)this).getParameter("mhloutcolor");
  1002.             if (var2 != null) {
  1003.                this.m_main_hlocolor = occcolor.ConvertColor(var2);
  1004.             }
  1005.  
  1006.             var2 = ((OCAviewerExtend)this).getParameter("muhloutcolor");
  1007.             if (var2 != null) {
  1008.                this.mu_main_hlocolor = occcolor.ConvertColor(var2);
  1009.             }
  1010.  
  1011.             var2 = ((OCAviewerExtend)this).getParameter("moutcolor");
  1012.             if (var2 != null) {
  1013.                this.m_main_ocolor = occcolor.ConvertColor(var2);
  1014.             }
  1015.  
  1016.             var2 = ((OCAviewerExtend)this).getParameter("mbgfile");
  1017.             if (var2 != null) {
  1018.                this.m_main_bgfile = var2;
  1019.             }
  1020.  
  1021.             String var5 = this.m_main_bgfile.toLowerCase();
  1022.             if (var5.lastIndexOf("gif") != -1) {
  1023.                this.main_gif_tile = true;
  1024.             }
  1025.  
  1026.             var2 = ((OCAviewerExtend)this).getParameter("mtilebg");
  1027.             if (var2 != null) {
  1028.                this.m_tile_bg = Boolean.valueOf(var2);
  1029.             }
  1030.  
  1031.             var2 = ((OCAviewerExtend)this).getParameter("hlsubtextonly");
  1032.             if (var2 != null) {
  1033.                this.m_hl_text_only = Boolean.valueOf(var2);
  1034.             }
  1035.  
  1036.             var2 = ((OCAviewerExtend)this).getParameter("checkprevlink");
  1037.             if (var2 != null) {
  1038.                this.m_check_previous_link = Boolean.valueOf(var2);
  1039.             }
  1040.  
  1041.             var2 = ((OCAviewerExtend)this).getParameter("mbgonmenusonly");
  1042.             if (var2 != null) {
  1043.                this.m_tile_menus_only = Boolean.valueOf(var2);
  1044.             }
  1045.  
  1046.             var2 = ((OCAviewerExtend)this).getParameter("rfromoff");
  1047.             if (var2 != null) {
  1048.                this.m_retract_from_offscreen = Boolean.valueOf(var2);
  1049.             }
  1050.  
  1051.             var2 = ((OCAviewerExtend)this).getParameter("mhlbgcolor");
  1052.             if (var2 != null) {
  1053.                this.m_main_hlbgcolor = occcolor.ConvertColor(var2);
  1054.             }
  1055.  
  1056.             var2 = ((OCAviewerExtend)this).getParameter("muhlbgcolor");
  1057.             if (var2 != null) {
  1058.                this.mu_main_hlbgcolor = occcolor.ConvertColor(var2);
  1059.             }
  1060.  
  1061.             var2 = ((OCAviewerExtend)this).getParameter("subheight");
  1062.             if (var2 != null) {
  1063.                this.m_sub_height = Integer.parseInt(var2);
  1064.             }
  1065.  
  1066.             var2 = ((OCAviewerExtend)this).getParameter("subiconindent");
  1067.             if (var2 != null) {
  1068.                this.m_sub_icon_indent = Integer.parseInt(var2);
  1069.             }
  1070.  
  1071.             var2 = ((OCAviewerExtend)this).getParameter("s_color");
  1072.             if (var2 != null) {
  1073.                this.m_sub_color = occcolor.ConvertColor(var2);
  1074.             }
  1075.  
  1076.             var2 = ((OCAviewerExtend)this).getParameter("s_hlcolor");
  1077.             if (var2 != null) {
  1078.                this.m_sub_hlcolor = occcolor.ConvertColor(var2);
  1079.             }
  1080.  
  1081.             var2 = ((OCAviewerExtend)this).getParameter("s_textcolor");
  1082.             if (var2 != null) {
  1083.                this.m_sub_textcolor = occcolor.ConvertColor(var2);
  1084.             }
  1085.  
  1086.             var2 = ((OCAviewerExtend)this).getParameter("s_hltextcolor");
  1087.             if (var2 != null) {
  1088.                this.m_sub_hltextcolor = occcolor.ConvertColor(var2);
  1089.             }
  1090.  
  1091.             var2 = ((OCAviewerExtend)this).getParameter("s_hloutcolor");
  1092.             if (var2 != null) {
  1093.                this.m_sub_hlocolor = occcolor.ConvertColor(var2);
  1094.             }
  1095.  
  1096.             var2 = ((OCAviewerExtend)this).getParameter("s_uhltextcolor");
  1097.             if (var2 != null) {
  1098.                this.mu_sub_hltextcolor = occcolor.ConvertColor(var2);
  1099.             }
  1100.  
  1101.             var2 = ((OCAviewerExtend)this).getParameter("s_uhloutcolor");
  1102.             if (var2 != null) {
  1103.                this.mu_sub_hlocolor = occcolor.ConvertColor(var2);
  1104.             }
  1105.  
  1106.             var2 = ((OCAviewerExtend)this).getParameter("s_uhlcolor");
  1107.             if (var2 != null) {
  1108.                this.mu_sub_hlcolor = occcolor.ConvertColor(var2);
  1109.             }
  1110.  
  1111.             var2 = ((OCAviewerExtend)this).getParameter("s_bgfile");
  1112.             if (var2 != null) {
  1113.                this.m_sub_bgfile = var2;
  1114.             } else {
  1115.                this.m_sub_bgfile = "-1";
  1116.             }
  1117.  
  1118.             var2 = ((OCAviewerExtend)this).getParameter("topoffset");
  1119.             if (var2 != null) {
  1120.                this.m_top_offset = Integer.parseInt(var2);
  1121.             }
  1122.  
  1123.             var2 = ((OCAviewerExtend)this).getParameter("jumpsize");
  1124.             if (var2 != null) {
  1125.                this.m_jump_size = Integer.parseInt(var2);
  1126.             }
  1127.  
  1128.             var2 = ((OCAviewerExtend)this).getParameter("delay");
  1129.             if (var2 != null) {
  1130.                this.m_delay = Integer.parseInt(var2);
  1131.             }
  1132.  
  1133.             var2 = ((OCAviewerExtend)this).getParameter("miconindent");
  1134.             if (var2 != null) {
  1135.                this.m_main_icon_indent = Integer.parseInt(var2);
  1136.             }
  1137.  
  1138.             var2 = ((OCAviewerExtend)this).getParameter("onsbtext");
  1139.             if (var2 != null) {
  1140.                this.m_onsbtext = var2;
  1141.             }
  1142.  
  1143.             var2 = ((OCAviewerExtend)this).getParameter("offsbtext");
  1144.             if (var2 != null) {
  1145.                this.m_offsbtext = var2;
  1146.             }
  1147.  
  1148.             var2 = ((OCAviewerExtend)this).getParameter("loadwhere");
  1149.             if (var2 != null) {
  1150.                this.m_loadwhere = var2;
  1151.             }
  1152.  
  1153.             var2 = ((OCAviewerExtend)this).getParameter("bgcolor");
  1154.             if (var2 != null) {
  1155.                this.m_bgcolor = occcolor.ConvertColor(var2);
  1156.             }
  1157.  
  1158.             ((Component)this).setBackground(this.m_bgcolor);
  1159.  
  1160.             while(((OCAviewerExtend)this).getParameter("maindesc" + this.num_main) != null) {
  1161.                ++this.num_main;
  1162.             }
  1163.  
  1164.             this.m_maindesc = new String[this.num_main];
  1165.             this.m_mainicon = new int[this.num_main];
  1166.             this.m_pic_ycord = new int[this.num_main];
  1167.             this.m_main_desturl = new String[this.num_main];
  1168.             this.no_subs = new boolean[this.num_main];
  1169.             this.ItoM = new int[this.num_main];
  1170.             Vector var6 = new Vector();
  1171.             Vector var7 = new Vector();
  1172.             Vector var8 = new Vector();
  1173.             int var9 = 0;
  1174.             int var10 = 0;
  1175.             String var11 = "";
  1176.             String var12 = "";
  1177.             Stack var13 = new Stack();
  1178.             Stack var14 = new Stack();
  1179.             int var15 = 0;
  1180.             String var16 = "";
  1181.             int var17 = 0;
  1182.             boolean var18 = false;
  1183.             int var19 = 0;
  1184.             int var20 = 0;
  1185.             if (this.m_sub_height < 1) {
  1186.                this.bitheight = this.fm_sub_font.getHeight();
  1187.             } else {
  1188.                this.bitheight = this.m_sub_height;
  1189.             }
  1190.  
  1191.             for(int var84 = 0; var84 < this.num_main; ++var84) {
  1192.                if (((OCAviewerExtend)this).getParameter("desc" + var84 + "-0") == null) {
  1193.                   this.no_subs[var84] = true;
  1194.                }
  1195.  
  1196.                var11 = (new Integer(var84)).toString();
  1197.                var12 = var11;
  1198.                var18 = true;
  1199.  
  1200.                while(true) {
  1201.                   var11 = var12 + "-" + var10;
  1202.                   var2 = ((OCAviewerExtend)this).getParameter("desc" + var11);
  1203.                   int var21 = 0;
  1204.                   int var22 = 0;
  1205.                   boolean var23 = false;
  1206.  
  1207.                   while(var21 != -1) {
  1208.                      var21 = var11.indexOf("-", var21 + 1);
  1209.                      if (var21 == -1) {
  1210.                         break;
  1211.                      }
  1212.  
  1213.                      ++var22;
  1214.                      if (var22 > this.level_max) {
  1215.                         this.level_max = var22;
  1216.                         var23 = true;
  1217.                         var6.addElement((new Integer(var10)).toString());
  1218.                      }
  1219.                   }
  1220.  
  1221.                   if (!var23) {
  1222.                      var6.addElement("0");
  1223.                   }
  1224.  
  1225.                   if (var2 != null) {
  1226.                      if (((OCAviewerExtend)this).getParameter("desc" + var11 + "-0") != null) {
  1227.                         var7.addElement(var11);
  1228.                         ++var15;
  1229.                         var13.push(var11);
  1230.                         var14.push((new Integer(var9 * 4)).toString());
  1231.                      } else {
  1232.                         var7.addElement("-1");
  1233.                      }
  1234.  
  1235.                      String var95 = "-1";
  1236.                      String var25 = "-1";
  1237.                      int var26 = var2.indexOf("|");
  1238.                      if (var26 > 0) {
  1239.                         if (var26 < var2.length() - 1) {
  1240.                            var95 = var2.substring(0, var26);
  1241.                            var25 = var2.substring(var26 + 1);
  1242.                         } else {
  1243.                            var25 = var2;
  1244.                         }
  1245.                      } else {
  1246.                         var25 = var2;
  1247.                      }
  1248.  
  1249.                      var7.addElement(var25);
  1250.                      var7.addElement(var95);
  1251.                      var2 = ((OCAviewerExtend)this).getParameter("desturl" + var11);
  1252.                      if (var2 != null) {
  1253.                         var7.addElement(var2);
  1254.                      } else {
  1255.                         var7.addElement("-1");
  1256.                      }
  1257.  
  1258.                      if (var10 == 0) {
  1259.                         var8.addElement("15");
  1260.                         var8.addElement("15");
  1261.                         var8.addElement((new Integer(var9)).toString());
  1262.                      }
  1263.  
  1264.                      ++var9;
  1265.                      ++var10;
  1266.                   } else {
  1267.                      if (this.no_subs[var84]) {
  1268.                         int var24 = 0;
  1269.  
  1270.                         do {
  1271.                            var8.addElement("0");
  1272.                            ++var24;
  1273.                         } while(var24 < 5);
  1274.                      }
  1275.  
  1276.                      int var94 = Integer.parseInt(var6.elementAt(var22 - 1).toString());
  1277.                      if (var94 < var10) {
  1278.                         var6.setElementAt((new Integer(var10)).toString(), var22 - 1);
  1279.                      }
  1280.  
  1281.                      if (var10 > 0) {
  1282.                         var8.addElement((new Integer(var9 - 1)).toString());
  1283.                         var8.addElement((new Integer(0)).toString());
  1284.                      }
  1285.  
  1286.                      ++var17;
  1287.                      ++var19;
  1288.                      if (var18) {
  1289.                         this.ItoM[var84] = (var17 - 1) * 5;
  1290.                         var18 = false;
  1291.                      }
  1292.  
  1293.                      if (var15 < 1) {
  1294.                         var13 = new Stack();
  1295.                         var14 = new Stack();
  1296.                         var10 = 0;
  1297.                         if (var19 > var20) {
  1298.                            var20 = var19;
  1299.                            var19 = 0;
  1300.                         }
  1301.  
  1302.                         var2 = ((OCAviewerExtend)this).getParameter("mdesturl" + var84);
  1303.                         if (var2 != null) {
  1304.                            this.m_main_desturl[var84] = var2;
  1305.                         } else {
  1306.                            this.m_main_desturl[var84] = "-1";
  1307.                         }
  1308.  
  1309.                         var2 = ((OCAviewerExtend)this).getParameter("maindesc" + var84);
  1310.                         if (var2 != null) {
  1311.                            this.m_maindesc[var84] = var2;
  1312.                         } else {
  1313.                            this.m_maindesc[var84] = "";
  1314.                         }
  1315.                         break;
  1316.                      }
  1317.  
  1318.                      var12 = var13.pop().toString();
  1319.                      --var15;
  1320.                      var16 = var14.pop().toString();
  1321.                      var7.setElementAt((new Integer(var17)).toString(), new Integer(var16));
  1322.                      var10 = 0;
  1323.                   }
  1324.                }
  1325.             }
  1326.  
  1327.             for(int var85 = 0; var85 < this.level_max; ++var85) {
  1328.                this.max_open += Integer.parseInt(var6.elementAt(var85).toString());
  1329.             }
  1330.  
  1331.             if (this.m_tile_menus_only) {
  1332.                this.extra_length = this.max_open * this.bitheight + this.m_main_height * this.m_maindesc.length - this.field_0.height;
  1333.             } else {
  1334.                this.extra_length = this.max_open * this.bitheight + this.m_main_height * this.m_maindesc.length;
  1335.             }
  1336.  
  1337.             if (!this.m_retract_from_offscreen || this.extra_length < 0) {
  1338.                this.extra_length = 0;
  1339.             }
  1340.  
  1341.             this.field_1 = ((Component)this).createImage(this.field_0.width, this.field_0.height + this.extra_length);
  1342.             this.g_ts = this.field_1.getGraphics();
  1343.             this.g_ts.setFont(this.main_font);
  1344.             this.g_ts.setColor(this.m_bgcolor);
  1345.             this.g_ts.fillRect(0, 0, this.field_0.width, this.field_0.height + this.extra_length);
  1346.             this.menu_coords = new int[var20 * 7];
  1347.             this.suboff = new Image[var20];
  1348.             this.g_suboff = new Graphics[var20];
  1349.             this.subs = new String[var7.size()];
  1350.             var7.copyInto(this.subs);
  1351.             this.p_subs = new String[var8.size()];
  1352.             var8.copyInto(this.p_subs);
  1353.             this.mc_sub_hlocolor = new Color[this.level_max];
  1354.             this.mc_sub_color = new Color[this.level_max];
  1355.             this.mc_sub_textcolor = new Color[this.level_max];
  1356.             this.mc_sub_hlcolor = new Color[this.level_max];
  1357.             this.mc_sub_hltextcolor = new Color[this.level_max];
  1358.             this.mc_sub_bgfile = new String[this.level_max];
  1359.             this.mcu_sub_hlcolor = new Color[this.level_max];
  1360.             this.mcu_sub_hltextcolor = new Color[this.level_max];
  1361.             this.mcu_sub_hlocolor = new Color[this.level_max];
  1362.             this.gif_tile = new boolean[this.level_max];
  1363.             this.mc_bgfile_stat = new boolean[this.level_max];
  1364.             this.mc_subbg = new Image[this.level_max];
  1365.  
  1366.             for(int var86 = 0; var86 < this.level_max; ++var86) {
  1367.                var2 = ((OCAviewerExtend)this).getParameter("s_color" + var86);
  1368.                if (var2 != null) {
  1369.                   this.mc_sub_color[var86] = occcolor.ConvertColor(var2);
  1370.                } else {
  1371.                   this.mc_sub_color[var86] = this.m_sub_color;
  1372.                }
  1373.  
  1374.                var2 = ((OCAviewerExtend)this).getParameter("s_hlcolor" + var86);
  1375.                if (var2 != null) {
  1376.                   this.mc_sub_hlcolor[var86] = occcolor.ConvertColor(var2);
  1377.                } else {
  1378.                   this.mc_sub_hlcolor[var86] = this.m_sub_hlcolor;
  1379.                }
  1380.  
  1381.                var2 = ((OCAviewerExtend)this).getParameter("s_hloutcolor" + var86);
  1382.                if (var2 != null) {
  1383.                   this.mc_sub_hlocolor[var86] = occcolor.ConvertColor(var2);
  1384.                } else {
  1385.                   this.mc_sub_hlocolor[var86] = this.m_sub_hlocolor;
  1386.                }
  1387.  
  1388.                var2 = ((OCAviewerExtend)this).getParameter("s_textcolor" + var86);
  1389.                if (var2 != null) {
  1390.                   this.mc_sub_textcolor[var86] = occcolor.ConvertColor(var2);
  1391.                } else {
  1392.                   this.mc_sub_textcolor[var86] = this.m_sub_textcolor;
  1393.                }
  1394.  
  1395.                var2 = ((OCAviewerExtend)this).getParameter("s_hltextcolor" + var86);
  1396.                if (var2 != null) {
  1397.                   this.mc_sub_hltextcolor[var86] = occcolor.ConvertColor(var2);
  1398.                } else {
  1399.                   this.mc_sub_hltextcolor[var86] = this.m_sub_hltextcolor;
  1400.                }
  1401.  
  1402.                var2 = ((OCAviewerExtend)this).getParameter("s_bgfile" + var86);
  1403.                if (var2 != null) {
  1404.                   this.mc_sub_bgfile[var86] = var2;
  1405.                } else {
  1406.                   this.mc_sub_bgfile[var86] = this.m_sub_bgfile;
  1407.                }
  1408.  
  1409.                String var93 = this.mc_sub_bgfile[var86].toLowerCase();
  1410.                if (var93.lastIndexOf("gif") != -1) {
  1411.                   this.gif_tile[var86] = true;
  1412.                }
  1413.  
  1414.                var2 = ((OCAviewerExtend)this).getParameter("s_uhlcolor" + var86);
  1415.                if (var2 != null) {
  1416.                   this.mcu_sub_hlcolor[var86] = occcolor.ConvertColor(var2);
  1417.                } else {
  1418.                   this.mcu_sub_hlcolor[var86] = this.mu_sub_hlcolor;
  1419.                }
  1420.  
  1421.                var2 = ((OCAviewerExtend)this).getParameter("s_uhloutcolor" + var86);
  1422.                if (var2 != null) {
  1423.                   this.mcu_sub_hlocolor[var86] = occcolor.ConvertColor(var2);
  1424.                } else {
  1425.                   this.mcu_sub_hlocolor[var86] = this.mu_sub_hlocolor;
  1426.                }
  1427.  
  1428.                var2 = ((OCAviewerExtend)this).getParameter("s_uhltextcolor" + var86);
  1429.                if (var2 != null) {
  1430.                   this.mcu_sub_hltextcolor[var86] = occcolor.ConvertColor(var2);
  1431.                } else {
  1432.                   this.mcu_sub_hltextcolor[var86] = this.mu_sub_hltextcolor;
  1433.                }
  1434.             }
  1435.  
  1436.             this.bitoff = ((Component)this).createImage(this.field_0.width, this.bitheight + 1);
  1437.             this.g_bitoff = this.bitoff.getGraphics();
  1438.             this.g_bitoff.setFont(this.sub_font);
  1439.  
  1440.             while(((OCAviewerExtend)this).getParameter("iconfile" + this.num_icons) != null) {
  1441.                ++this.num_icons;
  1442.             }
  1443.  
  1444.             this.m_icon_file = new String[this.num_icons];
  1445.             this.m_switchfile = new String[this.num_icons];
  1446.             this.m_switchufile = new String[this.num_icons];
  1447.             this.u_pic_stat = new boolean[this.num_icons];
  1448.             this.s_pic_stat = new boolean[this.num_icons];
  1449.             this.i_pic_stat = new boolean[this.num_icons];
  1450.             this.i_pic = new Image[this.num_icons];
  1451.             this.s_pic = new Image[this.num_icons];
  1452.             this.u_pic = new Image[this.num_icons];
  1453.  
  1454.             for(int var87 = 0; var87 < this.num_icons; ++var87) {
  1455.                var2 = ((OCAviewerExtend)this).getParameter("iconfile" + var87);
  1456.                if (var2 != null) {
  1457.                   this.m_icon_file[var87] = new String(var2);
  1458.                } else {
  1459.                   this.m_icon_file[var87] = new String(" ");
  1460.                }
  1461.  
  1462.                var2 = ((OCAviewerExtend)this).getParameter("iconswitchfile" + var87);
  1463.                if (var2 != null) {
  1464.                   this.m_switchfile[var87] = new String(var2);
  1465.                } else {
  1466.                   this.m_switchfile[var87] = this.m_icon_file[var87];
  1467.                }
  1468.  
  1469.                var2 = ((OCAviewerExtend)this).getParameter("iconclickfile" + var87);
  1470.                if (var2 != null) {
  1471.                   this.m_switchufile[var87] = new String(var2);
  1472.                } else {
  1473.                   this.m_switchufile[var87] = this.m_icon_file[var87];
  1474.                }
  1475.             }
  1476.  
  1477.          }
  1478.       }
  1479.    }
  1480.  
  1481.    public void CreateSub(int var1, int var2) {
  1482.       int var3 = new Integer(this.p_subs[var1 + 3]) - new Integer(this.p_subs[var1 + 2]) + 1;
  1483.       int var4 = new Integer(this.p_subs[var1 + 2]) * 4;
  1484.       this.menux = this.m_sub_indent;
  1485.       this.menuy = (var2 + 1) * this.bitheight;
  1486.       this.menuheight = var3 * this.bitheight;
  1487.       this.menuwidth = this.menu_coords[(this.cur_level - 1) * 7 + 2] - this.m_sub_indent;
  1488.       this.menu_coords[this.cur_level * 7] = this.menu_coords[(this.cur_level - 1) * 7] + this.menux;
  1489.       this.menu_coords[this.cur_level * 7 + 1] = this.menu_coords[(this.cur_level - 1) * 7 + 1] + this.menuy;
  1490.       this.menu_coords[this.cur_level * 7 + 2] = this.menuwidth;
  1491.       this.menu_coords[this.cur_level * 7 + 3] = this.menuheight;
  1492.       this.menu_coords[this.cur_level * 7 + 4] = var3;
  1493.       this.menu_coords[this.cur_level * 7 + 5] = this.on_sub_num;
  1494.       this.menu_coords[this.cur_level * 7 + 6] = var4;
  1495.       this.suboff[this.cur_level] = ((Component)this).createImage(this.field_0.width, this.menuheight + 1);
  1496.       this.g_suboff[this.cur_level] = this.suboff[this.cur_level].getGraphics();
  1497.       this.g_suboff[this.cur_level].setFont(this.sub_font);
  1498.       Color var5 = this.mc_sub_color[this.cur_level];
  1499.       Color var6 = this.mc_sub_textcolor[this.cur_level];
  1500.       Image var7 = this.mc_subbg[this.cur_level];
  1501.       boolean var8 = this.mc_bgfile_stat[this.cur_level];
  1502.       this.g_suboff[this.cur_level].setColor(var5);
  1503.       this.g_suboff[this.cur_level].fillRect(0, 0, this.field_0.width, this.menuheight);
  1504.       if (var8) {
  1505.          int var9 = 0;
  1506.          int var10 = 0;
  1507.          int var11 = var7.getWidth(this);
  1508.          int var12 = var7.getHeight(this);
  1509.          if (this.gif_tile[this.cur_level]) {
  1510.             var10 = -1;
  1511.          }
  1512.  
  1513.          while(true) {
  1514.             this.g_suboff[this.cur_level].drawImage(var7, var9, var10, this);
  1515.             var9 += var11;
  1516.             if (var9 > this.field_0.width) {
  1517.                var9 = 0;
  1518.                var10 += var12;
  1519.                if (this.gif_tile[this.cur_level]) {
  1520.                   --var10;
  1521.                }
  1522.  
  1523.                if (var10 > this.menuheight + 1) {
  1524.                   break;
  1525.                }
  1526.             }
  1527.          }
  1528.       }
  1529.  
  1530.       for(int var13 = 0; var13 < var3; ++var13) {
  1531.          String var14 = this.subs[var4 + var13 * 4 + 1];
  1532.          int var15 = Integer.parseInt(this.subs[var4 + var13 * 4 + 2]);
  1533.          if (this.i_pic != null && var15 > -1 && var15 < this.i_pic.length && this.i_pic[var15] != null) {
  1534.             this.g_suboff[this.cur_level].drawImage(this.i_pic[var15], this.menu_coords[this.cur_level * 7] - this.m_sub_indent + this.m_sub_icon_indent, this.bitheight * var13 + this.bitheight / 2 - this.i_pic[var15].getHeight(this) / 2, this);
  1535.          }
  1536.  
  1537.          this.g_suboff[this.cur_level].setColor(var6);
  1538.          this.g_suboff[this.cur_level].drawString(var14, this.menu_coords[this.cur_level * 7], this.bitheight * var13 + this.bitheight / 2 - this.fm_sub_font.getHeight() / 2 + this.fm_sub_font.getAscent());
  1539.       }
  1540.  
  1541.       this.on_sub_num = -1;
  1542.       this.sub_highlighted = false;
  1543.       this.usub_h = -1;
  1544.    }
  1545.  
  1546.    public void drawMain() {
  1547.       boolean var1 = false;
  1548.       this.mainoff = ((Component)this).createImage(this.field_0.width, this.m_main_height + 1);
  1549.       this.g_mainoff = this.mainoff.getGraphics();
  1550.       this.g_mainoff.setFont(this.main_font);
  1551.       this.g_ts.setFont(this.main_font);
  1552.       if (this.m_tile_menus_only) {
  1553.          this.g_ts.clipRect(0, 0, this.field_0.width, this.m_main_height * this.m_maindesc.length + this.m_top_offset + 1);
  1554.       }
  1555.  
  1556.       if (this.m_bgcolor != null) {
  1557.          this.g_ts.setColor(this.m_bgcolor);
  1558.          this.g_ts.fillRect(0, 0, this.field_0.width, this.field_0.height);
  1559.       }
  1560.  
  1561.       if (this.m_main_bgimage != null) {
  1562.          if (this.m_tile_bg) {
  1563.             int var2 = 0;
  1564.             int var3 = 0;
  1565.             int var4 = this.m_main_bgimage.getWidth(this);
  1566.             int var5 = this.m_main_bgimage.getHeight(this);
  1567.             if (this.main_gif_tile) {
  1568.                var3 = -1;
  1569.             }
  1570.  
  1571.             while(true) {
  1572.                this.g_ts.drawImage(this.m_main_bgimage, var2, var3, this);
  1573.                var2 += var4;
  1574.                if (var2 > this.field_0.width) {
  1575.                   var2 = 0;
  1576.                   var3 += var5;
  1577.                   if (this.main_gif_tile) {
  1578.                      --var3;
  1579.                   }
  1580.  
  1581.                   if (this.m_tile_menus_only) {
  1582.                      if (var3 > this.m_main_height * this.m_maindesc.length) {
  1583.                         break;
  1584.                      }
  1585.                   } else if (var3 > this.field_0.height) {
  1586.                      break;
  1587.                   }
  1588.                }
  1589.             }
  1590.          } else {
  1591.             this.g_ts.drawImage(this.m_main_bgimage, 0, 0, this);
  1592.          }
  1593.       }
  1594.  
  1595.       for(int var6 = 0; var6 < this.m_maindesc.length; ++var6) {
  1596.          String[] var7 = this.getIdandText(this.m_maindesc[var6]);
  1597.          this.m_mainicon[var6] = Integer.parseInt(var7[0]);
  1598.          this.m_maindesc[var6] = var7[1];
  1599.          if (this.i_pic != null && this.m_mainicon[var6] > -1 && this.m_mainicon[var6] < this.i_pic.length && this.i_pic[this.m_mainicon[var6]] != null) {
  1600.             this.g_ts.drawImage(this.i_pic[this.m_mainicon[var6]], this.m_main_icon_indent, this.m_main_height * var6 + this.m_top_offset + this.m_main_height / 2 - this.i_pic[this.m_mainicon[var6]].getHeight(this) / 2, this);
  1601.          }
  1602.  
  1603.          if (this.m_main_ocolor != null) {
  1604.             this.g_ts.setColor(this.m_main_ocolor);
  1605.             this.g_ts.drawRect(0, this.m_main_height * var6 + this.m_top_offset, this.field_0.width - 1, this.m_main_height);
  1606.          }
  1607.  
  1608.          this.g_ts.setColor(this.m_main_textcolor);
  1609.          this.g_ts.drawString(this.m_maindesc[var6], this.m_main_indent, this.m_main_height / 2 - this.fm_main_font.getHeight() / 2 + this.fm_main_font.getAscent() + this.m_main_height * var6 + this.m_top_offset);
  1610.          this.m_pic_ycord[var6] = this.m_main_height * var6 + this.m_top_offset;
  1611.       }
  1612.  
  1613.       this.g_ts = this.field_1.getGraphics();
  1614.    }
  1615.  
  1616.    public void UndoH() {
  1617.       if (this.last_drawn != -1) {
  1618.          ((Component)this).getGraphics().drawImage(this.field_1, 0, 0, this);
  1619.          this.last_drawn = -1;
  1620.          this.mu_h = false;
  1621.       }
  1622.  
  1623.    }
  1624.  
  1625.    public void checkNextLevel(boolean var1, int var2, int var3, int var4) {
  1626.       if (var1) {
  1627.          int var5 = Integer.parseInt(this.subs[var2 + var3 * 4]);
  1628.          this.cur_link = this.subs[var2 + var3 * 4 + 3];
  1629.          if (var5 == -1) {
  1630.             return;
  1631.          }
  1632.  
  1633.          for(int var6 = this.cur_level; var6 > this.real_level; --var6) {
  1634.             this.shrinkSub(var6);
  1635.          }
  1636.  
  1637.          if (this.cur_level > this.real_level) {
  1638.             this.UndoSubHighlight();
  1639.          }
  1640.  
  1641.          this.cur_level = this.real_level;
  1642.          ++this.cur_level;
  1643.          this.CreateSub(var5 * 5, var3);
  1644.          this.growSub(this.cur_level, var3 + 1);
  1645.       }
  1646.  
  1647.    }
  1648.  
  1649.    public boolean mouseMove(Event var1, int var2, int var3) {
  1650.       if (this.first_run) {
  1651.          return true;
  1652.       } else {
  1653.          this.checkMouse(var2, var3, false);
  1654.          return true;
  1655.       }
  1656.    }
  1657. }
  1658.