home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / rt.jar / java / beans / VetoableChangeSupport.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-23  |  2.2 KB  |  106 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.Vector;
  8.  
  9. public class VetoableChangeSupport implements Serializable {
  10.    private transient Vector listeners;
  11.    private Object source;
  12.    private int vetoableChangeSupportSerializedDataVersion = 1;
  13.  
  14.    public VetoableChangeSupport(Object var1) {
  15.       this.source = var1;
  16.    }
  17.  
  18.    public synchronized void addVetoableChangeListener(VetoableChangeListener var1) {
  19.       if (this.listeners == null) {
  20.          this.listeners = new Vector();
  21.       }
  22.  
  23.       this.listeners.addElement(var1);
  24.    }
  25.  
  26.    public synchronized void removeVetoableChangeListener(VetoableChangeListener var1) {
  27.       if (this.listeners != null) {
  28.          this.listeners.removeElement(var1);
  29.       }
  30.    }
  31.  
  32.    public void fireVetoableChange(String var1, Object var2, Object var3) throws PropertyVetoException {
  33.       if (var2 == null || !var2.equals(var3)) {
  34.          synchronized(this){}
  35.  
  36.          Vector var4;
  37.          try {
  38.             if (this.listeners == null) {
  39.                return;
  40.             }
  41.  
  42.             var4 = (Vector)this.listeners.clone();
  43.          } catch (Throwable var14) {
  44.             throw var14;
  45.          }
  46.  
  47.          PropertyChangeEvent var5 = new PropertyChangeEvent(this.source, var1, var2, var3);
  48.  
  49.          try {
  50.             for(int var6 = 0; var6 < var4.size(); ++var6) {
  51.                VetoableChangeListener var16 = (VetoableChangeListener)var4.elementAt(var6);
  52.                var16.vetoableChange(var5);
  53.             }
  54.  
  55.          } catch (PropertyVetoException var13) {
  56.             var5 = new PropertyChangeEvent(this.source, var1, var3, var2);
  57.  
  58.             for(int var7 = 0; var7 < var4.size(); ++var7) {
  59.                try {
  60.                   VetoableChangeListener var8 = (VetoableChangeListener)var4.elementAt(var7);
  61.                   var8.vetoableChange(var5);
  62.                } catch (PropertyVetoException var12) {
  63.                }
  64.             }
  65.  
  66.             throw var13;
  67.          }
  68.       }
  69.    }
  70.  
  71.    private void writeObject(ObjectOutputStream var1) throws IOException {
  72.       var1.defaultWriteObject();
  73.       Vector var2 = null;
  74.       synchronized(this){}
  75.  
  76.       try {
  77.          if (this.listeners != null) {
  78.             var2 = (Vector)this.listeners.clone();
  79.          }
  80.       } catch (Throwable var6) {
  81.          throw var6;
  82.       }
  83.  
  84.       if (var2 != null) {
  85.          for(int var3 = 0; var3 < this.listeners.size(); ++var3) {
  86.             VetoableChangeListener var4 = (VetoableChangeListener)var2.elementAt(var3);
  87.             if (var4 instanceof Serializable) {
  88.                var1.writeObject(var4);
  89.             }
  90.          }
  91.       }
  92.  
  93.       var1.writeObject((Object)null);
  94.    }
  95.  
  96.    private void readObject(ObjectInputStream var1) throws ClassNotFoundException, IOException {
  97.       var1.defaultReadObject();
  98.  
  99.       Object var2;
  100.       while((var2 = var1.readObject()) != null) {
  101.          this.addVetoableChangeListener((VetoableChangeListener)var2);
  102.       }
  103.  
  104.    }
  105. }
  106.