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 / VetoableChangeSupport.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  3.1 KB  |  172 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 VetoableChangeSupport implements Serializable {
  11.    private transient Vector listeners;
  12.    private Hashtable children;
  13.    private Object source;
  14.    private int vetoableChangeSupportSerializedDataVersion = 2;
  15.    static final long serialVersionUID = -5090210921595982017L;
  16.  
  17.    public VetoableChangeSupport(Object var1) {
  18.       if (var1 == null) {
  19.          throw new NullPointerException();
  20.       } else {
  21.          this.source = var1;
  22.       }
  23.    }
  24.  
  25.    public synchronized void addVetoableChangeListener(VetoableChangeListener var1) {
  26.       if (this.listeners == null) {
  27.          this.listeners = new Vector();
  28.       }
  29.  
  30.       this.listeners.addElement(var1);
  31.    }
  32.  
  33.    public synchronized void removeVetoableChangeListener(VetoableChangeListener var1) {
  34.       if (this.listeners != null) {
  35.          this.listeners.removeElement(var1);
  36.       }
  37.    }
  38.  
  39.    public synchronized void addVetoableChangeListener(String var1, VetoableChangeListener var2) {
  40.       if (this.children == null) {
  41.          this.children = new Hashtable();
  42.       }
  43.  
  44.       VetoableChangeSupport var3 = (VetoableChangeSupport)this.children.get(var1);
  45.       if (var3 == null) {
  46.          var3 = new VetoableChangeSupport(this.source);
  47.          this.children.put(var1, var3);
  48.       }
  49.  
  50.       var3.addVetoableChangeListener(var2);
  51.    }
  52.  
  53.    public synchronized void removeVetoableChangeListener(String var1, VetoableChangeListener var2) {
  54.       if (this.children != null) {
  55.          VetoableChangeSupport var3 = (VetoableChangeSupport)this.children.get(var1);
  56.          if (var3 != null) {
  57.             var3.removeVetoableChangeListener(var2);
  58.          }
  59.       }
  60.    }
  61.  
  62.    public void fireVetoableChange(String var1, Object var2, Object var3) throws PropertyVetoException {
  63.       if (this.listeners != null || this.children != null) {
  64.          PropertyChangeEvent var4 = new PropertyChangeEvent(this.source, var1, var2, var3);
  65.          this.fireVetoableChange(var4);
  66.       }
  67.    }
  68.  
  69.    public void fireVetoableChange(String var1, int var2, int var3) throws PropertyVetoException {
  70.       if (var2 != var3) {
  71.          this.fireVetoableChange(var1, new Integer(var2), new Integer(var3));
  72.       }
  73.    }
  74.  
  75.    public void fireVetoableChange(String var1, boolean var2, boolean var3) throws PropertyVetoException {
  76.       if (var2 != var3) {
  77.          this.fireVetoableChange(var1, new Boolean(var2), new Boolean(var3));
  78.       }
  79.    }
  80.  
  81.    public void fireVetoableChange(PropertyChangeEvent var1) throws PropertyVetoException {
  82.       Object var2 = var1.getOldValue();
  83.       Object var3 = var1.getNewValue();
  84.       String var4 = var1.getPropertyName();
  85.       if (var2 == null || var3 == null || !var2.equals(var3)) {
  86.          Vector var5 = null;
  87.          VetoableChangeSupport var6 = null;
  88.          synchronized(this) {
  89.             if (this.listeners != null) {
  90.                var5 = (Vector)this.listeners.clone();
  91.             }
  92.  
  93.             if (this.children != null && var4 != null) {
  94.                var6 = (VetoableChangeSupport)this.children.get(var4);
  95.             }
  96.          }
  97.  
  98.          if (this.listeners != null) {
  99.             try {
  100.                for(int var8 = 0; var8 < var5.size(); ++var8) {
  101.                   VetoableChangeListener var15 = (VetoableChangeListener)var5.elementAt(var8);
  102.                   var15.vetoableChange(var1);
  103.                }
  104.             } catch (PropertyVetoException var12) {
  105.                var1 = new PropertyChangeEvent(this.source, var4, var3, var2);
  106.  
  107.                for(int var9 = 0; var9 < var5.size(); ++var9) {
  108.                   try {
  109.                      VetoableChangeListener var10 = (VetoableChangeListener)var5.elementAt(var9);
  110.                      var10.vetoableChange(var1);
  111.                   } catch (PropertyVetoException var11) {
  112.                   }
  113.                }
  114.  
  115.                throw var12;
  116.             }
  117.          }
  118.  
  119.          if (var6 != null) {
  120.             var6.fireVetoableChange(var1);
  121.          }
  122.  
  123.       }
  124.    }
  125.  
  126.    public synchronized boolean hasListeners(String var1) {
  127.       if (this.listeners != null && !this.listeners.isEmpty()) {
  128.          return true;
  129.       } else {
  130.          if (this.children != null) {
  131.             VetoableChangeSupport var2 = (VetoableChangeSupport)this.children.get(var1);
  132.             if (var2 != null && var2.listeners != null) {
  133.                return !var2.listeners.isEmpty();
  134.             }
  135.          }
  136.  
  137.          return false;
  138.       }
  139.    }
  140.  
  141.    private void writeObject(ObjectOutputStream var1) throws IOException {
  142.       var1.defaultWriteObject();
  143.       Vector var2 = null;
  144.       synchronized(this) {
  145.          if (this.listeners != null) {
  146.             var2 = (Vector)this.listeners.clone();
  147.          }
  148.       }
  149.  
  150.       if (var2 != null) {
  151.          for(int var4 = 0; var4 < var2.size(); ++var4) {
  152.             VetoableChangeListener var5 = (VetoableChangeListener)var2.elementAt(var4);
  153.             if (var5 instanceof Serializable) {
  154.                var1.writeObject(var5);
  155.             }
  156.          }
  157.       }
  158.  
  159.       var1.writeObject((Object)null);
  160.    }
  161.  
  162.    private void readObject(ObjectInputStream var1) throws ClassNotFoundException, IOException {
  163.       var1.defaultReadObject();
  164.  
  165.       Object var2;
  166.       while(null != (var2 = var1.readObject())) {
  167.          this.addVetoableChangeListener((VetoableChangeListener)var2);
  168.       }
  169.  
  170.    }
  171. }
  172.