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 PropertyChangeSupport implements Serializable {
- private transient Vector listeners;
- private Hashtable children;
- private Object source;
- private int propertyChangeSupportSerializedDataVersion = 2;
- static final long serialVersionUID = 6401253773779951803L;
-
- public PropertyChangeSupport(Object var1) {
- if (var1 == null) {
- throw new NullPointerException();
- } else {
- this.source = var1;
- }
- }
-
- public synchronized void addPropertyChangeListener(PropertyChangeListener var1) {
- if (this.listeners == null) {
- this.listeners = new Vector();
- }
-
- this.listeners.addElement(var1);
- }
-
- public synchronized void removePropertyChangeListener(PropertyChangeListener var1) {
- if (this.listeners != null) {
- this.listeners.removeElement(var1);
- }
- }
-
- public synchronized void addPropertyChangeListener(String var1, PropertyChangeListener var2) {
- if (this.children == null) {
- this.children = new Hashtable();
- }
-
- PropertyChangeSupport var3 = (PropertyChangeSupport)this.children.get(var1);
- if (var3 == null) {
- var3 = new PropertyChangeSupport(this.source);
- this.children.put(var1, var3);
- }
-
- var3.addPropertyChangeListener(var2);
- }
-
- public synchronized void removePropertyChangeListener(String var1, PropertyChangeListener var2) {
- if (this.children != null) {
- PropertyChangeSupport var3 = (PropertyChangeSupport)this.children.get(var1);
- if (var3 != null) {
- var3.removePropertyChangeListener(var2);
- }
- }
- }
-
- public void firePropertyChange(String var1, Object var2, Object var3) {
- if (var2 == null || var3 == null || !var2.equals(var3)) {
- Vector var4 = null;
- PropertyChangeSupport var5 = null;
- synchronized(this) {
- if (this.listeners != null) {
- var4 = (Vector)this.listeners.clone();
- }
-
- if (this.children != null && var1 != null) {
- var5 = (PropertyChangeSupport)this.children.get(var1);
- }
- }
-
- PropertyChangeEvent var7 = new PropertyChangeEvent(this.source, var1, var2, var3);
- if (var4 != null) {
- for(int var8 = 0; var8 < var4.size(); ++var8) {
- PropertyChangeListener var9 = (PropertyChangeListener)var4.elementAt(var8);
- var9.propertyChange(var7);
- }
- }
-
- if (var5 != null) {
- var5.firePropertyChange(var7);
- }
-
- }
- }
-
- public void firePropertyChange(String var1, int var2, int var3) {
- if (var2 != var3) {
- this.firePropertyChange(var1, new Integer(var2), new Integer(var3));
- }
- }
-
- public void firePropertyChange(String var1, boolean var2, boolean var3) {
- if (var2 != var3) {
- this.firePropertyChange(var1, new Boolean(var2), new Boolean(var3));
- }
- }
-
- public void firePropertyChange(PropertyChangeEvent var1) {
- Object var2 = var1.getOldValue();
- Object var3 = var1.getNewValue();
- String var4 = var1.getPropertyName();
- if (var2 == null || var3 == null || !var2.equals(var3)) {
- Vector var5 = null;
- PropertyChangeSupport var6 = null;
- synchronized(this) {
- if (this.listeners != null) {
- var5 = (Vector)this.listeners.clone();
- }
-
- if (this.children != null && var4 != null) {
- var6 = (PropertyChangeSupport)this.children.get(var4);
- }
- }
-
- if (var5 != null) {
- for(int var8 = 0; var8 < var5.size(); ++var8) {
- PropertyChangeListener var9 = (PropertyChangeListener)var5.elementAt(var8);
- var9.propertyChange(var1);
- }
- }
-
- if (var6 != null) {
- var6.firePropertyChange(var1);
- }
-
- }
- }
-
- public synchronized boolean hasListeners(String var1) {
- if (this.listeners != null && !this.listeners.isEmpty()) {
- return true;
- } else {
- if (this.children != null) {
- PropertyChangeSupport var2 = (PropertyChangeSupport)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) {
- PropertyChangeListener var5 = (PropertyChangeListener)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.addPropertyChangeListener((PropertyChangeListener)var2);
- }
-
- }
- }
-