home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 November / PCO1197.ISO / FilesBBS / WIN95 / NET_COM / N32E403.EXE / nav40l.z / java40.jar / netscape / security / ImgPanel.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-09-04  |  15.0 KB  |  1,043 lines

  1. package netscape.security;
  2.  
  3. import java.applet.Applet;
  4. import java.awt.Color;
  5. import java.awt.Component;
  6. import java.awt.Container;
  7. import java.awt.Event;
  8. import java.awt.Font;
  9. import java.awt.FontMetrics;
  10. import java.awt.Frame;
  11. import java.awt.Graphics;
  12. import java.awt.Image;
  13. import java.awt.Label;
  14. import java.awt.LayoutManager;
  15. import java.awt.Panel;
  16. import java.awt.Point;
  17. import java.awt.Rectangle;
  18. import java.awt.Scrollbar;
  19. import java.awt.Toolkit;
  20. import java.net.MalformedURLException;
  21. import java.net.URL;
  22. import java.util.Enumeration;
  23. import java.util.Hashtable;
  24. import java.util.StringTokenizer;
  25. import java.util.Vector;
  26.  
  27. class ImgPanel extends Panel {
  28.    Hashtable txtHash_g = new Hashtable();
  29.    Hashtable imgHash_g = new Hashtable();
  30.    Hashtable sbarHash_g = new Hashtable();
  31.    Image offImg_g;
  32.    Graphics offG_g;
  33.    boolean dblBuff_g = false;
  34.    int fnSzDecr_g = 1;
  35.    URLTipWindow urltw_g;
  36.    boolean urltwNowShowing_g = false;
  37.    Applet applet_g = GlobalCtxt.getApplet();
  38.    Frame parentFrame_g;
  39.    TxtRes prevTxtRes_g;
  40.    Graphics gdup_g;
  41.    boolean isDirty_g = true;
  42.    XYLayout hXYL = new XYLayout((Rectangle)null);
  43.    boolean rszEvent_g = false;
  44.    static final String FONT_SIZE_STR = "FONT SIZE=";
  45.    static final String END_FONT_STR = "</FONT>";
  46.    static final String LINE_BRK_STR = "<BR>";
  47.    static final String BW_STR = "<BW>";
  48.    boolean querySBarsNotDone = true;
  49.    Font prevFn;
  50.  
  51.    ImgPanel() {
  52.       super.setLayout(this.hXYL);
  53.       ((Component)this).invalidate();
  54.    }
  55.  
  56.    public void setLayout(LayoutManager var1) {
  57.    }
  58.  
  59.    void setImage(Label var1, URL var2, int var3, int var4, int var5, int var6, int var7, int var8) {
  60.       ImgWrap var9 = null;
  61.       if (var2 != null) {
  62.          var9 = ImgWrap.getImageWrap(var2);
  63.       }
  64.  
  65.       this.imgHash_g.put(var1, new ImgRes(var9, var3, var4, var5, var6, var7, var8));
  66.    }
  67.  
  68.    void setImage(Label var1, String var2, int var3, int var4, int var5, int var6, int var7, int var8) {
  69.       ImgWrap var9 = null;
  70.       if (var2 != null) {
  71.          var9 = ImgWrap.getImageWrap(var2);
  72.       }
  73.  
  74.       this.imgHash_g.put(var1, new ImgRes(var9, var3, var4, var5, var6, var7, var8));
  75.    }
  76.  
  77.    void setText(Label var1, String var2, int var3, int var4, int var5, int var6, Font var7, Color var8) {
  78.       int var9 = 0;
  79.       int var10 = 0;
  80.       String var11 = null;
  81.       if ((var9 = var2.indexOf("<href>")) > 0) {
  82.          var10 = var2.indexOf("</href>");
  83.          var11 = var2.substring(var9 + 6, var10);
  84.          var2 = var2.substring(0, var9 - 1);
  85.          if (this.urltw_g == null) {
  86.             this.urltw_g = new URLTipWindow(this.parentFrame_g = this.getParentFrame());
  87.          }
  88.       }
  89.  
  90.       this.txtHash_g.put(var1, new TxtRes(var2, var3, var4, var5, var6, var7, var8, var11));
  91.    }
  92.  
  93.    void queryLabels() {
  94.       Component[] var1 = ((Container)this).getComponents();
  95.  
  96.       for(int var2 = 0; var2 < ((Container)this).countComponents(); ++var2) {
  97.          Component var3 = var1[var2];
  98.          if (var3 instanceof Label) {
  99.             Label var4 = (Label)var3;
  100.             if (((Component)var4).isEnabled()) {
  101.                String var5 = var4.getText().trim();
  102.                int var6 = -1;
  103.                if ((var6 = var5.indexOf("<img>")) > -1) {
  104.                   if (this.imgHash_g.containsKey(var4)) {
  105.                      ImgRes var7 = (ImgRes)this.imgHash_g.get(var4);
  106.                      if (var7.reshape) {
  107.                         Rectangle var8 = ((Component)var4).bounds();
  108.                         var7.x = var8.x;
  109.                         var7.y = var8.y;
  110.                         var7.wd = var8.width;
  111.                         var7.ht = var8.height;
  112.                      }
  113.  
  114.                      if (!var7.isDirty) {
  115.                         continue;
  116.                      }
  117.                   }
  118.  
  119.                   var5 = var5.substring(var6 + 6).trim();
  120.                   int var17 = 0;
  121.                   int var19 = 0;
  122.                   if ((var6 = var5.indexOf("<tile>")) > -1) {
  123.                      var17 = -1;
  124.                      var19 = -1;
  125.                      var5 = var5.substring(var6 + 7).trim();
  126.                   } else {
  127.                      if ((var6 = var5.indexOf("<trows=")) > -1) {
  128.                         int var9;
  129.                         var17 = new Integer(var5.substring(var6 + 7, var9 = var5.indexOf(">", var6)));
  130.                         var5 = var5.substring(var9 + 1).trim();
  131.                      }
  132.  
  133.                      if ((var6 = var5.indexOf("<tcols=")) > -1) {
  134.                         int var21;
  135.                         var19 = new Integer(var5.substring(var6 + 7, var21 = var5.indexOf(">", var6)));
  136.                         var5 = var5.substring(var21 + 1).trim();
  137.                      }
  138.                   }
  139.  
  140.                   String var22 = var5.trim();
  141.                   boolean var10 = false;
  142.  
  143.                   try {
  144.                      if (this.applet_g.getCodeBase() != null) {
  145.                         var10 = true;
  146.                         var22 = this.applet_g.getCodeBase().toString() + var22;
  147.                      }
  148.  
  149.                      if (var10) {
  150.                         this.setImage(var4, new URL(var22), ((Component)var4).location().x, ((Component)var4).location().y, ((Component)var4).size().width, ((Component)var4).size().height, var17, var19);
  151.                      } else {
  152.                         this.setImage(var4, var22, ((Component)var4).location().x, ((Component)var4).location().y, ((Component)var4).size().width, ((Component)var4).size().height, var17, var19);
  153.                      }
  154.                   } catch (MalformedURLException var11) {
  155.                   }
  156.                } else {
  157.                   Rectangle var18 = ((Component)var4).bounds();
  158.                   if (this.txtHash_g.containsKey(var4)) {
  159.                      TxtRes var20 = (TxtRes)this.txtHash_g.get(var4);
  160.                      if (var20.isDirty) {
  161.                         var20.str = var5;
  162.                         var20.x = var18.x;
  163.                         var20.y = var18.y;
  164.                         var20.wd = var18.width;
  165.                         var20.ht = var18.height;
  166.                         var20.fn = ((Component)var4).getFont();
  167.                         var20.clr = ((Component)var4).getForeground();
  168.                      }
  169.                   } else {
  170.                      this.setText(var4, var5, var18.x, var18.y, var18.width, var18.height, ((Component)var4).getFont(), ((Component)var4).getForeground());
  171.                   }
  172.                }
  173.             }
  174.          }
  175.       }
  176.  
  177.    }
  178.  
  179.    void queryScrollBars() {
  180.       Component[] var1 = ((Container)this).getComponents();
  181.  
  182.       for(int var2 = 0; var2 < ((Container)this).countComponents(); ++var2) {
  183.          Component var3 = var1[var2];
  184.          if (var3 instanceof Scrollbar) {
  185.             Scrollbar var4 = (Scrollbar)var3;
  186.             if (((Component)var4).isEnabled()) {
  187.                Rectangle var5 = ((Component)var4).bounds();
  188.                int var6 = var4.getOrientation();
  189.                Enumeration var7 = this.txtHash_g.keys();
  190.  
  191.                while(var7.hasMoreElements()) {
  192.                   Label var8 = (Label)var7.nextElement();
  193.                   if (((Component)var8).isEnabled()) {
  194.                      TxtRes var9 = (TxtRes)this.txtHash_g.get(var8);
  195.                      if (var6 == 1 && var9.y == var5.y && var9.ht == var5.height && var9.x + var9.wd + 10 > var5.x) {
  196.                         this.sbarHash_g.put(var4, var9);
  197.                         var9.vsbar = var4;
  198.                         break;
  199.                      }
  200.  
  201.                      if (var6 == 0 && var9.x == var5.x && var9.wd == var5.width && var9.y + var9.ht + 10 > var5.height) {
  202.                         this.sbarHash_g.put(var4, var9);
  203.                         var9.hsbar = var4;
  204.                         break;
  205.                      }
  206.                   }
  207.                }
  208.             }
  209.          }
  210.       }
  211.  
  212.    }
  213.  
  214.    Frame getParentFrame() {
  215.       Container var1;
  216.       for(var1 = ((Component)this).getParent(); !(var1 instanceof Frame); var1 = ((Component)var1).getParent()) {
  217.       }
  218.  
  219.       return (Frame)var1;
  220.    }
  221.  
  222.    void dr3DRect(Graphics var1, int var2, int var3, int var4, int var5, int var6, Color var7, Color var8) {
  223.       int var9 = 1;
  224.       int var13 = 1;
  225.       var1.setColor(Color.black);
  226.       var1.drawRect(var2, var3, var4, var5);
  227.       int var12 = var6 - 2;
  228.       var1.setColor(var7);
  229.  
  230.       while(var12-- > 0) {
  231.          var1.drawLine(var2 + var9, var3 + var9, var2 + var4 - var9, var3 + var9);
  232.          var1.drawLine(var2 + var9, var3 + var9, var2 + var9, var3 + var5 - var9);
  233.          ++var9;
  234.       }
  235.  
  236.       var12 = var6 - 1;
  237.       var1.setColor(var8);
  238.  
  239.       while(var12-- > 0) {
  240.          var1.drawLine(var2 + var13, var3 + var5 - var13, var2 + var4 - var13, var3 + var5 - var13);
  241.          var1.drawLine(var2 + var4 - var13, var3 + var13, var2 + var4 - var13, var3 + var5 - var13);
  242.          ++var13;
  243.       }
  244.  
  245.    }
  246.  
  247.    Vector parseStr(String var1, TxtRes var2) {
  248.       Vector var3 = new Vector(0);
  249.       Object var4 = null;
  250.       Font var5 = null;
  251.       int var7 = 0;
  252.       StringTokenizer var15;
  253.       if (this.applet_g instanceof PseudoApplet) {
  254.          var15 = ((PseudoApplet)this.applet_g).getStringTokenizer(var1);
  255.       } else {
  256.          var15 = new StringTokenizer(var1, "\t\n\r", true);
  257.       }
  258.  
  259.       Font var8 = var2.fn;
  260.       var3.addElement(new Font(var8.getName(), var8.getStyle(), var8.getSize()));
  261.  
  262.       while(var15.hasMoreTokens()) {
  263.          String var6 = var15.nextToken();
  264.          if (var6 != null) {
  265.             String var9 = var6.toUpperCase();
  266.             boolean var10 = true;
  267.             if (var9.indexOf("<BR>") > -1) {
  268.                var3.addElement(var6);
  269.             } else if (var9.indexOf("<BW>") > -1) {
  270.                var2.bw = 1;
  271.             } else {
  272.                var7 = 0;
  273.                switch (var6.charAt(var7++)) {
  274.                   case '<':
  275.                      switch (var6.charAt(var7++)) {
  276.                         case '/':
  277.                            var8 = var5;
  278.                            boolean var21 = true;
  279.                            String var23 = var6.toUpperCase();
  280.                            if (var23.indexOf("</FONT>") > -1) {
  281.                               var7 += 4;
  282.                            } else {
  283.                               ++var7;
  284.  
  285.                               while(var6.charAt(var7) >= '0' && var6.charAt(var7) <= '9') {
  286.                                  ++var7;
  287.                               }
  288.                            }
  289.                            break;
  290.                         case 'F':
  291.                         case 'f':
  292.                            int var11 = -1;
  293.                            int var12 = -1;
  294.                            int var13 = var8.getSize();
  295.                            String var14 = var6.toUpperCase();
  296.                            if (var14.indexOf("FONT SIZE=") > -1) {
  297.                               if ((var11 = var14.indexOf("+")) > -1) {
  298.                                  var13 += new Integer(var14.substring(var11 + 1, var14.indexOf(">")));
  299.                               } else if ((var11 = var14.indexOf("-")) > -1) {
  300.                                  var13 += new Integer(var14.substring(var11 + 1, var12 = var14.indexOf(">")));
  301.                               }
  302.                            }
  303.  
  304.                            var5 = new Font(var8.getName(), var8.getStyle(), var8.getSize());
  305.                            var8 = new Font(var8.getName(), 0, var13);
  306.                            var7 += var12 - var7;
  307.                            break;
  308.                         case 'b':
  309.                            var5 = new Font(var8.getName(), var8.getStyle(), var8.getSize());
  310.                            var8 = new Font(var8.getName(), 1, var8.getSize());
  311.                            break;
  312.                         case 'i':
  313.                            var5 = new Font(var8.getName(), var8.getStyle(), var8.getSize());
  314.                            var8 = new Font(var8.getName(), 2, var8.getSize());
  315.                            break;
  316.                         case 'p':
  317.                            var5 = new Font(var8.getName(), var8.getStyle(), var8.getSize());
  318.                            var8 = new Font(var8.getName(), 0, var8.getSize());
  319.                            break;
  320.                         default:
  321.                            int var22 = 0;
  322.                            int var24 = var8.getSize();
  323.                            --var7;
  324.  
  325.                            while(var6.charAt(var7) >= '0' && var6.charAt(var7) <= '9') {
  326.                               ++var22;
  327.                               ++var7;
  328.                            }
  329.  
  330.                            if (var22 > 0) {
  331.                               String var25 = var6.substring(var6.indexOf("<") + 1, var6.indexOf(">"));
  332.                               var24 = new Integer(new String(var25));
  333.                            }
  334.  
  335.                            var5 = new Font(var8.getName(), var8.getStyle(), var8.getSize());
  336.                            var8 = new Font(var6, var8.getStyle(), var24);
  337.                      }
  338.  
  339.                      if (var6.charAt(var7) == '>') {
  340.                         var3.addElement(var8);
  341.                      }
  342.                      break;
  343.                   default:
  344.                      var3.addElement(var6);
  345.                }
  346.             }
  347.          }
  348.       }
  349.  
  350.       return var3;
  351.    }
  352.  
  353.    Vector parseStrAndResizeFonts(Graphics var1, String var2, TxtRes var3) {
  354.       Font var5 = var3.fn;
  355.       Object var6 = null;
  356.       Vector var25;
  357.       if ((var25 = var3.tokens) == null) {
  358.          var25 = this.parseStr(var2, var3);
  359.       }
  360.  
  361.       if (!GlobalCtxt.rszFnSz_g) {
  362.          return var25;
  363.       } else {
  364.          boolean var13 = false;
  365.          byte var14 = 0;
  366.          int var15 = 0;
  367.          int var16 = 0;
  368.          boolean var17 = false;
  369.  
  370.          while(true) {
  371.             var1.setFont(var3.fn);
  372.             FontMetrics var4 = var1.getFontMetrics(var3.fn);
  373.             int var7 = 0;
  374.             int var8 = 0;
  375.             int var9 = var3.wd;
  376.             int var10 = var4.getMaxAscent() + var4.getLeading();
  377.             int var11 = var4.getMaxAscent();
  378.             int var12 = 0;
  379.             var15 = 0;
  380.             var16 = 0;
  381.             var17 = false;
  382.  
  383.             for(int var18 = 0; var18 < var25.size(); ++var18) {
  384.                Object var19 = var25.elementAt(var18);
  385.                if (var19 instanceof Font) {
  386.                   var1.setFont((Font)var19);
  387.                   var4 = var1.getFontMetrics((Font)var19);
  388.                } else {
  389.                   ++var16;
  390.                   boolean var20 = true;
  391.                   String var21 = ((String)var19).toUpperCase();
  392.                   if (var21.indexOf("<BR>") > -1) {
  393.                      var17 = true;
  394.                   } else {
  395.                      var7 += var4.stringWidth((String)var19);
  396.                   }
  397.  
  398.                   if (var17 || var7 > var9 && var16 != 1) {
  399.                      var8 += var10;
  400.                      ++var12;
  401.                      var15 = var7;
  402.                      if (!var17) {
  403.                         --var18;
  404.                      }
  405.  
  406.                      var16 = 0;
  407.                      var11 = 0;
  408.                      var10 = 0;
  409.                      var7 = 0;
  410.                      var17 = false;
  411.                   } else {
  412.                      if (var8 == 0) {
  413.                         var10 = Math.max(var10, var4.getMaxAscent() + var4.getDescent());
  414.                         var11 = Math.max(var11, var4.getMaxAscent());
  415.                      } else {
  416.                         var10 = Math.max(var10, var4.getHeight());
  417.                         var11 = Math.max(var11, var4.getAscent() + var4.getLeading());
  418.                      }
  419.  
  420.                      var15 = var7;
  421.                   }
  422.                }
  423.             }
  424.  
  425.             var8 += var10;
  426.             if (var8 <= var3.ht && var15 <= var9) {
  427.                if (var14 == -1) {
  428.                   var14 = 0;
  429.                   break;
  430.                }
  431.  
  432.                boolean var33 = true;
  433.  
  434.                for(int var35 = 0; var35 < var25.size(); ++var35) {
  435.                   Object var37 = var25.elementAt(var35);
  436.                   if (var37 instanceof Font) {
  437.                      var5 = (Font)var37;
  438.                      if (var5.getSize() + this.fnSzDecr_g < GlobalCtxt.maxFnSz_g) {
  439.                         Font var22 = new Font(var5.getName(), var5.getStyle(), var5.getSize() + this.fnSzDecr_g);
  440.                         var25.removeElementAt(var35);
  441.                         var25.insertElementAt(var22, var35);
  442.                         var33 = false;
  443.                      }
  444.                   }
  445.                }
  446.  
  447.                if (var33) {
  448.                   var14 = 0;
  449.                   break;
  450.                }
  451.  
  452.                var14 = 1;
  453.             } else {
  454.                for(int var32 = 0; var32 < var25.size(); ++var32) {
  455.                   Object var34 = var25.elementAt(var32);
  456.                   if (var34 instanceof Font) {
  457.                      var5 = (Font)var34;
  458.                      if (var5.getSize() - this.fnSzDecr_g <= GlobalCtxt.minFnSz_g) {
  459.                         return var25;
  460.                      }
  461.  
  462.                      Font var36 = new Font(var5.getName(), var5.getStyle(), var5.getSize() - this.fnSzDecr_g);
  463.                      var25.removeElementAt(var32);
  464.                      var25.insertElementAt(var36, var32);
  465.                   }
  466.                }
  467.  
  468.                var14 = -1;
  469.             }
  470.          }
  471.  
  472.          return var25;
  473.       }
  474.    }
  475.  
  476.    void paintLine(Graphics var1, TxtRes var2, Vector var3, int var4, int var5, int var6, int var7, int var8) {
  477.       int var9 = 0;
  478.       var1 = var1.create();
  479.       if (this.prevFn != null) {
  480.          var1.setFont(this.prevFn);
  481.       }
  482.  
  483.       FontMetrics var10 = var1.getFontMetrics();
  484.       var1.setColor(var2.clr);
  485.  
  486.       for(int var11 = var4; var11 < var5; ++var11) {
  487.          Object var12 = var3.elementAt(var11);
  488.          if (var12 instanceof Font) {
  489.             var1.setFont((Font)var12);
  490.             var10 = var1.getFontMetrics();
  491.             this.prevFn = (Font)var12;
  492.          } else {
  493.             int var13 = var2.bw;
  494.             var1.clipRect(var2.x + var13, var2.y + var13, var2.wd - 2 * var13, var2.ht - 2 * var13);
  495.             var1.drawString((String)var12, var2.x + var9 + var13 + var2.xorg, var2.y + var6 + var8 + var13 + var2.yorg);
  496.             int var14 = var10.stringWidth((String)var12);
  497.             var9 += var14;
  498.             var2.isDirty = false;
  499.          }
  500.       }
  501.  
  502.    }
  503.  
  504.    void setTxtDirty(Label var1, boolean var2) {
  505.       TxtRes var3 = (TxtRes)this.txtHash_g.get(var1);
  506.       if (var3 != null) {
  507.          var3.isDirty = true;
  508.          if (var2) {
  509.             var3.tokens = null;
  510.          }
  511.  
  512.          this.isDirty_g = true;
  513.          var3.vsbshown = false;
  514.          if (var3.vsbar != null) {
  515.             var3.xorg = 0;
  516.             var3.yorg = 0;
  517.             var3.vsbar.setValue(0);
  518.             var3.vsbval = 0;
  519.          }
  520.  
  521.          if (var3.hsbar != null) {
  522.             var3.xorg = 0;
  523.             var3.yorg = 0;
  524.             var3.hsbar.setValue(0);
  525.             var3.hsbval = 0;
  526.          }
  527.       }
  528.  
  529.    }
  530.  
  531.    void setAllTxtsDirty(boolean var1) {
  532.       Enumeration var2 = this.txtHash_g.keys();
  533.  
  534.       while(var2.hasMoreElements()) {
  535.          Label var3 = (Label)var2.nextElement();
  536.          this.setTxtDirty(var3, var1);
  537.       }
  538.  
  539.    }
  540.  
  541.    void paintText(Graphics var1, TxtRes var2) {
  542.       Vector var3 = var2.tokens;
  543.       var1.setFont(var2.fn);
  544.       FontMetrics var4 = var1.getFontMetrics(var2.fn);
  545.       int var5 = 0;
  546.       int var6 = 0;
  547.       int var7 = 0;
  548.       int var8 = var2.wd;
  549.       int var9 = var4.getMaxAscent() + var4.getLeading();
  550.       int var10 = 0;
  551.       int var11 = var4.getMaxAscent();
  552.       int var12 = 0;
  553.       int var13 = 0;
  554.       boolean var14 = false;
  555.       if (var2.bw > 0) {
  556.          var1.setColor(Color.black);
  557.          var1.drawRect(var2.x, var2.y, var2.wd, var2.ht);
  558.       }
  559.  
  560.       for(int var15 = 0; var15 < var3.size(); ++var15) {
  561.          Object var16 = var3.elementAt(var15);
  562.          if (var16 instanceof Font) {
  563.             var1.setFont((Font)var16);
  564.             var4 = var1.getFontMetrics((Font)var16);
  565.          } else {
  566.             ++var13;
  567.             boolean var17 = true;
  568.             String var18 = ((String)var16).toUpperCase();
  569.             if (var18.indexOf("<BR>") > -1) {
  570.                var14 = true;
  571.             } else {
  572.                var6 += var4.stringWidth((String)var16);
  573.             }
  574.  
  575.             if (var14 || var6 > var8 && var13 != 1) {
  576.                this.paintLine(var1, var2, var3, var5, var15, var7, var9, var11);
  577.                if (!var14) {
  578.                   var5 = var15--;
  579.                } else {
  580.                   var5 = var15 + 1;
  581.                }
  582.  
  583.                var7 += var9;
  584.                ++var12;
  585.                var10 = var9;
  586.                var13 = 0;
  587.                var11 = 0;
  588.                var9 = 0;
  589.                var6 = 0;
  590.                var14 = false;
  591.             } else if (var7 == 0) {
  592.                var9 = Math.max(var9, var4.getMaxAscent() + var4.getDescent());
  593.                var11 = Math.max(var11, var4.getMaxAscent());
  594.             } else {
  595.                var9 = Math.max(var9, var4.getHeight());
  596.                var11 = Math.max(var11, var4.getAscent() + var4.getLeading());
  597.             }
  598.          }
  599.       }
  600.  
  601.       this.paintLine(var1, var2, var3, var5, var3.size(), var7, var9, var11);
  602.       var7 += var10;
  603.       if (var2.vsbval == 0 && var2.vsbar != null && !var2.vsbshown) {
  604.          if (var7 > var2.ht) {
  605.             var2.vsbar.setValues(0, var2.ht, 0, var7 / var2.ht * var2.ht);
  606.             var2.vsbar.setLineIncrement(var10);
  607.             var2.vsbar.setPageIncrement(var2.ht);
  608.             var2.vsbshown = true;
  609.             return;
  610.          }
  611.  
  612.          var2.vsbshown = true;
  613.       }
  614.  
  615.    }
  616.  
  617.    void paintAllTexts(Graphics var1) {
  618.       Enumeration var2 = this.txtHash_g.keys();
  619.  
  620.       while(var2.hasMoreElements()) {
  621.          Label var3 = (Label)var2.nextElement();
  622.          if (((Component)var3).isEnabled()) {
  623.             TxtRes var4 = (TxtRes)this.txtHash_g.get(var3);
  624.             Object var5 = null;
  625.             if (var4.isDirty) {
  626.                Vector var6 = this.parseStrAndResizeFonts(var1, var4.str, var4);
  627.                var4.tokens = var6;
  628.             }
  629.  
  630.             this.paintText(var1, var4);
  631.          }
  632.       }
  633.  
  634.       Toolkit.getDefaultToolkit().sync();
  635.    }
  636.  
  637.    void setImgDirty(Label var1, boolean var2) {
  638.       ImgRes var3 = (ImgRes)this.imgHash_g.get(var1);
  639.       if (var3 != null) {
  640.          if (var2) {
  641.             var3.isDirty = true;
  642.          } else {
  643.             var3.reshape = true;
  644.          }
  645.  
  646.          this.isDirty_g = true;
  647.       }
  648.  
  649.    }
  650.  
  651.    void setAllImgsDirty(boolean var1) {
  652.       Enumeration var2 = this.imgHash_g.keys();
  653.  
  654.       while(var2.hasMoreElements()) {
  655.          Label var3 = (Label)var2.nextElement();
  656.          this.setImgDirty(var3, var1);
  657.       }
  658.  
  659.    }
  660.  
  661.    boolean paintImage(Graphics var1) {
  662.       boolean var2 = true;
  663.       var1 = var1.create();
  664.       Enumeration var4 = this.imgHash_g.keys();
  665.  
  666.       while(var4.hasMoreElements()) {
  667.          Label var5 = (Label)var4.nextElement();
  668.          ImgRes var6 = (ImgRes)this.imgHash_g.get(var5);
  669.          ImgWrap var7 = var6.imgWrap;
  670.          Image var8 = var7.getImage();
  671.          if (var8 != null && var6.tileRows == -1 && var6.tileCols == -1) {
  672.             ((Component)this).prepareImage(var8, var7);
  673.             var7.callWait(0);
  674.             int var9 = var8.getWidth(var7);
  675.             int var10 = var8.getHeight(var7);
  676.             int var11 = ((Component)this).size().height / var10 + 1;
  677.             int var12 = ((Component)this).size().width / var9 + 1;
  678.             Graphics var3 = var1.create();
  679.  
  680.             for(int var13 = 0; var13 < var11 + 1; ++var13) {
  681.                for(int var14 = 0; var14 < var12 + 1; ++var14) {
  682.                   if (var2 = var3.drawImage(var8, var14 * var9, var13 * var10, var7)) {
  683.                      var6.isDirty = false;
  684.                   }
  685.                }
  686.             }
  687.  
  688.             var6.paintedInPrevStep = true;
  689.          }
  690.       }
  691.  
  692.       Enumeration var19 = this.imgHash_g.keys();
  693.  
  694.       while(var19.hasMoreElements()) {
  695.          Label var20 = (Label)var19.nextElement();
  696.          ImgRes var22 = (ImgRes)this.imgHash_g.get(var20);
  697.          ImgWrap var25 = var22.imgWrap;
  698.          Image var28 = var25.getImage();
  699.          if (var28 != null && !var22.paintedInPrevStep && (var22.tileRows > 0 || var22.tileCols > 0)) {
  700.             ((Component)this).prepareImage(var28, var25);
  701.             var25.callWait(0);
  702.             int var31 = var28.getWidth(var25);
  703.             int var33 = var28.getHeight(var25);
  704.             int var34 = var22.ht / var33 + 1;
  705.             int var35 = var22.wd / var31 + 1;
  706.             if (var22.tileRows > 0) {
  707.                var34 = var22.tileRows;
  708.             }
  709.  
  710.             if (var22.tileCols > 0) {
  711.                var35 = var22.tileCols;
  712.             }
  713.  
  714.             Graphics var17 = var1.create();
  715.             var17.translate(var22.x, var22.y);
  716.             var17.clipRect(0, 0, var22.wd, var22.ht);
  717.  
  718.             for(int var36 = 0; var36 < var34 + 1; ++var36) {
  719.                for(int var15 = 0; var15 < var35 + 1; ++var15) {
  720.                   if (var2 = var17.drawImage(var28, var15 * var31, var36 * var33, var25)) {
  721.                      var22.isDirty = false;
  722.                   }
  723.                }
  724.             }
  725.  
  726.             var22.paintedInPrevStep = true;
  727.          }
  728.       }
  729.  
  730.       Enumeration var21 = this.imgHash_g.keys();
  731.  
  732.       while(var21.hasMoreElements()) {
  733.          Label var23 = (Label)var21.nextElement();
  734.          ImgRes var26 = (ImgRes)this.imgHash_g.get(var23);
  735.          ImgWrap var29 = var26.imgWrap;
  736.          Image var32 = var29.getImage();
  737.          if (var32 != null && !var26.paintedInPrevStep) {
  738.             Graphics var18 = var1.create();
  739.             var18.clipRect(var26.x, var26.y, var26.wd, var26.ht);
  740.             ((Component)this).prepareImage(var32, var29);
  741.             var29.callWait(0);
  742.             if (var2 = var18.drawImage(var32, var26.x, var26.y, var29)) {
  743.                var26.isDirty = false;
  744.                var26.paintedInPrevStep = true;
  745.             }
  746.          }
  747.       }
  748.  
  749.       ImgRes var30;
  750.       for(Enumeration var24 = this.imgHash_g.keys(); var24.hasMoreElements(); var30.paintedInPrevStep = false) {
  751.          Label var27 = (Label)var24.nextElement();
  752.          var30 = (ImgRes)this.imgHash_g.get(var27);
  753.       }
  754.  
  755.       Toolkit.getDefaultToolkit().sync();
  756.       return var2;
  757.    }
  758.  
  759.    public synchronized void paint(Graphics var1) {
  760.       if (this.gdup_g == null) {
  761.          this.gdup_g = var1.create();
  762.       }
  763.  
  764.       if (!this.isDirty_g) {
  765.          var1.drawImage(this.offImg_g, 0, 0, this);
  766.          Toolkit.getDefaultToolkit().sync();
  767.       } else {
  768.          this.queryLabels();
  769.          if (this.querySBarsNotDone) {
  770.             this.queryScrollBars();
  771.             this.querySBarsNotDone = false;
  772.          }
  773.  
  774.          Graphics var2 = var1;
  775.          int var3 = ((Component)this).size().width;
  776.          int var4 = ((Component)this).size().height;
  777.          Color var5 = ((Component)this).getBackground();
  778.          ((Component)this).getForeground();
  779.          Rectangle var6 = new Rectangle(3, 3, var3 - 6, var4 - 6);
  780.          if (this.dblBuff_g && this.offImg_g == null) {
  781.             this.offImg_g = ((Component)this).createImage(var3, var4);
  782.             this.offG_g = this.offImg_g.getGraphics();
  783.             this.offG_g.setColor(var5);
  784.             this.offG_g.fillRect(0, 0, var3, var4);
  785.             this.dr3DRect(this.offG_g, 0, 0, var3, var4, 3, Color.white, Color.black);
  786.             this.offG_g.clipRect(var6.x, var6.y, var6.width, var6.height);
  787.          }
  788.  
  789.          if (this.dblBuff_g) {
  790.             var1 = this.offG_g;
  791.          } else {
  792.             this.dr3DRect(var1, 0, 0, var3, var4, 3, Color.white, Color.black);
  793.             var1.clipRect(var6.x, var6.y, var6.width, var6.height);
  794.          }
  795.  
  796.          var1.setColor(var5);
  797.          var1.fillRect(0, 0, var6.width, var6.height);
  798.          boolean var7 = false;
  799.          if (this.imgHash_g != null && this.isDirty_g) {
  800.             var7 = this.paintImage(var1);
  801.          }
  802.  
  803.          if (this.txtHash_g != null && this.isDirty_g) {
  804.             this.paintAllTexts(var1);
  805.          }
  806.  
  807.          if (this.dblBuff_g) {
  808.             var2.drawImage(this.offImg_g, 0, 0, this);
  809.             Toolkit.getDefaultToolkit().sync();
  810.             if (!var7) {
  811.                this.isDirty_g = true;
  812.             } else {
  813.                this.isDirty_g = false;
  814.             }
  815.          }
  816.  
  817.          if (this.rszEvent_g) {
  818.             this.rszEvent_g = false;
  819.          }
  820.  
  821.       }
  822.    }
  823.  
  824.    TxtRes eventInsideHotLink(Event var1) {
  825.       Enumeration var2 = this.txtHash_g.keys();
  826.  
  827.       while(var2.hasMoreElements()) {
  828.          Label var3 = (Label)var2.nextElement();
  829.          TxtRes var4 = (TxtRes)this.txtHash_g.get(var3);
  830.          Rectangle var5 = new Rectangle(var4.x, var4.y, var4.wd, var4.ht);
  831.          if (var4.urlStr != null && var5.inside(var1.x, var1.y)) {
  832.             return var4;
  833.          }
  834.       }
  835.  
  836.       return null;
  837.    }
  838.  
  839.    Point getFrameCoord(int var1, int var2) {
  840.       Point var3 = new Point(var1, var2);
  841.       Object var4 = this;
  842.  
  843.       do {
  844.          var3.x += ((Component)var4).location().x;
  845.          var3.y += ((Component)var4).location().y;
  846.          var4 = ((Component)var4).getParent();
  847.       } while(var4 != this.parentFrame_g);
  848.  
  849.       return var3;
  850.    }
  851.  
  852.    void showUrlTipWindow(TxtRes var1) {
  853.       if (!this.urltw_g.isVisible()) {
  854.          String var2 = var1.urlStr;
  855.          Point var3 = this.getFrameCoord(var1.x, var1.y + var1.ht);
  856.          this.urltw_g.reshape(var3.x, var3.y, 10, 10);
  857.          if (this.applet_g.getCodeBase() != null) {
  858.             var2 = this.applet_g.getCodeBase().toString() + var1.urlStr;
  859.          }
  860.  
  861.          this.urltw_g.setUrlStr(var2);
  862.          this.urltwNowShowing_g = true;
  863.       }
  864.  
  865.    }
  866.  
  867.    public synchronized boolean handleEvent(Event var1) {
  868.       if (var1.target != this && !(var1.target instanceof Scrollbar)) {
  869.          return false;
  870.       } else if (var1.id == -1) {
  871.          this.setAllTxtsDirty(false);
  872.          this.setAllImgsDirty(false);
  873.          return true;
  874.       } else {
  875.          if (var1.id != 506 && var1.id != 503) {
  876.             if (var1.id == 501) {
  877.                TxtRes var9;
  878.                if ((var9 = this.eventInsideHotLink(var1)) != null) {
  879.                   String var3 = var9.urlStr;
  880.                   if (this.urltwNowShowing_g) {
  881.                      this.gdup_g.setXORMode(Color.blue);
  882.                      this.gdup_g.setColor(Color.yellow);
  883.                      this.gdup_g.drawRect(this.prevTxtRes_g.x, this.prevTxtRes_g.y, this.prevTxtRes_g.wd, this.prevTxtRes_g.ht);
  884.                   }
  885.  
  886.                   this.urltw_g.hide();
  887.                   this.urltwNowShowing_g = false;
  888.  
  889.                   try {
  890.                      if (this.applet_g.getCodeBase() != null) {
  891.                         var3 = this.applet_g.getCodeBase().toString() + var9.urlStr;
  892.                      }
  893.  
  894.                      this.applet_g.getAppletContext().showDocument(new URL(var3), new String("_blank"));
  895.                   } catch (MalformedURLException var8) {
  896.                   }
  897.                }
  898.             } else if (var1.target instanceof Scrollbar && (var1.id == 603 || var1.id == 604 || var1.id == 601 || var1.id == 602 || var1.id == 605)) {
  899.                Scrollbar var11 = (Scrollbar)var1.target;
  900.                int var4 = 0;
  901.                int var5 = 0;
  902.                TxtRes var10 = (TxtRes)this.sbarHash_g.get(var11);
  903.                int var6 = var11.getOrientation();
  904.                if (var6 == 0) {
  905.                   var4 = var10.hsbval;
  906.                } else {
  907.                   var4 = var10.vsbval;
  908.                }
  909.  
  910.                if (var1.id == 603) {
  911.                   var4 -= var11.getPageIncrement();
  912.                   if (var4 == var11.getMinimum() - var11.getPageIncrement()) {
  913.                      var5 = 0;
  914.                      var4 = var11.getMinimum();
  915.                   } else if (var4 < var11.getMinimum()) {
  916.                      var5 = var4 + var11.getPageIncrement();
  917.                      var4 = var11.getMinimum();
  918.                   } else {
  919.                      var5 = var11.getPageIncrement();
  920.                   }
  921.                } else if (var1.id == 604) {
  922.                   var4 += var11.getPageIncrement();
  923.                   if (var4 == var11.getMaximum() + var11.getPageIncrement()) {
  924.                      var5 = 0;
  925.                      var4 = var11.getMaximum();
  926.                   } else if (var4 > var11.getMaximum()) {
  927.                      var5 = -(var11.getMaximum() - (var4 - var11.getPageIncrement()));
  928.                      var4 = var11.getMaximum();
  929.                   } else {
  930.                      var5 = -var11.getPageIncrement();
  931.                   }
  932.                } else if (var1.id == 601) {
  933.                   var4 -= var11.getLineIncrement();
  934.                   if (var4 == var11.getMinimum() - var11.getLineIncrement()) {
  935.                      var5 = 0;
  936.                      var4 = var11.getMinimum();
  937.                   } else if (var4 < var11.getMinimum()) {
  938.                      var5 = var4 + var11.getLineIncrement();
  939.                      var4 = var11.getMinimum();
  940.                   } else {
  941.                      var5 = var11.getLineIncrement();
  942.                   }
  943.                } else if (var1.id == 602) {
  944.                   var4 += var11.getLineIncrement();
  945.                   if (var4 == var11.getMaximum() + var11.getLineIncrement()) {
  946.                      var5 = 0;
  947.                      var4 = var11.getMaximum();
  948.                   } else if (var4 > var11.getMaximum()) {
  949.                      var5 = -(var11.getMaximum() - (var4 - var11.getLineIncrement()));
  950.                      var4 = var11.getMaximum();
  951.                   } else {
  952.                      var5 = -var11.getLineIncrement();
  953.                   }
  954.                } else if (var1.id == 605) {
  955.                   int var7 = var11.getValue();
  956.                   var5 = var4 - var7;
  957.                   var4 += var7 - var4;
  958.                }
  959.  
  960.                if (var5 != 0) {
  961.                   this.scrollRes(var11, var5, var10);
  962.                   if (var6 == 0) {
  963.                      var10.hsbval = var4;
  964.                   } else {
  965.                      var10.vsbval = var4;
  966.                   }
  967.                }
  968.             }
  969.          } else {
  970.             TxtRes var2;
  971.             if ((var2 = this.eventInsideHotLink(var1)) != null) {
  972.                if (!this.urltwNowShowing_g) {
  973.                   this.gdup_g.setXORMode(Color.blue);
  974.                   this.gdup_g.setColor(Color.yellow);
  975.                   this.gdup_g.drawRect(var2.x, var2.y, var2.wd, var2.ht);
  976.                }
  977.  
  978.                this.showUrlTipWindow(var2);
  979.                this.prevTxtRes_g = var2;
  980.             } else if (this.urltwNowShowing_g) {
  981.                this.gdup_g.setXORMode(Color.blue);
  982.                this.gdup_g.setColor(Color.yellow);
  983.                this.gdup_g.drawRect(this.prevTxtRes_g.x, this.prevTxtRes_g.y, this.prevTxtRes_g.wd, this.prevTxtRes_g.ht);
  984.                this.urltwNowShowing_g = false;
  985.             }
  986.          }
  987.  
  988.          return true;
  989.       }
  990.    }
  991.  
  992.    private void scrollRes(Scrollbar var1, int var2, Geometry var3) {
  993.       int var4 = var1.getOrientation();
  994.       ((Component)this).getForeground();
  995.       int var5 = var3.bw;
  996.       Rectangle var6 = new Rectangle(var3.x + var5, var3.y + var5, var3.wd - 2 * var5, var3.ht - 2 * var5);
  997.       int var7 = var3.xorg;
  998.       int var8 = var3.yorg;
  999.       int var9 = 0;
  1000.       int var10 = 0;
  1001.       if (var4 == 0) {
  1002.          var10 = var2;
  1003.       } else {
  1004.          var9 = var2;
  1005.       }
  1006.  
  1007.       Graphics var11 = ((Component)this).getGraphics();
  1008.       var11.clipRect(var6.x, var6.y, var6.width, var6.height);
  1009.       if (var9 != 0) {
  1010.          var11.copyArea(var6.x, var6.y, var6.width, var6.height, 0, var9);
  1011.          var8 += var9;
  1012.          if (var9 < 0) {
  1013.             var11.clipRect(var6.x, var6.y + var6.height - -var9, var6.width, -var9);
  1014.          } else if (var9 > 0) {
  1015.             var11.clipRect(var6.x, var6.y, var6.width, var9);
  1016.          }
  1017.       } else if (var10 != 0) {
  1018.          if (var7 + var10 > var6.x) {
  1019.             var10 = -var7 + var6.x;
  1020.          }
  1021.  
  1022.          if (var1.getValue() == 0) {
  1023.             var10 = -var7 + var6.x;
  1024.          }
  1025.  
  1026.          var11.copyArea(var6.x, var6.y, var6.width, var6.height, var10, 0);
  1027.          var7 += var10;
  1028.          if (var10 < 0) {
  1029.             var11.clipRect(var6.x + var6.width - -var10, var6.y, -var10, var6.height);
  1030.          } else if (var10 > 0) {
  1031.             var11.clipRect(var6.x, var6.y, var10, var6.height);
  1032.          }
  1033.       }
  1034.  
  1035.       var3.xorg = var7;
  1036.       var3.yorg = var8;
  1037.       Color var12 = ((Component)this).getBackground();
  1038.       var11.setColor(var12);
  1039.       var11.fillRect(var3.x, var3.y, var3.wd, var3.ht);
  1040.       this.paintText(var11, (TxtRes)var3);
  1041.    }
  1042. }
  1043.