home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / javax / swing / SwingUtilities.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  16.6 KB  |  1,006 lines

  1. package javax.swing;
  2.  
  3. import java.applet.Applet;
  4. import java.awt.AWTEvent;
  5. import java.awt.Component;
  6. import java.awt.Container;
  7. import java.awt.EventQueue;
  8. import java.awt.FontMetrics;
  9. import java.awt.Frame;
  10. import java.awt.Graphics;
  11. import java.awt.Image;
  12. import java.awt.Point;
  13. import java.awt.Rectangle;
  14. import java.awt.Window;
  15. import java.awt.event.ActionEvent;
  16. import java.awt.event.InputEvent;
  17. import java.awt.event.KeyEvent;
  18. import java.awt.event.MouseEvent;
  19. import java.lang.reflect.InvocationTargetException;
  20. import java.lang.reflect.Method;
  21. import java.security.AccessController;
  22. import java.util.Hashtable;
  23. import javax.accessibility.Accessible;
  24. import javax.accessibility.AccessibleComponent;
  25. import javax.accessibility.AccessibleContext;
  26. import javax.accessibility.AccessibleStateSet;
  27. import javax.swing.plaf.UIResource;
  28. import javax.swing.text.View;
  29. import sun.awt.AppContext;
  30.  
  31. public class SwingUtilities implements SwingConstants {
  32.    private static boolean canAccessEventQueue = false;
  33.    private static boolean eventQueueTested = false;
  34.    static boolean is1dot2 = true;
  35.    private static Class eventDispatchThreadClass;
  36.    private static final Object sharedOwnerFrameKey;
  37.    static Hashtable appContextTable;
  38.    // $FF: synthetic field
  39.    static Class class$java$lang$Class;
  40.  
  41.    public static final boolean isRectangleContainingRectangle(Rectangle var0, Rectangle var1) {
  42.       return var1.x >= var0.x && var1.x + var1.width <= var0.x + var0.width && var1.y >= var0.y && var1.y + var1.height <= var0.y + var0.height;
  43.    }
  44.  
  45.    public static Rectangle getLocalBounds(Component var0) {
  46.       Rectangle var1 = new Rectangle(var0.getBounds());
  47.       var1.x = var1.y = 0;
  48.       return var1;
  49.    }
  50.  
  51.    public static Window getWindowAncestor(Component var0) {
  52.       for(Container var1 = var0.getParent(); var1 != null; var1 = ((Component)var1).getParent()) {
  53.          if (var1 instanceof Window) {
  54.             return (Window)var1;
  55.          }
  56.       }
  57.  
  58.       return null;
  59.    }
  60.  
  61.    public static Point convertPoint(Component var0, Point var1, Component var2) {
  62.       if (var0 == null && var2 == null) {
  63.          return var1;
  64.       } else {
  65.          if (var0 == null) {
  66.             var0 = getWindowAncestor((Component)var2);
  67.             if (var0 == null) {
  68.                throw new Error("Source component not connected to component tree hierarchy");
  69.             }
  70.          }
  71.  
  72.          Point var3 = new Point(var1);
  73.          convertPointToScreen(var3, (Component)var0);
  74.          if (var2 == null) {
  75.             var2 = getWindowAncestor((Component)var0);
  76.             if (var2 == null) {
  77.                throw new Error("Destination component not connected to component tree hierarchy");
  78.             }
  79.          }
  80.  
  81.          convertPointFromScreen(var3, (Component)var2);
  82.          return var3;
  83.       }
  84.    }
  85.  
  86.    public static Point convertPoint(Component var0, int var1, int var2, Component var3) {
  87.       Point var4 = new Point(var1, var2);
  88.       return convertPoint(var0, var4, var3);
  89.    }
  90.  
  91.    public static Rectangle convertRectangle(Component var0, Rectangle var1, Component var2) {
  92.       Point var3 = new Point(var1.x, var1.y);
  93.       var3 = convertPoint(var0, var3, var2);
  94.       return new Rectangle(var3.x, var3.y, var1.width, var1.height);
  95.    }
  96.  
  97.    public static Container getAncestorOfClass(Class var0, Component var1) {
  98.       if (var1 != null && var0 != null) {
  99.          Container var2;
  100.          for(var2 = var1.getParent(); var2 != null && !var0.isInstance(var2); var2 = ((Component)var2).getParent()) {
  101.          }
  102.  
  103.          return var2;
  104.       } else {
  105.          return null;
  106.       }
  107.    }
  108.  
  109.    public static Container getAncestorNamed(String var0, Component var1) {
  110.       if (var1 != null && var0 != null) {
  111.          Container var2;
  112.          for(var2 = var1.getParent(); var2 != null && !var0.equals(((Component)var2).getName()); var2 = ((Component)var2).getParent()) {
  113.          }
  114.  
  115.          return var2;
  116.       } else {
  117.          return null;
  118.       }
  119.    }
  120.  
  121.    public static Component getDeepestComponentAt(Component var0, int var1, int var2) {
  122.       if (!var0.contains(var1, var2)) {
  123.          return null;
  124.       } else {
  125.          if (var0 instanceof Container) {
  126.             Component[] var3 = ((Container)var0).getComponents();
  127.  
  128.             for(int var4 = 0; var4 < var3.length; ++var4) {
  129.                Component var5 = var3[var4];
  130.                if (var5 != null && var5.isVisible()) {
  131.                   Point var6 = var5.getLocation();
  132.                   if (var5 instanceof Container) {
  133.                      var5 = getDeepestComponentAt(var5, var1 - var6.x, var2 - var6.y);
  134.                   } else {
  135.                      var5 = var5.getComponentAt(var1 - var6.x, var2 - var6.y);
  136.                   }
  137.  
  138.                   if (var5 != null && var5.isVisible()) {
  139.                      return var5;
  140.                   }
  141.                }
  142.             }
  143.          }
  144.  
  145.          return var0;
  146.       }
  147.    }
  148.  
  149.    public static MouseEvent convertMouseEvent(Component var0, MouseEvent var1, Component var2) {
  150.       Point var3 = convertPoint(var0, new Point(var1.getX(), var1.getY()), var2);
  151.       Component var4;
  152.       if (var2 != null) {
  153.          var4 = var2;
  154.       } else {
  155.          var4 = var0;
  156.       }
  157.  
  158.       return new MouseEvent(var4, ((AWTEvent)var1).getID(), ((InputEvent)var1).getWhen(), ((InputEvent)var1).getModifiers(), var3.x, var3.y, var1.getClickCount(), var1.isPopupTrigger());
  159.    }
  160.  
  161.    public static void convertPointToScreen(Point var0, Component var1) {
  162.       while(true) {
  163.          int var3;
  164.          int var4;
  165.          if (var1 instanceof JComponent) {
  166.             var3 = ((JComponent)var1).getX();
  167.             var4 = ((JComponent)var1).getY();
  168.          } else if (var1 instanceof Applet) {
  169.             Point var5 = ((Component)var1).getLocationOnScreen();
  170.             var3 = var5.x;
  171.             var4 = var5.y;
  172.          } else {
  173.             Rectangle var2 = ((Component)var1).getBounds();
  174.             var3 = var2.x;
  175.             var4 = var2.y;
  176.          }
  177.  
  178.          var0.x += var3;
  179.          var0.y += var4;
  180.          if (!(var1 instanceof Window) && !(var1 instanceof Applet)) {
  181.             var1 = ((Component)var1).getParent();
  182.             if (var1 != null) {
  183.                continue;
  184.             }
  185.          }
  186.  
  187.          return;
  188.       }
  189.    }
  190.  
  191.    public static void convertPointFromScreen(Point var0, Component var1) {
  192.       while(true) {
  193.          int var3;
  194.          int var4;
  195.          if (var1 instanceof JComponent) {
  196.             var3 = ((JComponent)var1).getX();
  197.             var4 = ((JComponent)var1).getY();
  198.          } else if (var1 instanceof Applet) {
  199.             Point var5 = ((Component)var1).getLocationOnScreen();
  200.             var3 = var5.x;
  201.             var4 = var5.y;
  202.          } else {
  203.             Rectangle var2 = ((Component)var1).getBounds();
  204.             var3 = var2.x;
  205.             var4 = var2.y;
  206.          }
  207.  
  208.          var0.x -= var3;
  209.          var0.y -= var4;
  210.          if (!(var1 instanceof Window) && !(var1 instanceof Applet)) {
  211.             var1 = ((Component)var1).getParent();
  212.             if (var1 != null) {
  213.                continue;
  214.             }
  215.          }
  216.  
  217.          return;
  218.       }
  219.    }
  220.  
  221.    public static Window windowForComponent(Component var0) {
  222.       for(Container var1 = var0.getParent(); var1 != null; var1 = ((Component)var1).getParent()) {
  223.          if (var1 instanceof Window) {
  224.             return (Window)var1;
  225.          }
  226.       }
  227.  
  228.       return null;
  229.    }
  230.  
  231.    public static boolean isDescendingFrom(Component var0, Component var1) {
  232.       if (var0 == var1) {
  233.          return true;
  234.       } else {
  235.          for(Container var2 = var0.getParent(); var2 != null; var2 = ((Component)var2).getParent()) {
  236.             if (var2 == var1) {
  237.                return true;
  238.             }
  239.          }
  240.  
  241.          return false;
  242.       }
  243.    }
  244.  
  245.    public static Rectangle computeIntersection(int var0, int var1, int var2, int var3, Rectangle var4) {
  246.       int var5 = var0 > var4.x ? var0 : var4.x;
  247.       int var6 = var0 + var2 < var4.x + var4.width ? var0 + var2 : var4.x + var4.width;
  248.       int var7 = var1 > var4.y ? var1 : var4.y;
  249.       int var8 = var1 + var3 < var4.y + var4.height ? var1 + var3 : var4.y + var4.height;
  250.       var4.x = var5;
  251.       var4.y = var7;
  252.       var4.width = var6 - var5;
  253.       var4.height = var8 - var7;
  254.       if (var4.width < 0 || var4.height < 0) {
  255.          var4.x = var4.y = var4.width = var4.height = 0;
  256.       }
  257.  
  258.       return var4;
  259.    }
  260.  
  261.    public static Rectangle computeUnion(int var0, int var1, int var2, int var3, Rectangle var4) {
  262.       int var5 = var0 < var4.x ? var0 : var4.x;
  263.       int var6 = var0 + var2 > var4.x + var4.width ? var0 + var2 : var4.x + var4.width;
  264.       int var7 = var1 < var4.y ? var1 : var4.y;
  265.       int var8 = var1 + var3 > var4.y + var4.height ? var1 + var3 : var4.y + var4.height;
  266.       var4.x = var5;
  267.       var4.y = var7;
  268.       var4.width = var6 - var5;
  269.       var4.height = var8 - var7;
  270.       return var4;
  271.    }
  272.  
  273.    public static Rectangle[] computeDifference(Rectangle var0, Rectangle var1) {
  274.       if (var1 != null && var0.intersects(var1) && !isRectangleContainingRectangle(var1, var0)) {
  275.          Rectangle var2 = new Rectangle();
  276.          Rectangle var3 = null;
  277.          Rectangle var4 = null;
  278.          Rectangle var5 = null;
  279.          Rectangle var6 = null;
  280.          int var8 = 0;
  281.          if (isRectangleContainingRectangle(var0, var1)) {
  282.             var2.x = var0.x;
  283.             var2.y = var0.y;
  284.             var2.width = var1.x - var0.x;
  285.             var2.height = var0.height;
  286.             if (var2.width > 0 && var2.height > 0) {
  287.                var3 = new Rectangle(var2);
  288.                ++var8;
  289.             }
  290.  
  291.             var2.x = var1.x;
  292.             var2.y = var0.y;
  293.             var2.width = var1.width;
  294.             var2.height = var1.y - var0.y;
  295.             if (var2.width > 0 && var2.height > 0) {
  296.                var4 = new Rectangle(var2);
  297.                ++var8;
  298.             }
  299.  
  300.             var2.x = var1.x;
  301.             var2.y = var1.y + var1.height;
  302.             var2.width = var1.width;
  303.             var2.height = var0.y + var0.height - (var1.y + var1.height);
  304.             if (var2.width > 0 && var2.height > 0) {
  305.                var5 = new Rectangle(var2);
  306.                ++var8;
  307.             }
  308.  
  309.             var2.x = var1.x + var1.width;
  310.             var2.y = var0.y;
  311.             var2.width = var0.x + var0.width - (var1.x + var1.width);
  312.             var2.height = var0.height;
  313.             if (var2.width > 0 && var2.height > 0) {
  314.                var6 = new Rectangle(var2);
  315.                ++var8;
  316.             }
  317.          } else if (var1.x <= var0.x && var1.y <= var0.y) {
  318.             if (var1.x + var1.width > var0.x + var0.width) {
  319.                var2.x = var0.x;
  320.                var2.y = var1.y + var1.height;
  321.                var2.width = var0.width;
  322.                var2.height = var0.y + var0.height - (var1.y + var1.height);
  323.                if (var2.width > 0 && var2.height > 0) {
  324.                   var3 = var2;
  325.                   ++var8;
  326.                }
  327.             } else if (var1.y + var1.height > var0.y + var0.height) {
  328.                var2.setBounds(var1.x + var1.width, var0.y, var0.x + var0.width - (var1.x + var1.width), var0.height);
  329.                if (var2.width > 0 && var2.height > 0) {
  330.                   var3 = var2;
  331.                   ++var8;
  332.                }
  333.             } else {
  334.                var2.setBounds(var1.x + var1.width, var0.y, var0.x + var0.width - (var1.x + var1.width), var1.y + var1.height - var0.y);
  335.                if (var2.width > 0 && var2.height > 0) {
  336.                   var3 = new Rectangle(var2);
  337.                   ++var8;
  338.                }
  339.  
  340.                var2.setBounds(var0.x, var1.y + var1.height, var0.width, var0.y + var0.height - (var1.y + var1.height));
  341.                if (var2.width > 0 && var2.height > 0) {
  342.                   var4 = new Rectangle(var2);
  343.                   ++var8;
  344.                }
  345.             }
  346.          } else if (var1.x <= var0.x && var1.y + var1.height >= var0.y + var0.height) {
  347.             if (var1.x + var1.width > var0.x + var0.width) {
  348.                var2.setBounds(var0.x, var0.y, var0.width, var1.y - var0.y);
  349.                if (var2.width > 0 && var2.height > 0) {
  350.                   var3 = var2;
  351.                   ++var8;
  352.                }
  353.             } else {
  354.                var2.setBounds(var0.x, var0.y, var0.width, var1.y - var0.y);
  355.                if (var2.width > 0 && var2.height > 0) {
  356.                   var3 = new Rectangle(var2);
  357.                   ++var8;
  358.                }
  359.  
  360.                var2.setBounds(var1.x + var1.width, var1.y, var0.x + var0.width - (var1.x + var1.width), var0.y + var0.height - var1.y);
  361.                if (var2.width > 0 && var2.height > 0) {
  362.                   var4 = new Rectangle(var2);
  363.                   ++var8;
  364.                }
  365.             }
  366.          } else if (var1.x <= var0.x) {
  367.             if (var1.x + var1.width >= var0.x + var0.width) {
  368.                var2.setBounds(var0.x, var0.y, var0.width, var1.y - var0.y);
  369.                if (var2.width > 0 && var2.height > 0) {
  370.                   var3 = new Rectangle(var2);
  371.                   ++var8;
  372.                }
  373.  
  374.                var2.setBounds(var0.x, var1.y + var1.height, var0.width, var0.y + var0.height - (var1.y + var1.height));
  375.                if (var2.width > 0 && var2.height > 0) {
  376.                   var4 = new Rectangle(var2);
  377.                   ++var8;
  378.                }
  379.             } else {
  380.                var2.setBounds(var0.x, var0.y, var0.width, var1.y - var0.y);
  381.                if (var2.width > 0 && var2.height > 0) {
  382.                   var3 = new Rectangle(var2);
  383.                   ++var8;
  384.                }
  385.  
  386.                var2.setBounds(var1.x + var1.width, var1.y, var0.x + var0.width - (var1.x + var1.width), var1.height);
  387.                if (var2.width > 0 && var2.height > 0) {
  388.                   var4 = new Rectangle(var2);
  389.                   ++var8;
  390.                }
  391.  
  392.                var2.setBounds(var0.x, var1.y + var1.height, var0.width, var0.y + var0.height - (var1.y + var1.height));
  393.                if (var2.width > 0 && var2.height > 0) {
  394.                   var5 = new Rectangle(var2);
  395.                   ++var8;
  396.                }
  397.             }
  398.          } else if (var1.x <= var0.x + var0.width && var1.x + var1.width > var0.x + var0.width) {
  399.             if (var1.y <= var0.y && var1.y + var1.height > var0.y + var0.height) {
  400.                var2.setBounds(var0.x, var0.y, var1.x - var0.x, var0.height);
  401.                if (var2.width > 0 && var2.height > 0) {
  402.                   var3 = var2;
  403.                   ++var8;
  404.                }
  405.             } else if (var1.y <= var0.y) {
  406.                var2.setBounds(var0.x, var0.y, var1.x - var0.x, var1.y + var1.height - var0.y);
  407.                if (var2.width > 0 && var2.height > 0) {
  408.                   var3 = new Rectangle(var2);
  409.                   ++var8;
  410.                }
  411.  
  412.                var2.setBounds(var0.x, var1.y + var1.height, var0.width, var0.y + var0.height - (var1.y + var1.height));
  413.                if (var2.width > 0 && var2.height > 0) {
  414.                   var4 = new Rectangle(var2);
  415.                   ++var8;
  416.                }
  417.             } else if (var1.y + var1.height > var0.y + var0.height) {
  418.                var2.setBounds(var0.x, var0.y, var0.width, var1.y - var0.y);
  419.                if (var2.width > 0 && var2.height > 0) {
  420.                   var3 = new Rectangle(var2);
  421.                   ++var8;
  422.                }
  423.  
  424.                var2.setBounds(var0.x, var1.y, var1.x - var0.x, var0.y + var0.height - var1.y);
  425.                if (var2.width > 0 && var2.height > 0) {
  426.                   var4 = new Rectangle(var2);
  427.                   ++var8;
  428.                }
  429.             } else {
  430.                var2.setBounds(var0.x, var0.y, var0.width, var1.y - var0.y);
  431.                if (var2.width > 0 && var2.height > 0) {
  432.                   var3 = new Rectangle(var2);
  433.                   ++var8;
  434.                }
  435.  
  436.                var2.setBounds(var0.x, var1.y, var1.x - var0.x, var1.height);
  437.                if (var2.width > 0 && var2.height > 0) {
  438.                   var4 = new Rectangle(var2);
  439.                   ++var8;
  440.                }
  441.  
  442.                var2.setBounds(var0.x, var1.y + var1.height, var0.width, var0.y + var0.height - (var1.y + var1.height));
  443.                if (var2.width > 0 && var2.height > 0) {
  444.                   var5 = new Rectangle(var2);
  445.                   ++var8;
  446.                }
  447.             }
  448.          } else if (var1.x >= var0.x && var1.x + var1.width <= var0.x + var0.width) {
  449.             if (var1.y <= var0.y && var1.y + var1.height > var0.y + var0.height) {
  450.                var2.setBounds(var0.x, var0.y, var1.x - var0.x, var0.height);
  451.                if (var2.width > 0 && var2.height > 0) {
  452.                   var3 = new Rectangle(var2);
  453.                   ++var8;
  454.                }
  455.  
  456.                var2.setBounds(var1.x + var1.width, var0.y, var0.x + var0.width - (var1.x + var1.width), var0.height);
  457.                if (var2.width > 0 && var2.height > 0) {
  458.                   var4 = new Rectangle(var2);
  459.                   ++var8;
  460.                }
  461.             } else if (var1.y <= var0.y) {
  462.                var2.setBounds(var0.x, var0.y, var1.x - var0.x, var0.height);
  463.                if (var2.width > 0 && var2.height > 0) {
  464.                   var3 = new Rectangle(var2);
  465.                   ++var8;
  466.                }
  467.  
  468.                var2.setBounds(var1.x, var1.y + var1.height, var1.width, var0.y + var0.height - (var1.y + var1.height));
  469.                if (var2.width > 0 && var2.height > 0) {
  470.                   var4 = new Rectangle(var2);
  471.                   ++var8;
  472.                }
  473.  
  474.                var2.setBounds(var1.x + var1.width, var0.y, var0.x + var0.width - (var1.x + var1.width), var0.height);
  475.                if (var2.width > 0 && var2.height > 0) {
  476.                   var5 = new Rectangle(var2);
  477.                   ++var8;
  478.                }
  479.             } else {
  480.                var2.setBounds(var0.x, var0.y, var1.x - var0.x, var0.height);
  481.                if (var2.width > 0 && var2.height > 0) {
  482.                   var3 = new Rectangle(var2);
  483.                   ++var8;
  484.                }
  485.  
  486.                var2.setBounds(var1.x, var0.y, var1.width, var1.y - var0.y);
  487.                if (var2.width > 0 && var2.height > 0) {
  488.                   var4 = new Rectangle(var2);
  489.                   ++var8;
  490.                }
  491.  
  492.                var2.setBounds(var1.x + var1.width, var0.y, var0.x + var0.width - (var1.x + var1.width), var0.height);
  493.                if (var2.width > 0 && var2.height > 0) {
  494.                   var5 = new Rectangle(var2);
  495.                   ++var8;
  496.                }
  497.             }
  498.          }
  499.  
  500.          Rectangle[] var7 = new Rectangle[var8];
  501.          var8 = 0;
  502.          if (var3 != null) {
  503.             var7[var8++] = var3;
  504.          }
  505.  
  506.          if (var4 != null) {
  507.             var7[var8++] = var4;
  508.          }
  509.  
  510.          if (var5 != null) {
  511.             var7[var8++] = var5;
  512.          }
  513.  
  514.          if (var6 != null) {
  515.             var7[var8++] = var6;
  516.          }
  517.  
  518.          return var7;
  519.       } else {
  520.          return new Rectangle[0];
  521.       }
  522.    }
  523.  
  524.    public static boolean isLeftMouseButton(MouseEvent var0) {
  525.       if (is1dot2) {
  526.          return (((InputEvent)var0).getModifiers() & 16) != 0;
  527.       } else {
  528.          return (((InputEvent)var0).getModifiers() & 16) != 0 || (((InputEvent)var0).getModifiers() & 12) == 0;
  529.       }
  530.    }
  531.  
  532.    public static boolean isMiddleMouseButton(MouseEvent var0) {
  533.       return (((InputEvent)var0).getModifiers() & 8) == 8;
  534.    }
  535.  
  536.    public static boolean isRightMouseButton(MouseEvent var0) {
  537.       return (((InputEvent)var0).getModifiers() & 4) == 4;
  538.    }
  539.  
  540.    public static int computeStringWidth(FontMetrics var0, String var1) {
  541.       if (is1dot2) {
  542.          return var0.stringWidth(var1);
  543.       } else {
  544.          int[] var2 = var0.getWidths();
  545.          int var5 = 0;
  546.          int var3 = 0;
  547.  
  548.          for(int var4 = var1.length(); var3 < var4; ++var3) {
  549.             char var6 = var1.charAt(var3);
  550.             if (var6 > 255) {
  551.                return var0.stringWidth(var1);
  552.             }
  553.  
  554.             var5 += var2[var6];
  555.          }
  556.  
  557.          return var5;
  558.       }
  559.    }
  560.  
  561.    public static String layoutCompoundLabel(JComponent var0, FontMetrics var1, String var2, Icon var3, int var4, int var5, int var6, int var7, Rectangle var8, Rectangle var9, Rectangle var10, int var11) {
  562.       boolean var12 = true;
  563.       int var13 = var5;
  564.       int var14 = var7;
  565.       if (var0 != null && !((Component)var0).getComponentOrientation().isLeftToRight()) {
  566.          var12 = false;
  567.       }
  568.  
  569.       switch (var5) {
  570.          case 10:
  571.             var13 = var12 ? 2 : 4;
  572.             break;
  573.          case 11:
  574.             var13 = var12 ? 4 : 2;
  575.       }
  576.  
  577.       switch (var7) {
  578.          case 10:
  579.             var14 = var12 ? 2 : 4;
  580.             break;
  581.          case 11:
  582.             var14 = var12 ? 4 : 2;
  583.       }
  584.  
  585.       return layoutCompoundLabelImpl(var0, var1, var2, var3, var4, var13, var6, var14, var8, var9, var10, var11);
  586.    }
  587.  
  588.    public static String layoutCompoundLabel(FontMetrics var0, String var1, Icon var2, int var3, int var4, int var5, int var6, Rectangle var7, Rectangle var8, Rectangle var9, int var10) {
  589.       return layoutCompoundLabelImpl((JComponent)null, var0, var1, var2, var3, var4, var5, var6, var7, var8, var9, var10);
  590.    }
  591.  
  592.    private static String layoutCompoundLabelImpl(JComponent var0, FontMetrics var1, String var2, Icon var3, int var4, int var5, int var6, int var7, Rectangle var8, Rectangle var9, Rectangle var10, int var11) {
  593.       if (var3 != null) {
  594.          var9.width = var3.getIconWidth();
  595.          var9.height = var3.getIconHeight();
  596.       } else {
  597.          var9.width = var9.height = 0;
  598.       }
  599.  
  600.       boolean var12 = var2 == null || var2.equals("");
  601.       View var13 = null;
  602.       if (var12) {
  603.          var10.width = var10.height = 0;
  604.          var2 = "";
  605.       } else {
  606.          var13 = var0 != null ? (View)var0.getClientProperty("html") : null;
  607.          if (var13 != null) {
  608.             var10.width = (int)var13.getPreferredSpan(0);
  609.             var10.height = (int)var13.getPreferredSpan(1);
  610.          } else {
  611.             var10.width = computeStringWidth(var1, var2);
  612.             var10.height = var1.getHeight();
  613.          }
  614.       }
  615.  
  616.       int var14 = !var12 && var3 != null ? var11 : 0;
  617.       if (!var12) {
  618.          int var15;
  619.          if (var7 == 0) {
  620.             var15 = var8.width;
  621.          } else {
  622.             var15 = var8.width - (var9.width + var14);
  623.          }
  624.  
  625.          if (var10.width > var15) {
  626.             if (var13 != null) {
  627.                var10.width = var15;
  628.             } else {
  629.                String var16 = "...";
  630.                int var17 = computeStringWidth(var1, var16);
  631.  
  632.                int var18;
  633.                for(var18 = 0; var18 < var2.length(); ++var18) {
  634.                   var17 += var1.charWidth(var2.charAt(var18));
  635.                   if (var17 > var15) {
  636.                      break;
  637.                   }
  638.                }
  639.  
  640.                var2 = var2.substring(0, var18) + var16;
  641.                var10.width = computeStringWidth(var1, var2);
  642.             }
  643.          }
  644.       }
  645.  
  646.       if (var6 == 1) {
  647.          if (var7 != 0) {
  648.             var10.y = 0;
  649.          } else {
  650.             var10.y = -(var10.height + var14);
  651.          }
  652.       } else if (var6 == 0) {
  653.          var10.y = var9.height / 2 - var10.height / 2;
  654.       } else if (var7 != 0) {
  655.          var10.y = var9.height - var10.height;
  656.       } else {
  657.          var10.y = var9.height + var14;
  658.       }
  659.  
  660.       if (var7 == 2) {
  661.          var10.x = -(var10.width + var14);
  662.       } else if (var7 == 0) {
  663.          var10.x = var9.width / 2 - var10.width / 2;
  664.       } else {
  665.          var10.x = var9.width + var14;
  666.       }
  667.  
  668.       int var21 = Math.min(var9.x, var10.x);
  669.       int var22 = Math.max(var9.x + var9.width, var10.x + var10.width) - var21;
  670.       int var23 = Math.min(var9.y, var10.y);
  671.       int var24 = Math.max(var9.y + var9.height, var10.y + var10.height) - var23;
  672.       int var20;
  673.       if (var4 == 1) {
  674.          var20 = var8.y - var23;
  675.       } else if (var4 == 0) {
  676.          var20 = var8.y + var8.height / 2 - (var23 + var24 / 2);
  677.       } else {
  678.          var20 = var8.y + var8.height - (var23 + var24);
  679.       }
  680.  
  681.       int var19;
  682.       if (var5 == 2) {
  683.          var19 = var8.x - var21;
  684.       } else if (var5 == 4) {
  685.          var19 = var8.x + var8.width - (var21 + var22);
  686.       } else {
  687.          var19 = var8.x + var8.width / 2 - (var21 + var22 / 2);
  688.       }
  689.  
  690.       var10.x += var19;
  691.       var10.y += var20;
  692.       var9.x += var19;
  693.       var9.y += var20;
  694.       return var2;
  695.    }
  696.  
  697.    public static void paintComponent(Graphics var0, Component var1, Container var2, int var3, int var4, int var5, int var6) {
  698.       getCellRendererPane(var1, var2).paintComponent(var0, var1, var2, var3, var4, var5, var6, false);
  699.    }
  700.  
  701.    public static void paintComponent(Graphics var0, Component var1, Container var2, Rectangle var3) {
  702.       paintComponent(var0, var1, var2, var3.x, var3.y, var3.width, var3.height);
  703.    }
  704.  
  705.    private static CellRendererPane getCellRendererPane(Component var0, Container var1) {
  706.       Object var2 = var0.getParent();
  707.       if (var2 instanceof CellRendererPane) {
  708.          if (((Component)var2).getParent() != var1) {
  709.             var1.add((Component)var2);
  710.          }
  711.       } else {
  712.          var2 = new CellRendererPane();
  713.          ((Container)var2).add(var0);
  714.          var1.add((Component)var2);
  715.       }
  716.  
  717.       return (CellRendererPane)var2;
  718.    }
  719.  
  720.    public static void updateComponentTreeUI(Component var0) {
  721.       updateComponentTreeUI0(var0);
  722.       var0.invalidate();
  723.       var0.validate();
  724.       var0.repaint();
  725.    }
  726.  
  727.    private static void updateComponentTreeUI0(Component var0) {
  728.       if (var0 instanceof JComponent) {
  729.          ((JComponent)var0).updateUI();
  730.       }
  731.  
  732.       Component[] var1 = null;
  733.       if (var0 instanceof JMenu) {
  734.          var1 = ((JMenu)var0).getMenuComponents();
  735.       } else if (var0 instanceof Container) {
  736.          var1 = ((Container)var0).getComponents();
  737.       }
  738.  
  739.       if (var1 != null) {
  740.          for(int var2 = 0; var2 < var1.length; ++var2) {
  741.             updateComponentTreeUI0(var1[var2]);
  742.          }
  743.       }
  744.  
  745.    }
  746.  
  747.    public static void invokeLater(Runnable var0) {
  748.       EventQueue.invokeLater(var0);
  749.    }
  750.  
  751.    public static void invokeAndWait(Runnable var0) throws InterruptedException, InvocationTargetException {
  752.       EventQueue.invokeAndWait(var0);
  753.    }
  754.  
  755.    public static boolean isEventDispatchThread() {
  756.       return EventQueue.isDispatchThread();
  757.    }
  758.  
  759.    public static int getAccessibleIndexInParent(Component var0) {
  760.       return var0.getAccessibleContext().getAccessibleIndexInParent();
  761.    }
  762.  
  763.    public static Accessible getAccessibleAt(Component var0, Point var1) {
  764.       if (var0 instanceof Container) {
  765.          return var0.getAccessibleContext().getAccessibleComponent().getAccessibleAt(var1);
  766.       } else if (!(var0 instanceof Accessible)) {
  767.          return null;
  768.       } else {
  769.          Accessible var2 = (Accessible)var0;
  770.          if (var2 != null) {
  771.             AccessibleContext var3 = var2.getAccessibleContext();
  772.             if (var3 != null) {
  773.                int var6 = var3.getAccessibleChildrenCount();
  774.  
  775.                for(int var7 = 0; var7 < var6; ++var7) {
  776.                   var2 = var3.getAccessibleChild(var7);
  777.                   if (var2 != null) {
  778.                      var3 = var2.getAccessibleContext();
  779.                      if (var3 != null) {
  780.                         AccessibleComponent var4 = var3.getAccessibleComponent();
  781.                         if (var4 != null && var4.isShowing()) {
  782.                            Point var5 = var4.getLocation();
  783.                            Point var8 = new Point(var1.x - var5.x, var1.y - var5.y);
  784.                            if (var4.contains(var8)) {
  785.                               return var2;
  786.                            }
  787.                         }
  788.                      }
  789.                   }
  790.                }
  791.             }
  792.          }
  793.  
  794.          return (Accessible)var0;
  795.       }
  796.    }
  797.  
  798.    public static AccessibleStateSet getAccessibleStateSet(Component var0) {
  799.       return var0.getAccessibleContext().getAccessibleStateSet();
  800.    }
  801.  
  802.    public static int getAccessibleChildrenCount(Component var0) {
  803.       return var0.getAccessibleContext().getAccessibleChildrenCount();
  804.    }
  805.  
  806.    public static Accessible getAccessibleChild(Component var0, int var1) {
  807.       return var0.getAccessibleContext().getAccessibleChild(var1);
  808.    }
  809.  
  810.    public static Component findFocusOwner(Component var0) {
  811.       if (var0 instanceof Window) {
  812.          return ((Window)var0).getFocusOwner();
  813.       } else if (var0 instanceof JComponent && ((JComponent)var0).hasFocus()) {
  814.          return var0;
  815.       } else if (!(var0 instanceof Container)) {
  816.          return null;
  817.       } else {
  818.          int var1 = ((Container)var0).getComponentCount();
  819.  
  820.          for(int var2 = 0; var2 < var1; ++var2) {
  821.             Component var3 = findFocusOwner(((Container)var0).getComponent(var2));
  822.             if (var3 != null) {
  823.                return var3;
  824.             }
  825.          }
  826.  
  827.          return null;
  828.       }
  829.    }
  830.  
  831.    public static JRootPane getRootPane(Component var0) {
  832.       if (var0 instanceof RootPaneContainer) {
  833.          return ((RootPaneContainer)var0).getRootPane();
  834.       } else {
  835.          while(var0 != null) {
  836.             if (var0 instanceof JRootPane) {
  837.                return (JRootPane)var0;
  838.             }
  839.  
  840.             var0 = ((Component)var0).getParent();
  841.          }
  842.  
  843.          return null;
  844.       }
  845.    }
  846.  
  847.    public static Component getRoot(Component var0) {
  848.       Object var1 = null;
  849.  
  850.       for(Object var2 = var0; var2 != null; var2 = ((Component)var2).getParent()) {
  851.          if (var2 instanceof Window) {
  852.             return (Component)var2;
  853.          }
  854.  
  855.          if (var2 instanceof Applet) {
  856.             var1 = var2;
  857.          }
  858.       }
  859.  
  860.       return (Component)var1;
  861.    }
  862.  
  863.    public static boolean notifyAction(Action var0, KeyStroke var1, KeyEvent var2, Object var3, int var4) {
  864.       if (var0 != null && var0.isEnabled()) {
  865.          Object var5 = var0.getValue("ActionCommandKey");
  866.          boolean var6;
  867.          if (var5 == null && var0 instanceof JComponent.ActionStandin) {
  868.             var6 = true;
  869.          } else {
  870.             var6 = false;
  871.          }
  872.  
  873.          String var7;
  874.          if (var5 != null) {
  875.             var7 = var5.toString();
  876.          } else if (!var6 && var2.getKeyChar() != '\uffff') {
  877.             var7 = String.valueOf(var2.getKeyChar());
  878.          } else {
  879.             var7 = null;
  880.          }
  881.  
  882.          var0.actionPerformed(new ActionEvent(var3, 1001, var7, var4));
  883.          return true;
  884.       } else {
  885.          return false;
  886.       }
  887.    }
  888.  
  889.    public static void replaceUIInputMap(JComponent var0, int var1, InputMap var2) {
  890.       InputMap var4;
  891.       for(InputMap var3 = var0.getInputMap(var1); var3 != null; var3 = var4) {
  892.          var4 = var3.getParent();
  893.          if (var4 == null || var4 instanceof UIResource) {
  894.             var3.setParent(var2);
  895.             return;
  896.          }
  897.       }
  898.  
  899.    }
  900.  
  901.    public static void replaceUIActionMap(JComponent var0, ActionMap var1) {
  902.       ActionMap var3;
  903.       for(ActionMap var2 = var0.getActionMap(); var2 != null; var2 = var3) {
  904.          var3 = var2.getParent();
  905.          if (var3 == null || var3 instanceof UIResource) {
  906.             var2.setParent(var1);
  907.             return;
  908.          }
  909.       }
  910.  
  911.    }
  912.  
  913.    public static InputMap getUIInputMap(JComponent var0, int var1) {
  914.       InputMap var3;
  915.       for(InputMap var2 = var0.getInputMap(var1, false); var2 != null; var2 = var3) {
  916.          var3 = var2.getParent();
  917.          if (var3 instanceof UIResource) {
  918.             return var3;
  919.          }
  920.       }
  921.  
  922.       return null;
  923.    }
  924.  
  925.    public static ActionMap getUIActionMap(JComponent var0) {
  926.       ActionMap var2;
  927.       for(ActionMap var1 = var0.getActionMap(false); var1 != null; var1 = var2) {
  928.          var2 = var1.getParent();
  929.          if (var2 instanceof UIResource) {
  930.             return var2;
  931.          }
  932.       }
  933.  
  934.       return null;
  935.    }
  936.  
  937.    static Frame getSharedOwnerFrame() {
  938.       Object var0 = (Frame)appContextGet(sharedOwnerFrameKey);
  939.       if (var0 == null) {
  940.          var0 = new 1();
  941.          appContextPut(sharedOwnerFrameKey, var0);
  942.       }
  943.  
  944.       return (Frame)var0;
  945.    }
  946.  
  947.    static Object appContextGet(Object var0) {
  948.       return AppContext.getAppContext().get(var0);
  949.    }
  950.  
  951.    static void appContextPut(Object var0, Object var1) {
  952.       AppContext.getAppContext().put(var0, var1);
  953.    }
  954.  
  955.    static void appContextRemove(Object var0) {
  956.       AppContext.getAppContext().remove(var0);
  957.    }
  958.  
  959.    static Class loadSystemClass(String var0) throws ClassNotFoundException {
  960.       return Class.forName(var0, true, ClassLoader.getSystemClassLoader());
  961.    }
  962.  
  963.    static final void doPrivileged(Runnable var0) {
  964.       AccessController.doPrivileged(new 2(var0));
  965.    }
  966.  
  967.    static boolean isLeftToRight(Component var0) {
  968.       return var0.getComponentOrientation().isLeftToRight();
  969.    }
  970.  
  971.    private SwingUtilities() {
  972.       throw new Error("SwingUtilities is just a container for static methods");
  973.    }
  974.  
  975.    static boolean doesIconReferenceImage(Icon var0, Image var1) {
  976.       Image var2 = var0 != null && var0 instanceof ImageIcon ? ((ImageIcon)var0).getImage() : null;
  977.       return var2 == var1;
  978.    }
  979.  
  980.    // $FF: synthetic method
  981.    static Class class$(String var0) {
  982.       try {
  983.          return Class.forName(var0);
  984.       } catch (ClassNotFoundException var2) {
  985.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  986.       }
  987.    }
  988.  
  989.    static {
  990.       try {
  991.          Method var0 = (class$java$lang$Class == null ? (class$java$lang$Class = class$("java.lang.Class")) : class$java$lang$Class).getMethod("getProtectionDomain", (Class[])null);
  992.          is1dot2 = var0 != null;
  993.       } catch (NoSuchMethodException var1) {
  994.          is1dot2 = false;
  995.       }
  996.  
  997.       if (!is1dot2) {
  998.          System.err.println("warning: running 1.2 version of SwingUtilities");
  999.       }
  1000.  
  1001.       eventDispatchThreadClass = null;
  1002.       sharedOwnerFrameKey = new StringBuffer("SwingUtilities.sharedOwnerFrame");
  1003.       appContextTable = new Hashtable(2);
  1004.    }
  1005. }
  1006.