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

  1. package com.sun.java.swing;
  2.  
  3. import com.sun.java.swing.event.AncestorEvent;
  4. import com.sun.java.swing.event.AncestorListener;
  5. import com.sun.java.swing.event.EventListenerList;
  6. import java.awt.Component;
  7. import java.awt.Container;
  8. import java.awt.Window;
  9. import java.awt.event.ComponentEvent;
  10. import java.awt.event.ComponentListener;
  11. import java.beans.PropertyChangeEvent;
  12. import java.beans.PropertyChangeListener;
  13. import java.io.Serializable;
  14. import java.util.EventObject;
  15.  
  16. class AncestorNotifier implements ComponentListener, PropertyChangeListener, Serializable {
  17.    Component firstInvisibleAncestor;
  18.    EventListenerList listenerList = new EventListenerList();
  19.    JComponent root;
  20.    // $FF: synthetic field
  21.    static Class class$com$sun$java$swing$event$AncestorListener;
  22.  
  23.    AncestorNotifier(JComponent var1) {
  24.       this.root = var1;
  25.       this.addListeners(var1, true);
  26.    }
  27.  
  28.    void addAncestorListener(AncestorListener var1) {
  29.       this.listenerList.add(class$com$sun$java$swing$event$AncestorListener != null ? class$com$sun$java$swing$event$AncestorListener : (class$com$sun$java$swing$event$AncestorListener = class$("com.sun.java.swing.event.AncestorListener")), var1);
  30.    }
  31.  
  32.    void removeAncestorListener(AncestorListener var1) {
  33.       this.listenerList.remove(class$com$sun$java$swing$event$AncestorListener != null ? class$com$sun$java$swing$event$AncestorListener : (class$com$sun$java$swing$event$AncestorListener = class$("com.sun.java.swing.event.AncestorListener")), var1);
  34.    }
  35.  
  36.    protected void fireAncestorAdded(JComponent var1, int var2, Container var3, Container var4) {
  37.       Object[] var5 = this.listenerList.getListenerList();
  38.  
  39.       for(int var6 = var5.length - 2; var6 >= 0; var6 -= 2) {
  40.          if (var5[var6] == (class$com$sun$java$swing$event$AncestorListener != null ? class$com$sun$java$swing$event$AncestorListener : (class$com$sun$java$swing$event$AncestorListener = class$("com.sun.java.swing.event.AncestorListener")))) {
  41.             AncestorEvent var7 = new AncestorEvent(var1, var2, var3, var4);
  42.             ((AncestorListener)var5[var6 + 1]).ancestorAdded(var7);
  43.          }
  44.       }
  45.  
  46.    }
  47.  
  48.    protected void fireAncestorRemoved(JComponent var1, int var2, Container var3, Container var4) {
  49.       Object[] var5 = this.listenerList.getListenerList();
  50.  
  51.       for(int var6 = var5.length - 2; var6 >= 0; var6 -= 2) {
  52.          if (var5[var6] == (class$com$sun$java$swing$event$AncestorListener != null ? class$com$sun$java$swing$event$AncestorListener : (class$com$sun$java$swing$event$AncestorListener = class$("com.sun.java.swing.event.AncestorListener")))) {
  53.             AncestorEvent var7 = new AncestorEvent(var1, var2, var3, var4);
  54.             ((AncestorListener)var5[var6 + 1]).ancestorRemoved(var7);
  55.          }
  56.       }
  57.  
  58.    }
  59.  
  60.    protected void fireAncestorMoved(JComponent var1, int var2, Container var3, Container var4) {
  61.       Object[] var5 = this.listenerList.getListenerList();
  62.  
  63.       for(int var6 = var5.length - 2; var6 >= 0; var6 -= 2) {
  64.          if (var5[var6] == (class$com$sun$java$swing$event$AncestorListener != null ? class$com$sun$java$swing$event$AncestorListener : (class$com$sun$java$swing$event$AncestorListener = class$("com.sun.java.swing.event.AncestorListener")))) {
  65.             AncestorEvent var7 = new AncestorEvent(var1, var2, var3, var4);
  66.             ((AncestorListener)var5[var6 + 1]).ancestorMoved(var7);
  67.          }
  68.       }
  69.  
  70.    }
  71.  
  72.    void removeAllListeners() {
  73.       this.removeListeners(this.root);
  74.    }
  75.  
  76.    void addListeners(Component var1, boolean var2) {
  77.       this.firstInvisibleAncestor = null;
  78.  
  79.       for(Object var3 = var1; this.firstInvisibleAncestor == null; var3 = ((Component)var3).getParent()) {
  80.          if (var2 || var3 != var1) {
  81.             ((Component)var3).addComponentListener(this);
  82.             if (var3 instanceof JComponent) {
  83.                JComponent var4 = (JComponent)var3;
  84.                var4.addPropertyChangeListener(this);
  85.             }
  86.          }
  87.  
  88.          if (!((Component)var3).isVisible() || ((Component)var3).getParent() == null) {
  89.             this.firstInvisibleAncestor = (Component)var3;
  90.          }
  91.       }
  92.  
  93.       if (this.firstInvisibleAncestor instanceof Window) {
  94.          this.firstInvisibleAncestor = null;
  95.       }
  96.  
  97.    }
  98.  
  99.    void removeListeners(Component var1) {
  100.       for(Object var2 = var1; var2 != this.firstInvisibleAncestor; var2 = ((Component)var2).getParent()) {
  101.          ((Component)var2).removeComponentListener(this);
  102.          if (var2 instanceof JComponent) {
  103.             JComponent var3 = (JComponent)var2;
  104.             var3.removePropertyChangeListener(this);
  105.          }
  106.       }
  107.  
  108.    }
  109.  
  110.    public void componentResized(ComponentEvent var1) {
  111.    }
  112.  
  113.    public void componentMoved(ComponentEvent var1) {
  114.       Component var2 = var1.getComponent();
  115.       this.fireAncestorMoved(this.root, 3, (Container)var2, var2.getParent());
  116.    }
  117.  
  118.    public void componentShown(ComponentEvent var1) {
  119.       Component var2 = var1.getComponent();
  120.       if (var2 == this.firstInvisibleAncestor) {
  121.          this.addListeners(var2, false);
  122.          if (this.firstInvisibleAncestor == null) {
  123.             this.fireAncestorAdded(this.root, 1, (Container)var2, var2.getParent());
  124.          }
  125.       }
  126.  
  127.    }
  128.  
  129.    public void componentHidden(ComponentEvent var1) {
  130.       Component var2 = var1.getComponent();
  131.       boolean var3 = this.firstInvisibleAncestor == null;
  132.       this.removeListeners(var2.getParent());
  133.       this.firstInvisibleAncestor = var2;
  134.       if (var3) {
  135.          this.fireAncestorRemoved(this.root, 2, (Container)var2, var2.getParent());
  136.       }
  137.  
  138.    }
  139.  
  140.    public void propertyChange(PropertyChangeEvent var1) {
  141.       String var2 = var1.getPropertyName();
  142.       if (var2.equals("parent") || var2.equals("ancestor")) {
  143.          JComponent var3 = (JComponent)((EventObject)var1).getSource();
  144.          if (var1.getNewValue() != null) {
  145.             if (var3 == this.firstInvisibleAncestor) {
  146.                this.addListeners(var3, false);
  147.                if (this.firstInvisibleAncestor == null) {
  148.                   this.fireAncestorAdded(this.root, 1, var3, ((Component)var3).getParent());
  149.                   return;
  150.                }
  151.             }
  152.          } else {
  153.             boolean var4 = this.firstInvisibleAncestor == null;
  154.             Container var5 = (Container)var1.getOldValue();
  155.             this.removeListeners(var5);
  156.             this.firstInvisibleAncestor = var3;
  157.             if (var4) {
  158.                this.fireAncestorRemoved(this.root, 2, var3, var5);
  159.             }
  160.          }
  161.       }
  162.  
  163.    }
  164.  
  165.    // $FF: synthetic method
  166.    static Class class$(String var0) {
  167.       try {
  168.          return Class.forName(var0);
  169.       } catch (ClassNotFoundException var2) {
  170.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  171.       }
  172.    }
  173. }
  174.