Mercurial > projects > dwt2
view base/src/java/beans/PropertyChangeSupport.d @ 112:9f4c18c268b2
Update to compile and execute with dmd 2.052.
author | kntroh |
---|---|
date | Wed, 16 Mar 2011 21:53:53 +0900 |
parents | 1bf55a6eb092 |
children |
line wrap: on
line source
module java.beans.PropertyChangeSupport; import java.lang.all; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeEvent; version(Tango){ static import tango.core.Array; } else { // Phobos } class PropertyChangeSupport { PropertyChangeListener[][ String ] listeners; Object obj; this(Object obj){ this.obj = obj; } void addPropertyChangeListener(PropertyChangeListener listener){ addPropertyChangeListener( "", listener ); } void addPropertyChangeListener(String propertyName, PropertyChangeListener listener){ PropertyChangeListener[] list; if( auto l = propertyName in listeners ){ list = *l; } list ~= listener; version(Tango){ propertyName = propertyName.dup; } listeners[ propertyName ] = list; } void firePropertyChange(String propertyName, bool oldValue, bool newValue){ firePropertyChange( propertyName, Boolean.valueOf(oldValue), Boolean.valueOf(newValue) ); } void firePropertyChange(String propertyName, int oldValue, int newValue){ firePropertyChange( propertyName, new Integer(oldValue), new Integer(newValue) ); } void firePropertyChange(String propertyName, Object oldValue, Object newValue){ PropertyChangeListener[] list; if( auto l = propertyName in listeners ){ list = *l; } auto evt = new PropertyChangeEvent( obj, propertyName, oldValue, newValue ); foreach( listener; list ){ if( listener ){ listener.propertyChange( evt ); } } } void removePropertyChangeListener(PropertyChangeListener listener){ removePropertyChangeListener( "", listener ); } void removePropertyChangeListener(String propertyName, PropertyChangeListener listener){ if( auto list = propertyName in listeners ){ version(Tango){ list.length = tango.core.Array.remove( *list, listener ); } else { implMissing( __FILE__, __LINE__ ); } if( list.length > 0 ){ version(Tango){ propertyName = propertyName.dup; } listeners[ propertyName ] = *list; } else{ listeners.remove( propertyName ); } } } }