home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 144 / DPCS0200.iso / Internet / Supanet / system / swing.jar / javax / swing / event / SwingPropertyChangeSupport.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-11-05  |  3.2 KB  |  171 lines

  1. package javax.swing.event;
  2.  
  3. import java.beans.PropertyChangeEvent;
  4. import java.beans.PropertyChangeListener;
  5. import java.beans.PropertyChangeSupport;
  6. import java.io.IOException;
  7. import java.io.ObjectInputStream;
  8. import java.io.ObjectOutputStream;
  9. import java.io.Serializable;
  10. import java.util.Hashtable;
  11. import java.util.Vector;
  12.  
  13. public final class SwingPropertyChangeSupport extends PropertyChangeSupport {
  14.    private transient Vector listeners;
  15.    private Hashtable children;
  16.    private Object source;
  17.    static final long serialVersionUID = 7162625831330845068L;
  18.  
  19.    public SwingPropertyChangeSupport(Object var1) {
  20.       super(var1);
  21.       this.source = var1;
  22.    }
  23.  
  24.    public synchronized void addPropertyChangeListener(PropertyChangeListener var1) {
  25.       if (this.listeners == null) {
  26.          this.listeners = new Vector();
  27.       }
  28.  
  29.       this.listeners.addElement(var1);
  30.    }
  31.  
  32.    public synchronized void addPropertyChangeListener(String var1, PropertyChangeListener var2) {
  33.       if (this.children == null) {
  34.          this.children = new Hashtable();
  35.       }
  36.  
  37.       SwingPropertyChangeSupport var3 = (SwingPropertyChangeSupport)this.children.get(var1);
  38.       if (var3 == null) {
  39.          var3 = new SwingPropertyChangeSupport(this.source);
  40.          this.children.put(var1, var3);
  41.       }
  42.  
  43.       var3.addPropertyChangeListener(var2);
  44.    }
  45.  
  46.    public void firePropertyChange(PropertyChangeEvent var1) {
  47.       Object var2 = var1.getOldValue();
  48.       Object var3 = var1.getNewValue();
  49.       String var4 = var1.getPropertyName();
  50.       if (var2 == null || var3 == null || !var2.equals(var3)) {
  51.          SwingPropertyChangeSupport var5 = null;
  52.          synchronized(this){}
  53.  
  54.          try {
  55.             if (this.children != null && var4 != null) {
  56.                var5 = (SwingPropertyChangeSupport)this.children.get(var4);
  57.             }
  58.          } catch (Throwable var9) {
  59.             throw var9;
  60.          }
  61.  
  62.          if (this.listeners != null) {
  63.             for(int var6 = 0; var6 < this.listeners.size(); ++var6) {
  64.                PropertyChangeListener var7 = (PropertyChangeListener)this.listeners.elementAt(var6);
  65.                var7.propertyChange(var1);
  66.             }
  67.          }
  68.  
  69.          if (var5 != null) {
  70.             var5.firePropertyChange(var1);
  71.          }
  72.  
  73.       }
  74.    }
  75.  
  76.    public void firePropertyChange(String var1, Object var2, Object var3) {
  77.       if (var2 == null || var3 == null || !var2.equals(var3)) {
  78.          SwingPropertyChangeSupport var4 = null;
  79.          synchronized(this){}
  80.  
  81.          try {
  82.             if (this.children != null && var1 != null) {
  83.                var4 = (SwingPropertyChangeSupport)this.children.get(var1);
  84.             }
  85.          } catch (Throwable var9) {
  86.             throw var9;
  87.          }
  88.  
  89.          if (this.listeners != null || var4 != null) {
  90.             PropertyChangeEvent var5 = new PropertyChangeEvent(this.source, var1, var2, var3);
  91.             if (this.listeners != null) {
  92.                for(int var6 = 0; var6 < this.listeners.size(); ++var6) {
  93.                   PropertyChangeListener var7 = (PropertyChangeListener)this.listeners.elementAt(var6);
  94.                   var7.propertyChange(var5);
  95.                }
  96.             }
  97.  
  98.             if (var4 != null) {
  99.                var4.firePropertyChange(var5);
  100.             }
  101.          }
  102.  
  103.       }
  104.    }
  105.  
  106.    public synchronized boolean hasListeners(String var1) {
  107.       if (this.listeners != null && !this.listeners.isEmpty()) {
  108.          return true;
  109.       } else {
  110.          if (this.children != null) {
  111.             SwingPropertyChangeSupport var2 = (SwingPropertyChangeSupport)this.children.get(var1);
  112.             if (var2 != null) {
  113.                return var2.listeners.isEmpty() ^ true;
  114.             }
  115.          }
  116.  
  117.          return false;
  118.       }
  119.    }
  120.  
  121.    private void readObject(ObjectInputStream var1) throws ClassNotFoundException, IOException {
  122.       var1.defaultReadObject();
  123.  
  124.       Object var2;
  125.       while((var2 = var1.readObject()) != null) {
  126.          this.addPropertyChangeListener((PropertyChangeListener)var2);
  127.       }
  128.  
  129.    }
  130.  
  131.    public synchronized void removePropertyChangeListener(PropertyChangeListener var1) {
  132.       if (this.listeners != null) {
  133.          this.listeners.removeElement(var1);
  134.       }
  135.    }
  136.  
  137.    public synchronized void removePropertyChangeListener(String var1, PropertyChangeListener var2) {
  138.       if (this.children != null) {
  139.          SwingPropertyChangeSupport var3 = (SwingPropertyChangeSupport)this.children.get(var1);
  140.          if (var3 != null) {
  141.             var3.removePropertyChangeListener(var2);
  142.          }
  143.       }
  144.    }
  145.  
  146.    private void writeObject(ObjectOutputStream var1) throws IOException {
  147.       var1.defaultWriteObject();
  148.       Vector var2 = null;
  149.       synchronized(this){}
  150.  
  151.       try {
  152.          if (this.listeners != null) {
  153.             var2 = (Vector)this.listeners.clone();
  154.          }
  155.       } catch (Throwable var6) {
  156.          throw var6;
  157.       }
  158.  
  159.       if (var2 != null) {
  160.          for(int var3 = 0; var3 < var2.size(); ++var3) {
  161.             PropertyChangeListener var4 = (PropertyChangeListener)var2.elementAt(var3);
  162.             if (var4 instanceof Serializable) {
  163.                var1.writeObject(var4);
  164.             }
  165.          }
  166.       }
  167.  
  168.       var1.writeObject((Object)null);
  169.    }
  170. }
  171.