home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161a.iso / handson / files / copyjava.exe / com / sun / java / swing / SwingUtilities.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-02-26  |  19.1 KB  |  1,031 lines

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