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 / beans / PropertyChangeSupport.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  3.0 KB  |  180 lines

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