home *** CD-ROM | disk | FTP | other *** search
- package sunw.beanbox;
-
- import java.beans.PropertyChangeEvent;
- import java.beans.PropertyChangeListener;
- import java.beans.PropertyVetoException;
- import java.io.Serializable;
- import java.lang.reflect.InvocationTargetException;
- import java.lang.reflect.Method;
- import java.util.Hashtable;
- import java.util.Vector;
-
- public class PropertyHookup implements PropertyChangeListener, Serializable {
- static final long serialVersionUID = 4502052857914084293L;
- Object source;
- Hashtable targetsByPropertyName;
-
- public void attach(Object var1, String var2, Method var3, Object var4, Method var5) {
- Vector var6 = (Vector)this.targetsByPropertyName.get(var2);
- if (var6 == null) {
- var6 = new Vector();
- this.targetsByPropertyName.put(var2, var6);
- }
-
- for(int var8 = 0; var8 < var6.size(); ++var8) {
- PropertyHookupTarget var7 = (PropertyHookupTarget)var6.elementAt(var8);
- if (var7.setter == var5 && var7.object == var4) {
- return;
- }
- }
-
- var6.addElement(new PropertyHookupTarget(var4, var5));
-
- try {
- Object[] var9 = new Object[0];
- Object var10 = var3.invoke(var1, var9);
- Object[] var11 = new Object[]{var10};
- var5.invoke(var4, var11);
- } catch (InvocationTargetException var12) {
- System.err.println("Property propagation failed");
- var12.getTargetException().printStackTrace();
- } catch (Exception var13) {
- System.err.println("Property propagation failed");
- ((Throwable)var13).printStackTrace();
- }
- }
-
- public PropertyHookup(Object var1) {
- this.source = var1;
- this.targetsByPropertyName = new Hashtable();
- }
-
- public synchronized void propertyChange(PropertyChangeEvent var1) {
- String var2 = var1.getPropertyName();
- Vector var3 = (Vector)this.targetsByPropertyName.get(var2);
- if (var3 != null) {
- Object[] var4 = new Object[]{var1.getNewValue()};
-
- for(int var5 = 0; var5 < var3.size(); ++var5) {
- PropertyHookupTarget var6 = (PropertyHookupTarget)var3.elementAt(var5);
-
- try {
- var6.setter.invoke(var6.object, var4);
- } catch (InvocationTargetException var8) {
- System.err.println("Property set failed");
- var8.getTargetException().printStackTrace();
- } catch (Exception var9) {
- System.err.println("Unexpected Property set exception");
- ((Throwable)var9).printStackTrace();
- }
- }
-
- }
- }
-
- public void vetoablePropertyChange(PropertyChangeEvent var1) throws PropertyVetoException {
- this.propertyChange(var1);
- }
- }
-