home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1998 September / dppcpro0998.iso / Rwc / Sybase / Install.exe / java.z / PropertyHookup.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-01-12  |  2.5 KB  |  79 lines

  1. package sunw.beanbox;
  2.  
  3. import java.beans.PropertyChangeEvent;
  4. import java.beans.PropertyChangeListener;
  5. import java.beans.PropertyVetoException;
  6. import java.io.Serializable;
  7. import java.lang.reflect.InvocationTargetException;
  8. import java.lang.reflect.Method;
  9. import java.util.Hashtable;
  10. import java.util.Vector;
  11.  
  12. public class PropertyHookup implements PropertyChangeListener, Serializable {
  13.    static final long serialVersionUID = 4502052857914084293L;
  14.    Object source;
  15.    Hashtable targetsByPropertyName;
  16.  
  17.    public void attach(Object var1, String var2, Method var3, Object var4, Method var5) {
  18.       Vector var6 = (Vector)this.targetsByPropertyName.get(var2);
  19.       if (var6 == null) {
  20.          var6 = new Vector();
  21.          this.targetsByPropertyName.put(var2, var6);
  22.       }
  23.  
  24.       for(int var8 = 0; var8 < var6.size(); ++var8) {
  25.          PropertyHookupTarget var7 = (PropertyHookupTarget)var6.elementAt(var8);
  26.          if (var7.setter == var5 && var7.object == var4) {
  27.             return;
  28.          }
  29.       }
  30.  
  31.       var6.addElement(new PropertyHookupTarget(var4, var5));
  32.  
  33.       try {
  34.          Object[] var9 = new Object[0];
  35.          Object var10 = var3.invoke(var1, var9);
  36.          Object[] var11 = new Object[]{var10};
  37.          var5.invoke(var4, var11);
  38.       } catch (InvocationTargetException var12) {
  39.          System.err.println("Property propagation failed");
  40.          var12.getTargetException().printStackTrace();
  41.       } catch (Exception var13) {
  42.          System.err.println("Property propagation failed");
  43.          ((Throwable)var13).printStackTrace();
  44.       }
  45.    }
  46.  
  47.    public PropertyHookup(Object var1) {
  48.       this.source = var1;
  49.       this.targetsByPropertyName = new Hashtable();
  50.    }
  51.  
  52.    public synchronized void propertyChange(PropertyChangeEvent var1) {
  53.       String var2 = var1.getPropertyName();
  54.       Vector var3 = (Vector)this.targetsByPropertyName.get(var2);
  55.       if (var3 != null) {
  56.          Object[] var4 = new Object[]{var1.getNewValue()};
  57.  
  58.          for(int var5 = 0; var5 < var3.size(); ++var5) {
  59.             PropertyHookupTarget var6 = (PropertyHookupTarget)var3.elementAt(var5);
  60.  
  61.             try {
  62.                var6.setter.invoke(var6.object, var4);
  63.             } catch (InvocationTargetException var8) {
  64.                System.err.println("Property set failed");
  65.                var8.getTargetException().printStackTrace();
  66.             } catch (Exception var9) {
  67.                System.err.println("Unexpected Property set exception");
  68.                ((Throwable)var9).printStackTrace();
  69.             }
  70.          }
  71.  
  72.       }
  73.    }
  74.  
  75.    public void vetoablePropertyChange(PropertyChangeEvent var1) throws PropertyVetoException {
  76.       this.propertyChange(var1);
  77.    }
  78. }
  79.