home *** CD-ROM | disk | FTP | other *** search
/ Internet Magazine 2002 June / INTERNET92.ISO / pc / software / windows / building / visual_dhtml / visualdhtmlwin9x_nt.exe / inm.___ (.txt) < prev    next >
Encoding:
Java Class File  |  2001-10-19  |  13.7 KB  |  896 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.  
  14. public class inm extends OCAviewerExtend implements Runnable {
  15.    private Font m_msg_font;
  16.    private FontMetrics m_msg_fm;
  17.    Image msg_off;
  18.    Graphics g_msg_off;
  19.    int center_x = 0;
  20.    int break_stand;
  21.    private String m_messagefont = "Helvetica, plain, 10";
  22.    private String m_msg = "";
  23.    private Color m_msg_bgcolor;
  24.    private Color m_textcolor;
  25.    private int m_msg_halign;
  26.    private int m_xoffset;
  27.    private int m_b_thick;
  28.    private Color m_b_color;
  29.    private int m_jump;
  30.    private int m_delay;
  31.    private int m_valign;
  32.    private Color[] m_cur_textcolor;
  33.    private Color[] m_cur_bgcolor;
  34.    private String[] m_cur_msg;
  35.    private Font[] m_cur_msg_font;
  36.    private int m_showx;
  37.    private int m_showy;
  38.    private int m_show_width;
  39.    private int m_show_height;
  40.    Thread aprun;
  41.    URL goURL;
  42.    // $FF: renamed from: d java.awt.Dimension
  43.    Dimension field_0;
  44.    Font font;
  45.    // $FF: renamed from: fm java.awt.FontMetrics
  46.    FontMetrics field_1;
  47.    Image suboff;
  48.    Graphics g_suboff;
  49.    Image off;
  50.    Graphics g_off;
  51.    int menux;
  52.    int menuy;
  53.    int menuwidth;
  54.    int menuheight;
  55.    int bitheight;
  56.    int on_sub_num;
  57.    int last_sub;
  58.    boolean sub_highlighted;
  59.    boolean in_sub;
  60.    boolean tag;
  61.    boolean first_run;
  62.    boolean rendering_images;
  63.    boolean mouse_in;
  64.    private String m_loadwhere;
  65.    private Color m_page_bgcolor;
  66.    private Color m_outline_color;
  67.    private Color m_menu_color;
  68.    private Color m_menu_textcolor;
  69.    private Color m_menu_hlcolor;
  70.    private Color m_menu_hltextcolor;
  71.    private int m_sub_xoffset;
  72.    private boolean m_showsburls;
  73.    private String m_onsbtext;
  74.    private String m_offsbtext;
  75.    private String[] m_cur_image_loadwhere;
  76.    private String[] m_cur_image_desturl;
  77.    private String[][] m_cur_desturl;
  78.    private String[][] m_cur_loadwhere;
  79.    private String[][] m_desc;
  80.    private String[] m_switchfile;
  81.    private int[] m_pic_xcord;
  82.    private int[] m_pic_ycord;
  83.    private int[] m_menu_xcord;
  84.    private int[] m_menu_ycord;
  85.    int m_max_subs;
  86.    int m_center_text;
  87.    int[] num_sub_items;
  88.    int last_drawn;
  89.    int num_images;
  90.    int[] pic_width;
  91.    int[] pic_height;
  92.    int[] max_string_width;
  93.    private String m_bgimagefile;
  94.    private int m_bg_x;
  95.    private int m_bg_y;
  96.    Image bg_image;
  97.    Image[] s_picture;
  98.    MediaTracker m_media_track;
  99.  
  100.    public void stop() {
  101.       if (this.aprun != null) {
  102.          this.aprun.stop();
  103.          this.aprun = null;
  104.       }
  105.  
  106.    }
  107.  
  108.    public boolean mouseEnter(Event var1, int var2, int var3) {
  109.       this.mouse_in = true;
  110.       if (this.rendering_images) {
  111.          ((OCAviewerExtend)this).showStatus("Loading Menu Images...");
  112.       } else {
  113.          ((OCAviewerExtend)this).showStatus(this.m_onsbtext);
  114.       }
  115.  
  116.       return true;
  117.    }
  118.  
  119.    static boolean drawTextOverImage(Graphics var0, Dimension var1, String var2, Font var3, Color var4, int var5, int var6, int var7, Color var8, int var9, Color var10) {
  120.       try {
  121.          var0.setFont(var3);
  122.          FontMetrics var11 = var0.getFontMetrics(var3);
  123.          var0.setColor(var10);
  124.          var0.fillRect(0, 0, var1.width, var1.height);
  125.          var0.setColor(var8);
  126.  
  127.          for(int var12 = 0; var12 < var9; ++var12) {
  128.             var0.drawRect(var12, var12, var1.width - var12 * 2 - 1, var1.height - var12 * 2 - 1);
  129.          }
  130.  
  131.          String[] var17 = ocwordw.WrapText(var2, var1.width - var5 * 2 - var9 * 2, var11);
  132.          var0.setColor(var4);
  133.          int var13 = var11.getHeight() * var17.length + var11.getAscent() / 2;
  134.          int var14 = var9;
  135.          if (var6 == 1) {
  136.             var14 = (var1.height - var13) / 2;
  137.          }
  138.  
  139.          if (var6 == 2) {
  140.             var14 = var1.height - var9 - var13;
  141.          }
  142.  
  143.          for(int var15 = 0; var15 < var17.length; ++var15) {
  144.             if (var7 == 1) {
  145.                var0.drawString(var17[var15], var1.width / 2 - var11.stringWidth(var17[var15]) / 2, var14 + (var15 + 1) * var11.getHeight());
  146.             } else if (var7 == 0) {
  147.                var0.drawString(var17[var15], var5 + var9, var14 + (var15 + 1) * var11.getHeight());
  148.             } else if (var7 == 2) {
  149.                var0.drawString(var17[var15], var1.width - (var11.stringWidth(var17[var15]) + var5 + var9), var14 + (var15 + 1) * var11.getHeight());
  150.             }
  151.          }
  152.  
  153.          return true;
  154.       } catch (Exception var16) {
  155.          return false;
  156.       }
  157.    }
  158.  
  159.    public void UndoSubHighlight(Graphics var1, int var2) {
  160.       this.sub_highlighted = false;
  161.       this.last_sub = -1;
  162.       if (this.suboff != null) {
  163.          if (this.m_center_text == 1) {
  164.             this.g_suboff.setColor(this.m_menu_color);
  165.             this.g_suboff.fillRect(1, 1 + this.bitheight * var2, this.max_string_width[this.last_drawn] - 1, this.bitheight - 1);
  166.             this.g_suboff.setColor(this.m_menu_textcolor);
  167.             this.g_suboff.drawString(this.m_desc[this.last_drawn][var2], (this.max_string_width[this.last_drawn] - this.field_1.stringWidth(this.m_desc[this.last_drawn][var2])) / 2, this.bitheight * var2 + this.bitheight - this.field_1.getDescent());
  168.          } else if (this.m_center_text == 0) {
  169.             this.g_suboff.setColor(this.m_menu_color);
  170.             this.g_suboff.fillRect(1, 1 + this.bitheight * var2, this.max_string_width[this.last_drawn] - 1, this.bitheight - 1);
  171.             this.g_suboff.setColor(this.m_menu_textcolor);
  172.             this.g_suboff.drawString(this.m_desc[this.last_drawn][var2], this.m_sub_xoffset, this.bitheight * var2 + this.bitheight - this.field_1.getDescent());
  173.          }
  174.  
  175.          if (this.m_center_text == 2) {
  176.             this.g_suboff.setColor(this.m_menu_color);
  177.             this.g_suboff.fillRect(1, 1 + this.bitheight * var2, this.max_string_width[this.last_drawn] - 1, this.bitheight - 1);
  178.             this.g_suboff.setColor(this.m_menu_textcolor);
  179.             this.g_suboff.drawString(this.m_desc[this.last_drawn][var2], this.max_string_width[this.last_drawn] - this.field_1.stringWidth(this.m_desc[this.last_drawn][var2]) - this.m_sub_xoffset, this.bitheight * var2 + this.bitheight - this.field_1.getDescent());
  180.          }
  181.  
  182.          this.g_off.drawImage(this.suboff, this.menux, this.menuy, this);
  183.          this.DrawOff();
  184.       }
  185.  
  186.    }
  187.  
  188.    public boolean mouseExit(Event var1, int var2, int var3) {
  189.       this.mouse_in = false;
  190.       if (this.last_drawn != -1) {
  191.          this.UndoHP();
  192.          this.last_drawn = -1;
  193.       }
  194.  
  195.       drawTextOverImage(this.g_msg_off, new Dimension(this.m_show_width, this.m_show_height), this.m_msg, this.m_msg_font, this.m_textcolor, this.m_xoffset, this.m_valign, this.m_msg_halign, this.m_b_color, this.m_b_thick, this.m_msg_bgcolor);
  196.       this.g_off.drawImage(this.msg_off, this.m_showx, this.m_showy, this);
  197.       this.DrawOff();
  198.       this.sub_highlighted = false;
  199.       this.last_sub = -1;
  200.       if (this.rendering_images) {
  201.          ((OCAviewerExtend)this).showStatus("Loading Menu Images...");
  202.       } else {
  203.          ((OCAviewerExtend)this).showStatus(this.m_offsbtext);
  204.       }
  205.  
  206.       return true;
  207.    }
  208.  
  209.    public void paint(Graphics var1) {
  210.       if (!this.tag) {
  211.          var1.setColor(Color.black);
  212.          var1.drawString(this.m_onsbtext, 0, 30);
  213.       } else {
  214.          if (!this.first_run) {
  215.             this.DrawOff();
  216.          }
  217.  
  218.       }
  219.    }
  220.  
  221.    public Image trackReturn(String var1) {
  222.       ocgifix var2 = new ocgifix();
  223.       Object var3 = null;
  224.       MediaTracker var4 = new MediaTracker(this);
  225.       if (!var1.equals("-1")) {
  226.          Image var6 = ((Applet)this).getImage(((OCAviewerExtend)this).getDocumentBase(), var1);
  227.          if (var6 != null) {
  228.             var4.addImage(var6, 0);
  229.  
  230.             try {
  231.                var4.waitForID(0);
  232.             } catch (InterruptedException var5) {
  233.                return null;
  234.             }
  235.  
  236.             if (var4.isErrorID(0)) {
  237.                System.out.println("Error Loading Image File:" + var1);
  238.                return null;
  239.             } else {
  240.                var6 = var2.gifix(var6, var1);
  241.                return var6;
  242.             }
  243.          } else {
  244.             return null;
  245.          }
  246.       } else {
  247.          return null;
  248.       }
  249.    }
  250.  
  251.    public inm() {
  252.       this.m_msg_bgcolor = Color.white;
  253.       this.m_textcolor = Color.black;
  254.       this.m_msg_halign = 0;
  255.       this.m_xoffset = 5;
  256.       this.m_b_thick = 0;
  257.       this.m_b_color = Color.black;
  258.       this.m_jump = 1;
  259.       this.m_delay = 0;
  260.       this.m_valign = 0;
  261.       this.m_showx = 0;
  262.       this.m_showy = 0;
  263.       this.m_show_width = 0;
  264.       this.m_show_height = 0;
  265.       this.aprun = null;
  266.       this.on_sub_num = 0;
  267.       this.sub_highlighted = false;
  268.       this.in_sub = false;
  269.       this.tag = false;
  270.       this.first_run = true;
  271.       this.rendering_images = false;
  272.       this.mouse_in = false;
  273.       this.m_loadwhere = "_self";
  274.       this.m_page_bgcolor = Color.black;
  275.       this.m_outline_color = Color.black;
  276.       this.m_menu_color = Color.white;
  277.       this.m_menu_textcolor = Color.black;
  278.       this.m_menu_hlcolor = Color.red;
  279.       this.m_menu_hltextcolor = Color.black;
  280.       this.m_sub_xoffset = 4;
  281.       this.m_showsburls = true;
  282.       this.m_onsbtext = "OpenCube - Image Navigator Menu";
  283.       this.m_offsbtext = "Java by OpenCube";
  284.       this.m_center_text = 0;
  285.       this.last_drawn = -1;
  286.       this.num_images = 0;
  287.       this.m_bg_x = 0;
  288.       this.m_bg_y = 0;
  289.       this.m_media_track = new MediaTracker(this);
  290.    }
  291.  
  292.    public boolean mouseUp(Event var1, int var2, int var3) {
  293.       if (this.sub_highlighted) {
  294.          if (!this.m_cur_desturl[this.last_drawn][this.last_sub].equals("-1")) {
  295.             try {
  296.                this.goURL = new URL(((OCAviewerExtend)this).getDocumentBase(), this.m_cur_desturl[this.last_drawn][this.last_sub]);
  297.             } catch (MalformedURLException var5) {
  298.             }
  299.  
  300.             ((Applet)this).getAppletContext().showDocument(this.goURL, this.m_cur_loadwhere[this.last_drawn][this.last_sub]);
  301.          }
  302.       } else if (this.last_drawn != -1 && !this.m_cur_image_desturl[this.last_drawn].equals("-1")) {
  303.          try {
  304.             this.goURL = new URL(((OCAviewerExtend)this).getDocumentBase(), this.m_cur_image_desturl[this.last_drawn]);
  305.          } catch (MalformedURLException var4) {
  306.          }
  307.  
  308.          ((Applet)this).getAppletContext().showDocument(this.goURL, this.m_cur_image_loadwhere[this.last_drawn]);
  309.       }
  310.  
  311.       return true;
  312.    }
  313.  
  314.    public void DrawOff() {
  315.       ((Component)this).getGraphics().drawImage(this.off, 0, 0, this);
  316.    }
  317.  
  318.    public void UndoHP() {
  319.       ((Component)this).getGraphics();
  320.       this.DrawBG();
  321.       if (this.bg_image != null) {
  322.          this.g_off.drawImage(this.bg_image, this.m_bg_x, this.m_bg_y, this);
  323.       }
  324.  
  325.    }
  326.  
  327.    public void HighlightPic(int var1) {
  328.       this.field_1 = ((Component)this).getFontMetrics(this.font);
  329.       this.menux = this.m_pic_xcord[var1] + this.m_menu_xcord[var1];
  330.       this.menuy = this.m_pic_ycord[var1] + this.m_menu_ycord[var1];
  331.       this.menuwidth = this.max_string_width[var1];
  332.       this.menuheight = this.num_sub_items[var1] * this.field_1.getHeight();
  333.       if (this.s_picture[var1] != null) {
  334.          this.g_off.drawImage(this.s_picture[var1], this.m_pic_xcord[var1], this.m_pic_ycord[var1], this);
  335.       }
  336.  
  337.       if (this.menuwidth <= 1 && this.menuheight <= 1) {
  338.          this.suboff = null;
  339.       } else {
  340.          this.suboff = ((Component)this).createImage(this.menuwidth + 1, this.menuheight + 1);
  341.          this.g_suboff = this.suboff.getGraphics();
  342.          this.g_suboff.setFont(this.font);
  343.          this.g_suboff.setColor(this.m_menu_color);
  344.          this.g_suboff.fillRect(0, 0, this.menuwidth, this.menuheight);
  345.          if (this.m_center_text == 1) {
  346.             for(int var3 = 0; var3 < this.num_sub_items[var1]; ++var3) {
  347.                this.g_suboff.setColor(this.m_outline_color);
  348.                this.g_suboff.drawRect(0, this.field_1.getHeight() * var3, this.max_string_width[this.last_drawn], this.field_1.getHeight());
  349.                this.g_suboff.setColor(this.m_menu_textcolor);
  350.                this.g_suboff.drawString(this.m_desc[this.last_drawn][var3], (this.max_string_width[this.last_drawn] - this.field_1.stringWidth(this.m_desc[this.last_drawn][var3])) / 2, this.field_1.getHeight() * var3 + this.field_1.getHeight() - this.field_1.getDescent());
  351.             }
  352.          } else if (this.m_center_text == 0) {
  353.             for(int var2 = 0; var2 < this.num_sub_items[var1]; ++var2) {
  354.                this.g_suboff.setColor(this.m_outline_color);
  355.                this.g_suboff.drawRect(0, this.field_1.getHeight() * var2, this.max_string_width[this.last_drawn], this.field_1.getHeight());
  356.                this.g_suboff.setColor(this.m_menu_textcolor);
  357.                this.g_suboff.drawString(this.m_desc[this.last_drawn][var2], this.m_sub_xoffset, this.field_1.getHeight() * var2 + this.field_1.getHeight() - this.field_1.getDescent());
  358.             }
  359.          }
  360.  
  361.          if (this.m_center_text == 2) {
  362.             for(int var4 = 0; var4 < this.num_sub_items[var1]; ++var4) {
  363.                this.g_suboff.setColor(this.m_outline_color);
  364.                this.g_suboff.drawRect(0, this.field_1.getHeight() * var4, this.max_string_width[this.last_drawn], this.field_1.getHeight());
  365.                this.g_suboff.setColor(this.m_menu_textcolor);
  366.                this.g_suboff.drawString(this.m_desc[this.last_drawn][var4], this.max_string_width[this.last_drawn] - this.field_1.stringWidth(this.m_desc[this.last_drawn][var4]) - this.m_sub_xoffset, this.field_1.getHeight() * var4 + this.field_1.getHeight() - this.field_1.getDescent());
  367.             }
  368.          }
  369.       }
  370.  
  371.       drawTextOverImage(this.g_msg_off, new Dimension(this.m_show_width, this.m_show_height), this.m_cur_msg[this.last_drawn], this.m_cur_msg_font[this.last_drawn], this.m_cur_textcolor[this.last_drawn], this.m_xoffset, this.m_valign, this.m_msg_halign, this.m_b_color, this.m_b_thick, this.m_cur_bgcolor[this.last_drawn]);
  372.       this.g_off.drawImage(this.msg_off, this.m_showx, this.m_showy, this);
  373.       this.DrawOff();
  374.       if (this.suboff != null) {
  375.          ((Component)this).getGraphics().drawImage(this.suboff, this.menux, this.menuy, this);
  376.          this.g_off.drawImage(this.suboff, this.menux, this.menuy, this);
  377.       }
  378.  
  379.    }
  380.  
  381.    public boolean imageUpdate(Image var1, int var2, int var3, int var4, int var5, int var6) {
  382.       if (var2 == 64) {
  383.          this.bg_image = null;
  384.          return true;
  385.       } else {
  386.          this.g_off.drawImage(this.bg_image, this.m_bg_x, this.m_bg_y, this);
  387.          this.g_off.drawImage(this.msg_off, this.m_showx, this.m_showy, this);
  388.          if (this.last_drawn != -1 && this.suboff != null) {
  389.             this.g_off.drawImage(this.suboff, this.menux, this.menuy, this);
  390.          }
  391.  
  392.          this.DrawOff();
  393.          return true;
  394.       }
  395.    }
  396.  
  397.    public void MouseInSub(int var1) {
  398.       for(int var2 = 1; var2 <= this.num_sub_items[this.last_drawn]; ++var2) {
  399.          if (var1 > this.bitheight * (var2 - 1) && var1 < this.bitheight * var2 && var2 != this.on_sub_num) {
  400.             if (this.sub_highlighted) {
  401.                this.UndoSubHighlight(((Component)this).getGraphics(), this.last_sub);
  402.             }
  403.  
  404.             this.SubHighlight(((Component)this).getGraphics(), var2 - 1);
  405.             this.on_sub_num = var2;
  406.          }
  407.       }
  408.  
  409.    }
  410.  
  411.    public void FirstRun() {
  412.       if (this.m_show_width > 0 && this.m_show_height > 0) {
  413.          this.msg_off = ((Component)this).createImage(this.m_show_width, this.m_show_height);
  414.          this.g_msg_off = this.msg_off.getGraphics();
  415.       } else {
  416.          this.msg_off = null;
  417.       }
  418.  
  419.       this.off = ((Component)this).createImage(this.field_0.width, this.field_0.height);
  420.       this.g_off = this.off.getGraphics();
  421.       ((OCAviewerExtend)this).showStatus("Loading Menu Images...");
  422.       this.DrawBG();
  423.       if (this.msg_off != null) {
  424.          drawTextOverImage(this.g_msg_off, new Dimension(this.m_show_width, this.m_show_height), this.m_msg, this.m_msg_font, this.m_textcolor, this.m_xoffset, this.m_valign, this.m_msg_halign, this.m_b_color, this.m_b_thick, this.m_msg_bgcolor);
  425.          this.g_off.drawImage(this.msg_off, this.m_showx, this.m_showy, this);
  426.          this.DrawOff();
  427.       }
  428.  
  429.       if (!this.m_bgimagefile.equals("-1")) {
  430.          try {
  431.             URL var1 = new URL(((OCAviewerExtend)this).getDocumentBase(), this.m_bgimagefile);
  432.             this.bg_image = ((OCAviewerExtend)this).getImage(var1);
  433.             this.g_off.drawImage(this.bg_image, this.m_bg_x, this.m_bg_y, this);
  434.          } catch (MalformedURLException var2) {
  435.          }
  436.       }
  437.  
  438.       for(int var3 = this.break_stand; var3 < this.num_images; this.break_stand = var3++) {
  439.          if ((this.s_picture[var3] = this.trackReturn(this.m_switchfile[var3])) != null) {
  440.             if (this.last_drawn != -1) {
  441.                this.g_off.drawImage(this.s_picture[var3], this.m_pic_xcord[var3], this.m_pic_ycord[var3], this);
  442.             }
  443.  
  444.             if (this.last_drawn != -1 && this.suboff != null) {
  445.                this.g_off.drawImage(this.suboff, this.m_pic_xcord[this.last_drawn] + this.m_menu_xcord[this.last_drawn], this.m_pic_ycord[this.last_drawn] + this.m_menu_ycord[this.last_drawn], this);
  446.             }
  447.  
  448.             ((Component)this).getGraphics().drawImage(this.off, 0, 0, this);
  449.             if (this.pic_width[var3] == 0) {
  450.                this.pic_width[var3] = this.s_picture[var3].getWidth(this);
  451.             }
  452.  
  453.             if (this.pic_height[var3] == 0) {
  454.             }
  455.  
  456.             this.pic_height[var3] = this.s_picture[var3].getHeight(this);
  457.          }
  458.       }
  459.  
  460.       if (this.mouse_in) {
  461.          ((OCAviewerExtend)this).showStatus(this.m_onsbtext);
  462.       } else {
  463.          ((OCAviewerExtend)this).showStatus(this.m_offsbtext);
  464.       }
  465.  
  466.       this.rendering_images = false;
  467.    }
  468.  
  469.    private int getHAlignValue(String var1) {
  470.       if (var1.equalsIgnoreCase("right")) {
  471.          return 2;
  472.       } else {
  473.          return var1.equalsIgnoreCase("center") ? 1 : 0;
  474.       }
  475.    }
  476.  
  477.    private int getVAlignValue(String var1) {
  478.       if (var1.equalsIgnoreCase("bottom")) {
  479.          return 2;
  480.       } else {
  481.          return var1.equalsIgnoreCase("center") ? 1 : 0;
  482.       }
  483.    }
  484.  
  485.    public void start() {
  486.       if (this.aprun == null) {
  487.          this.aprun = new Thread(this);
  488.          this.aprun.start();
  489.       }
  490.  
  491.    }
  492.  
  493.    public void DrawBG() {
  494.       this.g_off.setColor(this.m_page_bgcolor);
  495.       this.g_off.fillRect(0, 0, this.field_0.width, this.field_0.height);
  496.    }
  497.  
  498.    public void SubHighlight(Graphics var1, int var2) {
  499.       this.sub_highlighted = true;
  500.       this.last_sub = var2;
  501.       if (this.suboff != null) {
  502.          if (this.m_center_text == 1) {
  503.             this.g_suboff.setColor(this.m_menu_hlcolor);
  504.             this.g_suboff.fillRect(1, 1 + this.bitheight * var2, this.max_string_width[this.last_drawn] - 1, this.bitheight - 1);
  505.             this.g_suboff.setColor(this.m_menu_hltextcolor);
  506.             this.g_suboff.drawString(this.m_desc[this.last_drawn][var2], (this.max_string_width[this.last_drawn] - this.field_1.stringWidth(this.m_desc[this.last_drawn][var2])) / 2, this.bitheight * var2 + this.bitheight - this.field_1.getDescent());
  507.          } else if (this.m_center_text == 0) {
  508.             this.g_suboff.setColor(this.m_menu_hlcolor);
  509.             this.g_suboff.fillRect(1, 1 + this.bitheight * var2, this.max_string_width[this.last_drawn] - 1, this.bitheight - 1);
  510.             this.g_suboff.setColor(this.m_menu_hltextcolor);
  511.             this.g_suboff.drawString(this.m_desc[this.last_drawn][var2], this.m_sub_xoffset, this.bitheight * var2 + this.bitheight - this.field_1.getDescent());
  512.          } else if (this.m_center_text == 2) {
  513.             this.g_suboff.setColor(this.m_menu_hlcolor);
  514.             this.g_suboff.fillRect(1, 1 + this.bitheight * var2, this.max_string_width[this.last_drawn] - 1, this.bitheight - 1);
  515.             this.g_suboff.setColor(this.m_menu_hltextcolor);
  516.             this.g_suboff.drawString(this.m_desc[this.last_drawn][var2], this.max_string_width[this.last_drawn] - this.field_1.stringWidth(this.m_desc[this.last_drawn][var2]) - this.m_sub_xoffset, this.bitheight * var2 + this.bitheight - this.field_1.getDescent());
  517.          }
  518.  
  519.          this.g_off.drawImage(this.suboff, this.menux, this.menuy, this);
  520.          this.DrawOff();
  521.       }
  522.  
  523.    }
  524.  
  525.    public void run() {
  526.       while(true) {
  527.          if (this.first_run) {
  528.             this.FirstRun();
  529.             this.first_run = false;
  530.          }
  531.  
  532.          try {
  533.             Thread.sleep(250L);
  534.          } catch (InterruptedException var1) {
  535.          }
  536.       }
  537.    }
  538.  
  539.    public void init() {
  540.       String var1 = "Image Navigator Menu, Copyright (c) 1999, OpenCube Inc.";
  541.       this.field_0 = ((Component)this).size();
  542.       int var3 = 0;
  543.       int var4 = 0;
  544.       String var2 = ((OCAviewerExtend)this).getParameter("Notice");
  545.       if (var2 == null) {
  546.          this.m_onsbtext = "Missing 'Notice' Tag";
  547.       } else {
  548.          String var5 = compkey.getKey(var2, ((OCAviewerExtend)this).getDocumentBase());
  549.          if (!var5.equals(var1)) {
  550.             if (var5.equals("-1")) {
  551.                this.m_onsbtext = "Licence Error: Invalid URL";
  552.             } else {
  553.                this.m_onsbtext = "Incorrect Copyright Notice in 'Notice' tag";
  554.             }
  555.          } else {
  556.             this.tag = true;
  557.             this.tag = true;
  558.             var2 = ((OCAviewerExtend)this).getParameter("msg");
  559.             if (var2 != null) {
  560.                this.m_msg = var2;
  561.             }
  562.  
  563.             var2 = ((OCAviewerExtend)this).getParameter("msgvalign");
  564.             if (var2 != null) {
  565.                this.m_valign = this.getVAlignValue(var2);
  566.             }
  567.  
  568.             var2 = ((OCAviewerExtend)this).getParameter("msgjump");
  569.             if (var2 != null) {
  570.                this.m_jump = Integer.parseInt(var2);
  571.             }
  572.  
  573.             var2 = ((OCAviewerExtend)this).getParameter("msgdelay");
  574.             if (var2 != null) {
  575.                this.m_delay = Integer.parseInt(var2);
  576.             }
  577.  
  578.             var2 = ((OCAviewerExtend)this).getParameter("msgxy");
  579.             if (var2 != null) {
  580.                int[] var6 = occcord.getIntValues(var2, ",", 2);
  581.                if (var6 != null) {
  582.                   this.m_showx = var6[0];
  583.                   this.m_showy = var6[1];
  584.                }
  585.             }
  586.  
  587.             var2 = ((OCAviewerExtend)this).getParameter("msgheight");
  588.             if (var2 != null) {
  589.                this.m_show_height = Integer.parseInt(var2);
  590.             }
  591.  
  592.             var2 = ((OCAviewerExtend)this).getParameter("msgwidth");
  593.             if (var2 != null) {
  594.                this.m_show_width = Integer.parseInt(var2);
  595.             }
  596.  
  597.             var2 = ((OCAviewerExtend)this).getParameter("msglrmargin");
  598.             if (var2 != null) {
  599.                this.m_xoffset = Integer.parseInt(var2);
  600.             }
  601.  
  602.             var2 = ((OCAviewerExtend)this).getParameter("msgborderthickness");
  603.             if (var2 != null) {
  604.                this.m_b_thick = Integer.parseInt(var2);
  605.             }
  606.  
  607.             var2 = ((OCAviewerExtend)this).getParameter("msgbordercolor");
  608.             if (var2 != null) {
  609.                this.m_b_color = occcolor.ConvertColor(var2);
  610.             }
  611.  
  612.             var2 = ((OCAviewerExtend)this).getParameter("msgtextcolor");
  613.             if (var2 != null) {
  614.                this.m_textcolor = occcolor.ConvertColor(var2);
  615.             }
  616.  
  617.             var2 = ((OCAviewerExtend)this).getParameter("msgbgcolor");
  618.             if (var2 != null) {
  619.                this.m_msg_bgcolor = occcolor.ConvertColor(var2);
  620.             }
  621.  
  622.             var2 = ((OCAviewerExtend)this).getParameter("msghalign");
  623.             if (var2 != null) {
  624.                this.m_msg_halign = this.getHAlignValue(var2);
  625.             }
  626.  
  627.             var2 = ((OCAviewerExtend)this).getParameter("msgfont");
  628.             if (var2 != null) {
  629.                this.m_msg_font = ocfontc.getFontSD(var2, ",");
  630.             } else {
  631.                this.m_msg_font = new Font("Helvetica", 0, 11);
  632.             }
  633.  
  634.             var2 = ((OCAviewerExtend)this).getParameter("font");
  635.             if (var2 != null) {
  636.                this.font = ocfontc.getFontSD(var2, ",");
  637.             } else {
  638.                this.font = new Font("Helvetica", 0, 11);
  639.             }
  640.  
  641.             ((Component)this).setFont(this.font);
  642.             FontMetrics var53 = ((Component)this).getFontMetrics(this.font);
  643.             var2 = ((OCAviewerExtend)this).getParameter("menucolor");
  644.             if (var2 != null) {
  645.                this.m_menu_color = occcolor.ConvertColor(var2);
  646.             }
  647.  
  648.             var2 = ((OCAviewerExtend)this).getParameter("subhlcolor");
  649.             if (var2 != null) {
  650.                this.m_menu_hlcolor = occcolor.ConvertColor(var2);
  651.             }
  652.  
  653.             var2 = ((OCAviewerExtend)this).getParameter("menuoutlinecolor");
  654.             if (var2 != null) {
  655.                this.m_outline_color = occcolor.ConvertColor(var2);
  656.             }
  657.  
  658.             var2 = ((OCAviewerExtend)this).getParameter("bgimagefile");
  659.             if (var2 != null) {
  660.                this.m_bgimagefile = var2;
  661.             } else {
  662.                this.m_bgimagefile = "-1";
  663.             }
  664.  
  665.             var2 = ((OCAviewerExtend)this).getParameter("bgxy");
  666.             if (var2 != null) {
  667.                int[] var7 = occcord.getIntValues(var2, ",", 2);
  668.                if (var7 != null) {
  669.                   this.m_bg_x = var7[0];
  670.                   this.m_bg_y = var7[1];
  671.                }
  672.             }
  673.  
  674.             var2 = ((OCAviewerExtend)this).getParameter("menutextcolor");
  675.             if (var2 != null) {
  676.                this.m_menu_textcolor = occcolor.ConvertColor(var2);
  677.             }
  678.  
  679.             var2 = ((OCAviewerExtend)this).getParameter("subhltextcolor");
  680.             if (var2 != null) {
  681.                this.m_menu_hltextcolor = occcolor.ConvertColor(var2);
  682.             }
  683.  
  684.             var2 = ((OCAviewerExtend)this).getParameter("onsbtext");
  685.             if (var2 != null) {
  686.                this.m_onsbtext = var2;
  687.             }
  688.  
  689.             var2 = ((OCAviewerExtend)this).getParameter("offsbtext");
  690.             if (var2 != null) {
  691.                this.m_offsbtext = var2;
  692.             }
  693.  
  694.             var2 = ((OCAviewerExtend)this).getParameter("halign");
  695.             if (var2 != null) {
  696.                this.m_center_text = this.getHAlignValue(var2);
  697.             }
  698.  
  699.             var2 = ((OCAviewerExtend)this).getParameter("lrmargin");
  700.             if (var2 != null) {
  701.                this.m_sub_xoffset = Integer.parseInt(var2);
  702.             }
  703.  
  704.             var2 = ((OCAviewerExtend)this).getParameter("loadwhere");
  705.             if (var2 != null) {
  706.                this.m_loadwhere = var2;
  707.             }
  708.  
  709.             var2 = ((OCAviewerExtend)this).getParameter("bgcolor");
  710.             if (var2 != null) {
  711.                this.m_page_bgcolor = occcolor.ConvertColor(var2);
  712.             }
  713.  
  714.             ((Component)this).setBackground(this.m_page_bgcolor);
  715.  
  716.             while(((OCAviewerExtend)this).getParameter("imagefile" + var3) != null) {
  717.                while(((OCAviewerExtend)this).getParameter("desc" + var3 + "-" + var4) != null) {
  718.                   ++var4;
  719.                   if (var4 > this.m_max_subs) {
  720.                      this.m_max_subs = var4;
  721.                   }
  722.                }
  723.  
  724.                var4 = 0;
  725.                ++var3;
  726.                ++this.num_images;
  727.             }
  728.  
  729.             this.m_cur_msg = new String[this.num_images];
  730.             this.m_cur_textcolor = new Color[this.num_images];
  731.             this.m_cur_bgcolor = new Color[this.num_images];
  732.             this.m_cur_msg_font = new Font[this.num_images];
  733.             this.m_switchfile = new String[this.num_images];
  734.             this.m_pic_xcord = new int[this.num_images];
  735.             this.m_pic_ycord = new int[this.num_images];
  736.             this.m_menu_xcord = new int[this.num_images];
  737.             this.m_menu_ycord = new int[this.num_images];
  738.             this.m_cur_image_desturl = new String[this.num_images];
  739.             this.m_cur_image_loadwhere = new String[this.num_images];
  740.             this.m_desc = new String[this.num_images][this.m_max_subs];
  741.             this.m_cur_desturl = new String[this.num_images][this.m_max_subs];
  742.             this.m_cur_loadwhere = new String[this.num_images][this.m_max_subs];
  743.             this.pic_width = new int[this.num_images];
  744.             this.pic_height = new int[this.num_images];
  745.             this.s_picture = new Image[this.num_images];
  746.             this.max_string_width = new int[this.num_images];
  747.             this.num_sub_items = new int[this.num_images];
  748.  
  749.             for(int var50 = 0; var50 < this.num_images; ++var50) {
  750.                int var10002;
  751.                for(int var51 = 0; ((OCAviewerExtend)this).getParameter("desc" + var50 + "-" + var51) != null; var10002 = this.num_sub_items[var50]++) {
  752.                   ++var51;
  753.                }
  754.  
  755.                var2 = ((OCAviewerExtend)this).getParameter("msg" + var50);
  756.                if (var2 != null) {
  757.                   this.m_cur_msg[var50] = new String(var2);
  758.                } else {
  759.                   this.m_cur_msg[var50] = this.m_msg;
  760.                }
  761.  
  762.                var2 = ((OCAviewerExtend)this).getParameter("msgfont" + var50);
  763.                if (var2 != null) {
  764.                   this.m_cur_msg_font[var50] = ocfontc.getFontSD(var2, ",");
  765.                } else {
  766.                   this.m_cur_msg_font[var50] = this.m_msg_font;
  767.                }
  768.  
  769.                var2 = ((OCAviewerExtend)this).getParameter("msgtextcolor" + var50);
  770.                if (var2 != null) {
  771.                   this.m_cur_textcolor[var50] = occcolor.ConvertColor(var2);
  772.                } else {
  773.                   this.m_cur_textcolor[var50] = this.m_textcolor;
  774.                }
  775.  
  776.                var2 = ((OCAviewerExtend)this).getParameter("msgbgcolor" + var50);
  777.                if (var2 != null) {
  778.                   this.m_cur_bgcolor[var50] = occcolor.ConvertColor(var2);
  779.                } else {
  780.                   this.m_cur_bgcolor[var50] = this.m_msg_bgcolor;
  781.                }
  782.  
  783.                for(int var52 = 0; var52 < this.num_sub_items[var50]; ++var52) {
  784.                   var2 = ((OCAviewerExtend)this).getParameter("desc" + var50 + "-" + var52);
  785.                   if (var2 != null) {
  786.                      this.m_desc[var50][var52] = new String(var2);
  787.                      if (var53.stringWidth(this.m_desc[var50][var52]) + this.m_sub_xoffset * 2 > this.max_string_width[var50]) {
  788.                         this.max_string_width[var50] = var53.stringWidth(this.m_desc[var50][var52]) + this.m_sub_xoffset * 2;
  789.                      }
  790.                   } else {
  791.                      this.m_desc[var50][var52] = new String("");
  792.                   }
  793.  
  794.                   var2 = ((OCAviewerExtend)this).getParameter("desturl" + var50 + "-" + var52);
  795.                   if (var2 != null) {
  796.                      this.m_cur_desturl[var50][var52] = new String(var2);
  797.                   } else {
  798.                      this.m_cur_desturl[var50][var52] = "-1";
  799.                   }
  800.  
  801.                   var2 = ((OCAviewerExtend)this).getParameter("loadwhere" + var50 + "-" + var52);
  802.                   if (var2 != null) {
  803.                      this.m_cur_loadwhere[var50][var52] = new String(var2);
  804.                   } else {
  805.                      this.m_cur_loadwhere[var50][var52] = this.m_loadwhere;
  806.                   }
  807.                }
  808.  
  809.                var2 = ((OCAviewerExtend)this).getParameter("imagefile" + var50);
  810.                if (var2 != null) {
  811.                   this.m_switchfile[var50] = new String(var2);
  812.                } else {
  813.                   this.m_switchfile[var50] = new String(" ");
  814.                }
  815.  
  816.                var2 = ((OCAviewerExtend)this).getParameter("imagexy" + var50);
  817.                if (var2 != null) {
  818.                   int[] var54 = occcord.getIntValues(var2, ",", 2);
  819.                   if (var54 != null) {
  820.                      this.m_pic_xcord[var50] = var54[0];
  821.                      this.m_pic_ycord[var50] = var54[1];
  822.                   }
  823.                }
  824.  
  825.                var2 = ((OCAviewerExtend)this).getParameter("imagewidth" + var50);
  826.                if (var2 != null) {
  827.                   this.pic_width[var50] = Integer.parseInt(var2);
  828.                } else {
  829.                   this.pic_width[var50] = 0;
  830.                }
  831.  
  832.                var2 = ((OCAviewerExtend)this).getParameter("imageheight" + var50);
  833.                if (var2 != null) {
  834.                   this.pic_height[var50] = Integer.parseInt(var2);
  835.                } else {
  836.                   this.pic_height[var50] = 0;
  837.                }
  838.  
  839.                var2 = ((OCAviewerExtend)this).getParameter("subxy" + var50);
  840.                if (var2 != null) {
  841.                   int[] var55 = occcord.getIntValues(var2, ",", 2);
  842.                   if (var55 != null) {
  843.                      this.m_menu_xcord[var50] = var55[0];
  844.                      this.m_menu_ycord[var50] = var55[1];
  845.                   }
  846.                }
  847.  
  848.                var2 = ((OCAviewerExtend)this).getParameter("imagedesturl" + var50);
  849.                if (var2 != null) {
  850.                   this.m_cur_image_desturl[var50] = var2;
  851.                } else {
  852.                   this.m_cur_image_desturl[var50] = "-1";
  853.                }
  854.  
  855.                var2 = ((OCAviewerExtend)this).getParameter("imageloadwhere" + var50);
  856.                if (var2 != null) {
  857.                   this.m_cur_image_loadwhere[var50] = var2;
  858.                } else {
  859.                   this.m_cur_image_loadwhere[var50] = this.m_loadwhere;
  860.                }
  861.             }
  862.  
  863.             this.bitheight = var53.getHeight();
  864.             ((Component)this).setFont(this.m_msg_font);
  865.             this.m_msg_fm = ((Component)this).getFontMetrics(this.m_msg_font);
  866.          }
  867.       }
  868.    }
  869.  
  870.    public boolean mouseMove(Event var1, int var2, int var3) {
  871.       if (this.last_drawn != -1 && var2 > this.menux && var2 < this.menux + this.menuwidth && var3 > this.menuy && var3 < this.menuy + this.menuheight) {
  872.          this.MouseInSub(var3 - this.menuy);
  873.          return true;
  874.       } else {
  875.          if (this.sub_highlighted) {
  876.             this.UndoSubHighlight(((Component)this).getGraphics(), this.last_sub);
  877.          }
  878.  
  879.          this.on_sub_num = -1;
  880.  
  881.          for(int var4 = 0; var4 < this.num_images; ++var4) {
  882.             if (var3 > this.m_pic_ycord[var4] && var3 < this.m_pic_ycord[var4] + this.pic_height[var4] && var2 > this.m_pic_xcord[var4] && var2 < this.m_pic_xcord[var4] + this.pic_width[var4] && var4 != this.last_drawn) {
  883.                if (this.last_drawn != -1) {
  884.                   this.UndoHP();
  885.                }
  886.  
  887.                this.last_drawn = var4;
  888.                this.HighlightPic(var4);
  889.             }
  890.          }
  891.  
  892.          return true;
  893.       }
  894.    }
  895. }
  896.