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 / java / awt / Container.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  17.2 KB  |  1,163 lines

  1. package java.awt;
  2.  
  3. import java.awt.GraphicsCallback.PaintAllCallback;
  4. import java.awt.GraphicsCallback.PaintCallback;
  5. import java.awt.GraphicsCallback.PaintHeavyweightComponentsCallback;
  6. import java.awt.GraphicsCallback.PrintAllCallback;
  7. import java.awt.GraphicsCallback.PrintCallback;
  8. import java.awt.GraphicsCallback.PrintHeavyweightComponentsCallback;
  9. import java.awt.event.ContainerEvent;
  10. import java.awt.event.ContainerListener;
  11. import java.awt.event.KeyEvent;
  12. import java.awt.peer.ContainerPeer;
  13. import java.awt.peer.LightweightPeer;
  14. import java.io.IOException;
  15. import java.io.ObjectInputStream;
  16. import java.io.ObjectOutputStream;
  17. import java.io.PrintStream;
  18. import java.io.PrintWriter;
  19. import java.util.EventListener;
  20. import java.util.Vector;
  21. import javax.accessibility.Accessible;
  22. import javax.accessibility.AccessibleComponent;
  23. import javax.accessibility.AccessibleContext;
  24. import javax.swing.JRootPane;
  25. import sun.awt.DebugHelper;
  26. import sun.awt.GlobalCursorManager;
  27.  
  28. public class Container extends Component {
  29.    int ncomponents;
  30.    Component[] component = new Component[4];
  31.    LayoutManager layoutMgr;
  32.    private LightweightDispatcher dispatcher;
  33.    private Dimension maxSize;
  34.    private transient Vector printingThreads = new Vector();
  35.    private transient boolean printing = false;
  36.    transient ContainerListener containerListener;
  37.    transient int listeningChildren;
  38.    transient int listeningBoundsChildren;
  39.    private static final long serialVersionUID = 4613797578919906343L;
  40.    private static final DebugHelper dbg;
  41.    private int containerSerializedDataVersion = 1;
  42.    // $FF: synthetic field
  43.    static Class class$java$awt$Container;
  44.    // $FF: synthetic field
  45.    static Class class$java$awt$event$ContainerListener;
  46.  
  47.    private static native void initIDs();
  48.  
  49.    public int getComponentCount() {
  50.       return this.countComponents();
  51.    }
  52.  
  53.    public int countComponents() {
  54.       return this.ncomponents;
  55.    }
  56.  
  57.    public Component getComponent(int var1) {
  58.       Object var2 = ((Component)this).getTreeLock();
  59.       synchronized(var2) {
  60.          if (var1 >= 0 && var1 < this.ncomponents) {
  61.             Component var3 = this.component[var1];
  62.             return var3;
  63.          } else {
  64.             throw new ArrayIndexOutOfBoundsException("No such child: " + var1);
  65.          }
  66.       }
  67.    }
  68.  
  69.    public Component[] getComponents() {
  70.       return this.getComponents_NoClientCode();
  71.    }
  72.  
  73.    final Component[] getComponents_NoClientCode() {
  74.       Object var1 = ((Component)this).getTreeLock();
  75.       synchronized(var1) {
  76.          Component[] var2 = new Component[this.ncomponents];
  77.          System.arraycopy(this.component, 0, var2, 0, this.ncomponents);
  78.          return var2;
  79.       }
  80.    }
  81.  
  82.    public Insets getInsets() {
  83.       return this.insets();
  84.    }
  85.  
  86.    public Insets insets() {
  87.       if (super.peer != null && super.peer instanceof ContainerPeer) {
  88.          ContainerPeer var1 = (ContainerPeer)super.peer;
  89.          return (Insets)var1.insets().clone();
  90.       } else {
  91.          return new Insets(0, 0, 0, 0);
  92.       }
  93.    }
  94.  
  95.    public Component add(Component var1) {
  96.       this.addImpl(var1, (Object)null, -1);
  97.       return var1;
  98.    }
  99.  
  100.    public Component add(String var1, Component var2) {
  101.       this.addImpl(var2, var1, -1);
  102.       return var2;
  103.    }
  104.  
  105.    public Component add(Component var1, int var2) {
  106.       this.addImpl(var1, (Object)null, var2);
  107.       return var1;
  108.    }
  109.  
  110.    public void add(Component var1, Object var2) {
  111.       this.addImpl(var1, var2, -1);
  112.    }
  113.  
  114.    public void add(Component var1, Object var2, int var3) {
  115.       this.addImpl(var1, var2, var3);
  116.    }
  117.  
  118.    protected void addImpl(Component var1, Object var2, int var3) {
  119.       Object var4 = ((Component)this).getTreeLock();
  120.       synchronized(var4) {
  121.          GraphicsConfiguration var5 = ((Component)this).getGraphicsConfiguration();
  122.          if (var3 <= this.ncomponents && (var3 >= 0 || var3 == -1)) {
  123.             if (var1 instanceof Container) {
  124.                for(Container var6 = this; var6 != null; var6 = var6.parent) {
  125.                   if (var6 == var1) {
  126.                      throw new IllegalArgumentException("adding container's parent to itself");
  127.                   }
  128.                }
  129.  
  130.                if (var1 instanceof Window) {
  131.                   throw new IllegalArgumentException("adding a window to a container");
  132.                }
  133.             }
  134.  
  135.             if (var5 != null) {
  136.                var1.checkGD(var5.getDevice().getIDstring());
  137.             }
  138.  
  139.             if (var1.parent != null) {
  140.                var1.parent.remove(var1);
  141.             }
  142.  
  143.             if (this.ncomponents == this.component.length) {
  144.                Component[] var9 = new Component[this.ncomponents * 2];
  145.                System.arraycopy(this.component, 0, var9, 0, this.ncomponents);
  146.                this.component = var9;
  147.             }
  148.  
  149.             if (var3 != -1 && var3 != this.ncomponents) {
  150.                System.arraycopy(this.component, var3, this.component, var3 + 1, this.ncomponents - var3);
  151.                this.component[var3] = var1;
  152.                ++this.ncomponents;
  153.             } else {
  154.                this.component[this.ncomponents++] = var1;
  155.             }
  156.  
  157.             var1.parent = this;
  158.             this.adjustListeningChildren(32768L, var1.numListening(32768L));
  159.             this.adjustListeningChildren(65536L, var1.numListening(65536L));
  160.             if (super.valid) {
  161.                this.invalidate();
  162.             }
  163.  
  164.             if (super.peer != null) {
  165.                var1.addNotify();
  166.             }
  167.  
  168.             if (this.layoutMgr != null) {
  169.                if (this.layoutMgr instanceof LayoutManager2) {
  170.                   ((LayoutManager2)this.layoutMgr).addLayoutComponent(var1, var2);
  171.                } else if (var2 instanceof String) {
  172.                   this.layoutMgr.addLayoutComponent((String)var2, var1);
  173.                }
  174.             }
  175.  
  176.             if (this.containerListener != null || (super.eventMask & 2L) != 0L) {
  177.                ContainerEvent var10 = new ContainerEvent(this, 300, var1);
  178.                ((Component)this).dispatchEvent(var10);
  179.             }
  180.  
  181.             var1.createHierarchyEvents(1400, var1, this, 1L);
  182.             if (super.peer != null && this.layoutMgr == null && ((Component)this).isVisible()) {
  183.                GlobalCursorManager.updateCursorImmediately();
  184.             }
  185.  
  186.          } else {
  187.             throw new IllegalArgumentException("illegal component position");
  188.          }
  189.       }
  190.    }
  191.  
  192.    void checkGD(String var1) {
  193.       for(int var3 = 0; var3 < this.component.length; ++var3) {
  194.          Component var2 = this.component[var3];
  195.          if (var2 != null) {
  196.             var2.checkGD(var1);
  197.          }
  198.       }
  199.  
  200.    }
  201.  
  202.    public void remove(int var1) {
  203.       Object var2 = ((Component)this).getTreeLock();
  204.       synchronized(var2) {
  205.          Component var3 = this.component[var1];
  206.          if (super.peer != null) {
  207.             var3.removeNotify();
  208.          }
  209.  
  210.          if (this.layoutMgr != null) {
  211.             this.layoutMgr.removeLayoutComponent(var3);
  212.          }
  213.  
  214.          this.adjustListeningChildren(32768L, -var3.numListening(32768L));
  215.          this.adjustListeningChildren(65536L, -var3.numListening(65536L));
  216.          var3.parent = null;
  217.          System.arraycopy(this.component, var1 + 1, this.component, var1, this.ncomponents - var1 - 1);
  218.          this.component[--this.ncomponents] = null;
  219.          if (super.valid) {
  220.             this.invalidate();
  221.          }
  222.  
  223.          if (this.containerListener != null || (super.eventMask & 2L) != 0L) {
  224.             ContainerEvent var4 = new ContainerEvent(this, 301, var3);
  225.             ((Component)this).dispatchEvent(var4);
  226.          }
  227.  
  228.          var3.createHierarchyEvents(1400, var3, this, 1L);
  229.          if (super.peer != null && this.layoutMgr == null && ((Component)this).isVisible()) {
  230.             GlobalCursorManager.updateCursorImmediately();
  231.          }
  232.  
  233.       }
  234.    }
  235.  
  236.    public void remove(Component var1) {
  237.       Object var2 = ((Component)this).getTreeLock();
  238.       synchronized(var2) {
  239.          if (var1.parent == this) {
  240.             Component[] var3 = this.component;
  241.             int var4 = this.ncomponents;
  242.  
  243.             while(true) {
  244.                --var4;
  245.                if (var4 < 0) {
  246.                   break;
  247.                }
  248.  
  249.                if (var3[var4] == var1) {
  250.                   this.remove(var4);
  251.                }
  252.             }
  253.          }
  254.  
  255.       }
  256.    }
  257.  
  258.    public void removeAll() {
  259.       Object var1 = ((Component)this).getTreeLock();
  260.       synchronized(var1) {
  261.          this.adjustListeningChildren(32768L, -this.listeningChildren);
  262.          this.adjustListeningChildren(65536L, -this.listeningBoundsChildren);
  263.  
  264.          Component var2;
  265.          for(; this.ncomponents > 0; var2.createHierarchyEvents(1400, var2, this, 1L)) {
  266.             var2 = this.component[--this.ncomponents];
  267.             this.component[this.ncomponents] = null;
  268.             if (super.peer != null) {
  269.                var2.removeNotify();
  270.             }
  271.  
  272.             if (this.layoutMgr != null) {
  273.                this.layoutMgr.removeLayoutComponent(var2);
  274.             }
  275.  
  276.             var2.parent = null;
  277.             if (this.containerListener != null || (super.eventMask & 2L) != 0L) {
  278.                ContainerEvent var3 = new ContainerEvent(this, 301, var2);
  279.                ((Component)this).dispatchEvent(var3);
  280.             }
  281.          }
  282.  
  283.          if (super.peer != null && this.layoutMgr == null && ((Component)this).isVisible()) {
  284.             GlobalCursorManager.updateCursorImmediately();
  285.          }
  286.  
  287.          if (super.valid) {
  288.             this.invalidate();
  289.          }
  290.  
  291.       }
  292.    }
  293.  
  294.    int numListening(long var1) {
  295.       int var3 = super.numListening(var1);
  296.       if (var1 == 32768L) {
  297.          return this.listeningChildren + var3;
  298.       } else {
  299.          return var1 == 65536L ? this.listeningBoundsChildren + var3 : var3;
  300.       }
  301.    }
  302.  
  303.    void adjustListeningChildren(long var1, int var3) {
  304.       if (var3 != 0) {
  305.          if ((var1 & 32768L) != 0L) {
  306.             this.listeningChildren += var3;
  307.          }
  308.  
  309.          if ((var1 & 65536L) != 0L) {
  310.             this.listeningBoundsChildren += var3;
  311.          }
  312.  
  313.          if (super.parent != null) {
  314.             super.parent.adjustListeningChildren(var1, var3);
  315.          }
  316.  
  317.       }
  318.    }
  319.  
  320.    int createHierarchyEvents(int var1, Component var2, Container var3, long var4) {
  321.       int var6 = 0;
  322.       switch (var1) {
  323.          case 1400:
  324.             var6 = this.listeningChildren;
  325.             break;
  326.          case 1401:
  327.          case 1402:
  328.             var6 = this.listeningBoundsChildren;
  329.       }
  330.  
  331.       int var7 = var6;
  332.  
  333.       for(int var8 = 0; var7 > 0; ++var8) {
  334.          var7 -= this.component[var8].createHierarchyEvents(var1, var2, var3, var4);
  335.       }
  336.  
  337.       return var6 + super.createHierarchyEvents(var1, var2, var3, var4);
  338.    }
  339.  
  340.    void createChildHierarchyEvents(int var1, long var2) {
  341.       Object var4 = ((Component)this).getTreeLock();
  342.       synchronized(var4) {
  343.          int var5 = 0;
  344.          switch (var1) {
  345.             case 1400:
  346.                var5 = this.listeningChildren;
  347.                break;
  348.             case 1401:
  349.             case 1402:
  350.                var5 = this.listeningBoundsChildren;
  351.          }
  352.  
  353.          int var6 = var5;
  354.  
  355.          for(int var7 = 0; var6 > 0; ++var7) {
  356.             var6 -= this.component[var7].createHierarchyEvents(var1, this, super.parent, var2);
  357.          }
  358.  
  359.       }
  360.    }
  361.  
  362.    public LayoutManager getLayout() {
  363.       return this.layoutMgr;
  364.    }
  365.  
  366.    public void setLayout(LayoutManager var1) {
  367.       this.layoutMgr = var1;
  368.       if (super.valid) {
  369.          this.invalidate();
  370.       }
  371.  
  372.    }
  373.  
  374.    public void doLayout() {
  375.       this.layout();
  376.    }
  377.  
  378.    public void layout() {
  379.       LayoutManager var1 = this.layoutMgr;
  380.       if (var1 != null) {
  381.          var1.layoutContainer(this);
  382.       }
  383.  
  384.    }
  385.  
  386.    public void invalidate() {
  387.       if (this.layoutMgr instanceof LayoutManager2) {
  388.          LayoutManager2 var1 = (LayoutManager2)this.layoutMgr;
  389.          var1.invalidateLayout(this);
  390.       }
  391.  
  392.       super.invalidate();
  393.    }
  394.  
  395.    public void validate() {
  396.       if (!super.valid) {
  397.          boolean var1 = false;
  398.          Object var2 = ((Component)this).getTreeLock();
  399.          synchronized(var2) {
  400.             if (!super.valid && super.peer != null) {
  401.                ContainerPeer var3 = null;
  402.                if (super.peer instanceof ContainerPeer) {
  403.                   var3 = (ContainerPeer)super.peer;
  404.                }
  405.  
  406.                if (var3 != null) {
  407.                   var3.beginValidate();
  408.                }
  409.  
  410.                this.validateTree();
  411.                super.valid = true;
  412.                if (var3 != null) {
  413.                   var3.endValidate();
  414.                   var1 = ((Component)this).isVisible();
  415.                }
  416.             }
  417.          }
  418.  
  419.          if (var1) {
  420.             GlobalCursorManager.updateCursorImmediately();
  421.          }
  422.       }
  423.  
  424.    }
  425.  
  426.    protected void validateTree() {
  427.       if (!super.valid) {
  428.          this.doLayout();
  429.          Component[] var1 = this.component;
  430.  
  431.          for(int var2 = 0; var2 < this.ncomponents; ++var2) {
  432.             Component var3 = var1[var2];
  433.             if (var3 instanceof Container && !(var3 instanceof Window) && !var3.valid) {
  434.                ((Container)var3).validateTree();
  435.             } else {
  436.                var3.validate();
  437.             }
  438.          }
  439.       }
  440.  
  441.       super.valid = true;
  442.    }
  443.  
  444.    void invalidateTree() {
  445.       Object var1 = ((Component)this).getTreeLock();
  446.       synchronized(var1) {
  447.          for(int var2 = 0; var2 < this.ncomponents; ++var2) {
  448.             Component var3 = this.component[var2];
  449.             if (var3 instanceof Container) {
  450.                ((Container)var3).invalidateTree();
  451.             } else if (var3.valid) {
  452.                var3.invalidate();
  453.             }
  454.          }
  455.  
  456.          if (super.valid) {
  457.             this.invalidate();
  458.          }
  459.  
  460.       }
  461.    }
  462.  
  463.    public void setFont(Font var1) {
  464.       boolean var2 = false;
  465.       Font var3 = ((Component)this).getFont();
  466.       super.setFont(var1);
  467.       Font var4 = ((Component)this).getFont();
  468.       if (var4 != var3 && (var3 == null || !var3.equals(var4))) {
  469.          this.invalidateTree();
  470.       }
  471.  
  472.    }
  473.  
  474.    public Dimension getPreferredSize() {
  475.       return this.preferredSize();
  476.    }
  477.  
  478.    public Dimension preferredSize() {
  479.       Dimension var1 = super.prefSize;
  480.       if (var1 != null && ((Component)this).isValid()) {
  481.          return var1;
  482.       } else {
  483.          Object var2 = ((Component)this).getTreeLock();
  484.          synchronized(var2) {
  485.             super.prefSize = this.layoutMgr != null ? this.layoutMgr.preferredLayoutSize(this) : super.preferredSize();
  486.             Dimension var3 = super.prefSize;
  487.             return var3;
  488.          }
  489.       }
  490.    }
  491.  
  492.    public Dimension getMinimumSize() {
  493.       return this.minimumSize();
  494.    }
  495.  
  496.    public Dimension minimumSize() {
  497.       Dimension var1 = super.minSize;
  498.       if (var1 != null && ((Component)this).isValid()) {
  499.          return var1;
  500.       } else {
  501.          Object var2 = ((Component)this).getTreeLock();
  502.          synchronized(var2) {
  503.             super.minSize = this.layoutMgr != null ? this.layoutMgr.minimumLayoutSize(this) : super.minimumSize();
  504.             Dimension var3 = super.minSize;
  505.             return var3;
  506.          }
  507.       }
  508.    }
  509.  
  510.    public Dimension getMaximumSize() {
  511.       Dimension var1 = this.maxSize;
  512.       if (var1 != null && ((Component)this).isValid()) {
  513.          return var1;
  514.       } else {
  515.          if (this.layoutMgr instanceof LayoutManager2) {
  516.             Object var2 = ((Component)this).getTreeLock();
  517.             synchronized(var2) {
  518.                LayoutManager2 var3 = (LayoutManager2)this.layoutMgr;
  519.                this.maxSize = var3.maximumLayoutSize(this);
  520.             }
  521.          } else {
  522.             this.maxSize = super.getMaximumSize();
  523.          }
  524.  
  525.          return this.maxSize;
  526.       }
  527.    }
  528.  
  529.    public float getAlignmentX() {
  530.       float var1;
  531.       if (this.layoutMgr instanceof LayoutManager2) {
  532.          Object var2 = ((Component)this).getTreeLock();
  533.          synchronized(var2) {
  534.             LayoutManager2 var3 = (LayoutManager2)this.layoutMgr;
  535.             var1 = var3.getLayoutAlignmentX(this);
  536.          }
  537.       } else {
  538.          var1 = super.getAlignmentX();
  539.       }
  540.  
  541.       return var1;
  542.    }
  543.  
  544.    public float getAlignmentY() {
  545.       float var1;
  546.       if (this.layoutMgr instanceof LayoutManager2) {
  547.          Object var2 = ((Component)this).getTreeLock();
  548.          synchronized(var2) {
  549.             LayoutManager2 var3 = (LayoutManager2)this.layoutMgr;
  550.             var1 = var3.getLayoutAlignmentY(this);
  551.          }
  552.       } else {
  553.          var1 = super.getAlignmentY();
  554.       }
  555.  
  556.       return var1;
  557.    }
  558.  
  559.    public void paint(Graphics var1) {
  560.       if (((Component)this).isShowing() && (!this.printing || !this.printingThreads.contains(Thread.currentThread()))) {
  561.          PaintCallback.getInstance().runComponents(this.component, var1, 2);
  562.       }
  563.  
  564.    }
  565.  
  566.    public void update(Graphics var1) {
  567.       if (((Component)this).isShowing()) {
  568.          if (!(super.peer instanceof LightweightPeer)) {
  569.             var1.clearRect(0, 0, super.width, super.height);
  570.          }
  571.  
  572.          this.paint(var1);
  573.       }
  574.  
  575.    }
  576.  
  577.    public void print(Graphics var1) {
  578.       if (((Component)this).isShowing()) {
  579.          Thread var2 = Thread.currentThread();
  580.  
  581.          try {
  582.             this.printingThreads.addElement(var2);
  583.             this.printing = true;
  584.             super.print(var1);
  585.          } finally {
  586.             this.printingThreads.removeElement(var2);
  587.             this.printing = !this.printingThreads.isEmpty();
  588.          }
  589.  
  590.          PrintCallback.getInstance().runComponents(this.component, var1, 2);
  591.       }
  592.  
  593.    }
  594.  
  595.    public void paintComponents(Graphics var1) {
  596.       if (((Component)this).isShowing()) {
  597.          PaintAllCallback.getInstance().runComponents(this.component, var1, 4);
  598.       }
  599.  
  600.    }
  601.  
  602.    void lightweightPaint(Graphics var1) {
  603.       super.lightweightPaint(var1);
  604.       this.paintHeavyweightComponents(var1);
  605.    }
  606.  
  607.    void paintHeavyweightComponents(Graphics var1) {
  608.       if (((Component)this).isShowing()) {
  609.          PaintHeavyweightComponentsCallback.getInstance().runComponents(this.component, var1, 3);
  610.       }
  611.  
  612.    }
  613.  
  614.    public void printComponents(Graphics var1) {
  615.       if (((Component)this).isShowing()) {
  616.          PrintAllCallback.getInstance().runComponents(this.component, var1, 4);
  617.       }
  618.  
  619.    }
  620.  
  621.    void lightweightPrint(Graphics var1) {
  622.       super.lightweightPrint(var1);
  623.       this.printHeavyweightComponents(var1);
  624.    }
  625.  
  626.    void printHeavyweightComponents(Graphics var1) {
  627.       if (((Component)this).isShowing()) {
  628.          PrintHeavyweightComponentsCallback.getInstance().runComponents(this.component, var1, 3);
  629.       }
  630.  
  631.    }
  632.  
  633.    public synchronized void addContainerListener(ContainerListener var1) {
  634.       if (var1 != null) {
  635.          this.containerListener = AWTEventMulticaster.add(this.containerListener, var1);
  636.          super.newEventsOnly = true;
  637.       }
  638.    }
  639.  
  640.    public synchronized void removeContainerListener(ContainerListener var1) {
  641.       if (var1 != null) {
  642.          this.containerListener = AWTEventMulticaster.remove(this.containerListener, var1);
  643.       }
  644.    }
  645.  
  646.    public EventListener[] getListeners(Class var1) {
  647.       Object var2 = null;
  648.       if (var1 == (class$java$awt$event$ContainerListener == null ? (class$java$awt$event$ContainerListener = class$("java.awt.event.ContainerListener")) : class$java$awt$event$ContainerListener)) {
  649.          ContainerListener var3 = this.containerListener;
  650.          return AWTEventMulticaster.getListeners(var3, var1);
  651.       } else {
  652.          return super.getListeners(var1);
  653.       }
  654.    }
  655.  
  656.    boolean eventEnabled(AWTEvent var1) {
  657.       int var2 = var1.getID();
  658.       if (var2 != 300 && var2 != 301) {
  659.          return super.eventEnabled(var1);
  660.       } else {
  661.          return (super.eventMask & 2L) != 0L || this.containerListener != null;
  662.       }
  663.    }
  664.  
  665.    protected void processEvent(AWTEvent var1) {
  666.       if (var1 instanceof ContainerEvent) {
  667.          this.processContainerEvent((ContainerEvent)var1);
  668.       } else {
  669.          super.processEvent(var1);
  670.       }
  671.    }
  672.  
  673.    protected void processContainerEvent(ContainerEvent var1) {
  674.       if (this.containerListener != null) {
  675.          switch (((AWTEvent)var1).getID()) {
  676.             case 300:
  677.                this.containerListener.componentAdded(var1);
  678.                break;
  679.             case 301:
  680.                this.containerListener.componentRemoved(var1);
  681.          }
  682.       }
  683.  
  684.    }
  685.  
  686.    void dispatchEventImpl(AWTEvent var1) {
  687.       if (this.dispatcher != null && this.dispatcher.dispatchEvent(var1)) {
  688.          var1.consume();
  689.          if (super.peer != null) {
  690.             super.peer.handleEvent(var1);
  691.          }
  692.  
  693.       } else {
  694.          super.dispatchEventImpl(var1);
  695.          switch (var1.getID()) {
  696.             case 100:
  697.                this.createChildHierarchyEvents(1401, 0L);
  698.                break;
  699.             case 101:
  700.                this.createChildHierarchyEvents(1402, 0L);
  701.          }
  702.  
  703.       }
  704.    }
  705.  
  706.    void dispatchEventToSelf(AWTEvent var1) {
  707.       super.dispatchEventImpl(var1);
  708.    }
  709.  
  710.    Component getMouseEventTarget(int var1, int var2, boolean var3) {
  711.       int var4 = this.ncomponents;
  712.       Component[] var5 = this.component;
  713.  
  714.       for(int var6 = 0; var6 < var4; ++var6) {
  715.          Component var7 = var5[var6];
  716.          if (var7 != null && var7.contains(var1 - var7.x, var2 - var7.y) && var7.peer instanceof LightweightPeer && var7.visible) {
  717.             if (var7 instanceof Container) {
  718.                Container var8 = (Container)var7;
  719.                Component var9 = var8.getMouseEventTarget(var1 - var8.x, var2 - var8.y, var3);
  720.                if (var9 != null) {
  721.                   return var9;
  722.                }
  723.             } else if (var7.mouseListener != null || (var7.eventMask & 16L) != 0L || var7.mouseMotionListener != null || (var7.eventMask & 32L) != 0L) {
  724.                return var7;
  725.             }
  726.          }
  727.       }
  728.  
  729.       boolean var11 = super.peer instanceof LightweightPeer || var3;
  730.       boolean var12 = ((Component)this).contains(var1, var2);
  731.       boolean var13 = super.mouseListener != null || (super.eventMask & 16L) != 0L;
  732.       boolean var10 = super.mouseMotionListener != null || (super.eventMask & 32L) != 0L;
  733.       if (!var12 || !var11 || !var13 && !var10) {
  734.          return null;
  735.       } else {
  736.          return this;
  737.       }
  738.    }
  739.  
  740.    void proxyEnableEvents(long var1) {
  741.       if (super.peer instanceof LightweightPeer) {
  742.          if (super.parent != null) {
  743.             super.parent.proxyEnableEvents(var1);
  744.          }
  745.       } else if (this.dispatcher != null) {
  746.          this.dispatcher.enableEvents(var1);
  747.       }
  748.  
  749.    }
  750.  
  751.    Window getWindow() {
  752.       Container var1;
  753.       for(var1 = this; !(var1 instanceof Window); var1 = ((Component)var1).getParent()) {
  754.       }
  755.  
  756.       return (Window)var1;
  757.    }
  758.  
  759.    void proxyRequestFocus(Component var1) {
  760.       if (super.peer instanceof LightweightPeer) {
  761.          if (super.parent != null) {
  762.             super.parent.proxyRequestFocus(var1);
  763.          }
  764.       } else if (this.dispatcher != null && this.dispatcher.setFocusRequest(var1)) {
  765.          Container var2;
  766.          for(var2 = this; !(var2 instanceof Window) && var2 != null; var2 = ((Component)var2).getParent()) {
  767.          }
  768.  
  769.          if (var2 != null && (((Window)var2).isActive() || !(var2 instanceof Frame) && !(var2 instanceof Dialog))) {
  770.             super.peer.requestFocus();
  771.          }
  772.  
  773.          Toolkit.getEventQueue().changeKeyEventFocus(this);
  774.       }
  775.  
  776.    }
  777.  
  778.    public void deliverEvent(Event var1) {
  779.       Component var2 = this.getComponentAt(var1.x, var1.y);
  780.       if (var2 != null && var2 != this) {
  781.          var1.translate(-var2.x, -var2.y);
  782.          var2.deliverEvent(var1);
  783.       } else {
  784.          ((Component)this).postEvent(var1);
  785.       }
  786.  
  787.    }
  788.  
  789.    public Component getComponentAt(int var1, int var2) {
  790.       return this.locate(var1, var2);
  791.    }
  792.  
  793.    public Component locate(int var1, int var2) {
  794.       if (!((Component)this).contains(var1, var2)) {
  795.          return null;
  796.       } else {
  797.          Object var3 = ((Component)this).getTreeLock();
  798.          synchronized(var3) {
  799.             for(int var4 = 0; var4 < this.ncomponents; ++var4) {
  800.                Component var5 = this.component[var4];
  801.                if (var5 != null && !(var5.peer instanceof LightweightPeer) && var5.contains(var1 - var5.x, var2 - var5.y)) {
  802.                   return var5;
  803.                }
  804.             }
  805.  
  806.             for(int var10 = 0; var10 < this.ncomponents; ++var10) {
  807.                Component var6 = this.component[var10];
  808.                if (var6 != null && var6.peer instanceof LightweightPeer && var6.contains(var1 - var6.x, var2 - var6.y)) {
  809.                   return var6;
  810.                }
  811.             }
  812.  
  813.             return this;
  814.          }
  815.       }
  816.    }
  817.  
  818.    public Component getComponentAt(Point var1) {
  819.       return this.getComponentAt(var1.x, var1.y);
  820.    }
  821.  
  822.    public Component findComponentAt(int var1, int var2) {
  823.       Object var3 = ((Component)this).getTreeLock();
  824.       synchronized(var3) {
  825.          Component var4 = this.findComponentAt(var1, var2, true, false);
  826.          return var4;
  827.       }
  828.    }
  829.  
  830.    final Component findComponentAt(int var1, int var2, boolean var3, boolean var4) {
  831.       if (((Component)this).contains(var1, var2) && super.visible && (var3 || super.enabled)) {
  832.          int var5 = this.ncomponents;
  833.          Component[] var6 = this.component;
  834.          Component var7 = null;
  835.          if (var4 && this instanceof JRootPane) {
  836.             var7 = ((JRootPane)this).getGlassPane();
  837.          }
  838.  
  839.          for(int var8 = 0; var8 < var5; ++var8) {
  840.             Component var9 = var6[var8];
  841.             if (var9 != null && var9 != var7 && !(var9.peer instanceof LightweightPeer)) {
  842.                if (var9 instanceof Container) {
  843.                   var9 = ((Container)var9).findComponentAt(var1 - var9.x, var2 - var9.y, var3, var4);
  844.                } else {
  845.                   var9 = var9.locate(var1 - var9.x, var2 - var9.y);
  846.                }
  847.  
  848.                if (var9 != null && var9.visible && (var3 || var9.enabled)) {
  849.                   return var9;
  850.                }
  851.             }
  852.          }
  853.  
  854.          for(int var12 = 0; var12 < var5; ++var12) {
  855.             Component var10 = var6[var12];
  856.             if (var10 != null && var10 != var7 && var10.peer instanceof LightweightPeer) {
  857.                if (var10 instanceof Container) {
  858.                   var10 = ((Container)var10).findComponentAt(var1 - var10.x, var2 - var10.y, var3, var4);
  859.                } else {
  860.                   var10 = var10.locate(var1 - var10.x, var2 - var10.y);
  861.                }
  862.  
  863.                if (var10 != null && var10.visible && (var3 || var10.enabled)) {
  864.                   return var10;
  865.                }
  866.             }
  867.          }
  868.  
  869.          return this;
  870.       } else {
  871.          return null;
  872.       }
  873.    }
  874.  
  875.    public Component findComponentAt(Point var1) {
  876.       return this.findComponentAt(var1.x, var1.y);
  877.    }
  878.  
  879.    public void addNotify() {
  880.       Object var1 = ((Component)this).getTreeLock();
  881.       synchronized(var1) {
  882.          super.addNotify();
  883.          if (!(super.peer instanceof LightweightPeer)) {
  884.             this.dispatcher = new LightweightDispatcher(this);
  885.          }
  886.  
  887.          int var2 = this.ncomponents;
  888.          Component[] var3 = this.component;
  889.  
  890.          for(int var4 = 0; var4 < var2; ++var4) {
  891.             var3[var4].addNotify();
  892.          }
  893.  
  894.       }
  895.    }
  896.  
  897.    public void removeNotify() {
  898.       Object var1 = ((Component)this).getTreeLock();
  899.       synchronized(var1) {
  900.          int var2 = this.ncomponents;
  901.          Component[] var3 = this.component;
  902.  
  903.          for(int var4 = 0; var4 < var2; ++var4) {
  904.             var3[var4].removeNotify();
  905.          }
  906.  
  907.          if (this.dispatcher != null) {
  908.             this.dispatcher.dispose();
  909.          }
  910.  
  911.          super.removeNotify();
  912.       }
  913.    }
  914.  
  915.    public boolean isAncestorOf(Component var1) {
  916.       Container var2;
  917.       if (var1 != null && (var2 = var1.getParent()) != null) {
  918.          while(var2 != null) {
  919.             if (var2 == this) {
  920.                return true;
  921.             }
  922.  
  923.             var2 = ((Component)var2).getParent();
  924.          }
  925.  
  926.          return false;
  927.       } else {
  928.          return false;
  929.       }
  930.    }
  931.  
  932.    protected String paramString() {
  933.       String var1 = super.paramString();
  934.       LayoutManager var2 = this.layoutMgr;
  935.       if (var2 != null) {
  936.          var1 = var1 + ",layout=" + var2.getClass().getName();
  937.       }
  938.  
  939.       return var1;
  940.    }
  941.  
  942.    public void list(PrintStream var1, int var2) {
  943.       super.list(var1, var2);
  944.       int var3 = this.ncomponents;
  945.       Component[] var4 = this.component;
  946.  
  947.       for(int var5 = 0; var5 < var3; ++var5) {
  948.          Component var6 = var4[var5];
  949.          if (var6 != null) {
  950.             var6.list(var1, var2 + 1);
  951.          }
  952.       }
  953.  
  954.    }
  955.  
  956.    public void list(PrintWriter var1, int var2) {
  957.       super.list(var1, var2);
  958.       int var3 = this.ncomponents;
  959.       Component[] var4 = this.component;
  960.  
  961.       for(int var5 = 0; var5 < var3; ++var5) {
  962.          Component var6 = var4[var5];
  963.          if (var6 != null) {
  964.             var6.list(var1, var2 + 1);
  965.          }
  966.       }
  967.  
  968.    }
  969.  
  970.    void setFocusOwner(Component var1) {
  971.       Container var2 = super.parent;
  972.       if (var2 != null) {
  973.          var2.setFocusOwner(var1);
  974.       }
  975.  
  976.    }
  977.  
  978.    void preProcessKeyEvent(KeyEvent var1) {
  979.       Container var2 = super.parent;
  980.       if (var2 != null) {
  981.          var2.preProcessKeyEvent(var1);
  982.       }
  983.  
  984.    }
  985.  
  986.    void postProcessKeyEvent(KeyEvent var1) {
  987.       Container var2 = super.parent;
  988.       if (var2 != null) {
  989.          var2.postProcessKeyEvent(var1);
  990.       }
  991.  
  992.    }
  993.  
  994.    void transferFocus(Component var1) {
  995.       this.nextFocus(var1);
  996.    }
  997.  
  998.    boolean postsOldMouseEvents() {
  999.       return true;
  1000.    }
  1001.  
  1002.    void nextFocus(Component var1) {
  1003.       Container var2 = super.parent;
  1004.       if (var2 != null) {
  1005.          var2.transferFocus(var1);
  1006.       }
  1007.  
  1008.    }
  1009.  
  1010.    void applyOrientation(ComponentOrientation var1) {
  1011.       ((Component)this).setComponentOrientation(var1);
  1012.  
  1013.       for(int var2 = 0; var2 < this.ncomponents; ++var2) {
  1014.          Component var3 = this.component[var2];
  1015.          if (var3 instanceof Container) {
  1016.             ((Container)var3).applyOrientation(var1);
  1017.          } else {
  1018.             var3.setComponentOrientation(var1);
  1019.          }
  1020.       }
  1021.  
  1022.    }
  1023.  
  1024.    private void writeObject(ObjectOutputStream var1) throws IOException {
  1025.       var1.defaultWriteObject();
  1026.       AWTEventMulticaster.save(var1, "containerL", this.containerListener);
  1027.       var1.writeObject((Object)null);
  1028.    }
  1029.  
  1030.    private void readObject(ObjectInputStream var1) throws ClassNotFoundException, IOException {
  1031.       var1.defaultReadObject();
  1032.       Component[] var2 = this.component;
  1033.  
  1034.       for(int var3 = 0; var3 < this.ncomponents; ++var3) {
  1035.          var2[var3].parent = this;
  1036.          this.adjustListeningChildren(32768L, var2[var3].numListening(32768L));
  1037.          this.adjustListeningChildren(65536L, var2[var3].numListening(65536L));
  1038.       }
  1039.  
  1040.       Object var4;
  1041.       while(null != (var4 = var1.readObject())) {
  1042.          String var5 = ((String)var4).intern();
  1043.          if ("containerL" == var5) {
  1044.             this.addContainerListener((ContainerListener)var1.readObject());
  1045.          } else {
  1046.             var1.readObject();
  1047.          }
  1048.       }
  1049.  
  1050.    }
  1051.  
  1052.    Accessible getAccessibleAt(Point var1) {
  1053.       Object var2 = ((Component)this).getTreeLock();
  1054.       synchronized(var2) {
  1055.          if (this instanceof Accessible) {
  1056.             Accessible var14 = (Accessible)this;
  1057.             AccessibleContext var17 = var14.getAccessibleContext();
  1058.             if (var17 != null) {
  1059.                int var21 = var17.getAccessibleChildrenCount();
  1060.  
  1061.                for(int var8 = 0; var8 < var21; ++var8) {
  1062.                   var14 = var17.getAccessibleChild(var8);
  1063.                   if (var14 != null) {
  1064.                      var17 = var14.getAccessibleContext();
  1065.                      if (var17 != null) {
  1066.                         AccessibleComponent var18 = var17.getAccessibleComponent();
  1067.                         if (var18 != null && var18.isShowing()) {
  1068.                            Point var20 = var18.getLocation();
  1069.                            Point var9 = new Point(var1.x - var20.x, var1.y - var20.y);
  1070.                            if (var18.contains(var9)) {
  1071.                               return var14;
  1072.                            }
  1073.                         }
  1074.                      }
  1075.                   }
  1076.                }
  1077.             }
  1078.  
  1079.             Accessible var19 = (Accessible)this;
  1080.             return var19;
  1081.          } else {
  1082.             Object var3 = this;
  1083.             if (!((Component)this).contains(var1.x, var1.y)) {
  1084.                var3 = null;
  1085.             } else {
  1086.                int var4 = this.getComponentCount();
  1087.  
  1088.                for(int var5 = 0; var5 < var4; ++var5) {
  1089.                   Component var6 = this.getComponent(var5);
  1090.                   if (var6 != null && var6.isShowing()) {
  1091.                      Point var7 = var6.getLocation();
  1092.                      if (var6.contains(var1.x - var7.x, var1.y - var7.y)) {
  1093.                         var3 = var6;
  1094.                      }
  1095.                   }
  1096.                }
  1097.             }
  1098.  
  1099.             if (var3 instanceof Accessible) {
  1100.                Accessible var16 = (Accessible)var3;
  1101.                return var16;
  1102.             } else {
  1103.                var3 = null;
  1104.                return (Accessible)var3;
  1105.             }
  1106.          }
  1107.       }
  1108.    }
  1109.  
  1110.    int getAccessibleChildrenCount() {
  1111.       Object var1 = ((Component)this).getTreeLock();
  1112.       synchronized(var1) {
  1113.          int var2 = 0;
  1114.          Component[] var3 = this.getComponents();
  1115.  
  1116.          for(int var4 = 0; var4 < var3.length; ++var4) {
  1117.             if (var3[var4] instanceof Accessible) {
  1118.                ++var2;
  1119.             }
  1120.          }
  1121.  
  1122.          return var2;
  1123.       }
  1124.    }
  1125.  
  1126.    Accessible getAccessibleChild(int var1) {
  1127.       Object var2 = ((Component)this).getTreeLock();
  1128.       synchronized(var2) {
  1129.          Component[] var3 = this.getComponents();
  1130.          int var4 = 0;
  1131.  
  1132.          for(int var5 = 0; var5 < var3.length; ++var5) {
  1133.             if (var3[var5] instanceof Accessible) {
  1134.                if (var4 == var1) {
  1135.                   Accessible var6 = (Accessible)var3[var5];
  1136.                   return var6;
  1137.                }
  1138.  
  1139.                ++var4;
  1140.             }
  1141.          }
  1142.  
  1143.          Object var9 = null;
  1144.          return (Accessible)var9;
  1145.       }
  1146.    }
  1147.  
  1148.    // $FF: synthetic method
  1149.    static Class class$(String var0) {
  1150.       try {
  1151.          return Class.forName(var0);
  1152.       } catch (ClassNotFoundException var2) {
  1153.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  1154.       }
  1155.    }
  1156.  
  1157.    static {
  1158.       dbg = DebugHelper.create(class$java$awt$Container == null ? (class$java$awt$Container = class$("java.awt.Container")) : class$java$awt$Container);
  1159.       Toolkit.loadLibraries();
  1160.       initIDs();
  1161.    }
  1162. }
  1163.