home *** CD-ROM | disk | FTP | other *** search
- package java.beans;
-
- import java.io.IOException;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.io.Serializable;
- import java.util.Hashtable;
- import java.util.Vector;
-
- public class VetoableChangeSupport implements Serializable {
- private transient Vector listeners;
- private Hashtable children;
- private Object source;
- private int vetoableChangeSupportSerializedDataVersion = 2;
- static final long serialVersionUID = -5090210921595982017L;
-
- public VetoableChangeSupport(Object var1) {
- if (var1 == null) {
- throw new NullPointerException();
- } else {
- this.source = var1;
- }
- }
-
- public synchronized void addVetoableChangeListener(VetoableChangeListener var1) {
- if (this.listeners == null) {
- this.listeners = new Vector();
- }
-
- this.listeners.addElement(var1);
- }
-
- public synchronized void removeVetoableChangeListener(VetoableChangeListener var1) {
- if (this.listeners != null) {
- this.listeners.removeElement(var1);
- }
- }
-
- public synchronized void addVetoableChangeListener(String var1, VetoableChangeListener var2) {
- if (this.children == null) {
- this.children = new Hashtable();
- }
-
- VetoableChangeSupport var3 = (VetoableChangeSupport)this.children.get(var1);
- if (var3 == null) {
- var3 = new VetoableChangeSupport(this.source);
- this.children.put(var1, var3);
- }
-
- var3.addVetoableChangeListener(var2);
- }
-
- public synchronized void removeVetoableChangeListener(String var1, VetoableChangeListener var2) {
- if (this.children != null) {
- VetoableChangeSupport var3 = (VetoableChangeSupport)this.children.get(var1);
- if (var3 != null) {
- var3.removeVetoableChangeListener(var2);
- }
- }
- }
-
- public void fireVetoableChange(String var1, Object var2, Object var3) throws PropertyVetoException {
- if (this.listeners != null || this.children != null) {
- PropertyChangeEvent var4 = new PropertyChangeEvent(this.source, var1, var2, var3);
- this.fireVetoableChange(var4);
- }
- }
-
- public void fireVetoableChange(String var1, int var2, int var3) throws PropertyVetoException {
- if (var2 != var3) {
- this.fireVetoableChange(var1, new Integer(var2), new Integer(var3));
- }
- }
-
- public void fireVetoableChange(String var1, boolean var2, boolean var3) throws PropertyVetoException {
- if (var2 != var3) {
- this.fireVetoableChange(var1, new Boolean(var2), new Boolean(var3));
- }
- }
-
- public void fireVetoableChange(PropertyChangeEvent var1) throws PropertyVetoException {
- Object var2 = var1.getOldValue();
- Object var3 = var1.getNewValue();
- String var4 = var1.getPropertyName();
- if (var2 == null || var3 == null || !var2.equals(var3)) {
- Vector var5 = null;
- VetoableChangeSupport var6 = null;
- synchronized(this) {
- if (this.listeners != null) {
- var5 = (Vector)this.listeners.clone();
- }
-
- if (this.children != null && var4 != null) {
- var6 = (VetoableChangeSupport)this.children.get(var4);
- }
- }
-
- if (this.listeners != null) {
- try {
- for(int var8 = 0; var8 < var5.size(); ++var8) {
- VetoableChangeListener var15 = (VetoableChangeListener)var5.elementAt(var8);
- var15.vetoableChange(var1);
- }
- } catch (PropertyVetoException var12) {
- var1 = new PropertyChangeEvent(this.source, var4, var3, var2);
-
- for(int var9 = 0; var9 < var5.size(); ++var9) {
- try {
- VetoableChangeListener var10 = (VetoableChangeListener)var5.elementAt(var9);
- var10.vetoableChange(var1);
- } catch (PropertyVetoException var11) {
- }
- }
-
- throw var12;
- }
- }
-
- if (var6 != null) {
- var6.fireVetoableChange(var1);
- }
-
- }
- }
-
- public synchronized boolean hasListeners(String var1) {
- if (this.listeners != null && !this.listeners.isEmpty()) {
- return true;
- } else {
- if (this.children != null) {
- VetoableChangeSupport var2 = (VetoableChangeSupport)this.children.get(var1);
- if (var2 != null && var2.listeners != null) {
- return !var2.listeners.isEmpty();
- }
- }
-
- return false;
- }
- }
-
- private void writeObject(ObjectOutputStream var1) throws IOException {
- var1.defaultWriteObject();
- Vector var2 = null;
- synchronized(this) {
- if (this.listeners != null) {
- var2 = (Vector)this.listeners.clone();
- }
- }
-
- if (var2 != null) {
- for(int var4 = 0; var4 < var2.size(); ++var4) {
- VetoableChangeListener var5 = (VetoableChangeListener)var2.elementAt(var4);
- if (var5 instanceof Serializable) {
- var1.writeObject(var5);
- }
- }
- }
-
- var1.writeObject((Object)null);
- }
-
- private void readObject(ObjectInputStream var1) throws ClassNotFoundException, IOException {
- var1.defaultReadObject();
-
- Object var2;
- while(null != (var2 = var1.readObject())) {
- this.addVetoableChangeListener((VetoableChangeListener)var2);
- }
-
- }
- }
-