home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / javax / swing / SwingUtilities.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  18.8 KB  |  1,089 lines

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