comparison dwtx/dwtxhelper/Bean.d @ 108:d79c6b934729

Impl of Bean
author Frank Benoit <benoit@tionex.de>
date Thu, 07 Aug 2008 16:39:52 +0200
parents 86617aa6b5dd
children 9cb927d16b0a
comparison
equal deleted inserted replaced
107:ffa785dc65e5 108:d79c6b934729
38 void propertyChange(PropertyChangeEvent evt); 38 void propertyChange(PropertyChangeEvent evt);
39 } 39 }
40 40
41 41
42 class PropertyChangeSupport { 42 class PropertyChangeSupport {
43 this(Object){ 43 PropertyChangeListener[][ String ] listeners;
44 Object obj;
45 this(Object obj){
46 this.obj = obj;
44 } 47 }
45 void addPropertyChangeListener(PropertyChangeListener listener){} 48 void addPropertyChangeListener(PropertyChangeListener listener){
46 void addPropertyChangeListener(String propertyName, PropertyChangeListener listener){} 49 addPropertyChangeListener( "", listener );
47 void firePropertyChange(String propertyName, bool oldValue, bool newValue){} 50 }
48 void firePropertyChange(String propertyName, int oldValue, int newValue){} 51 void addPropertyChangeListener(String propertyName, PropertyChangeListener listener){
49 void firePropertyChange(String propertyName, Object oldValue, Object newValue){} 52 PropertyChangeListener[] list = listeners[ propertyName ];
50 void removePropertyChangeListener(PropertyChangeListener listener){} 53 list ~= listener;
51 void removePropertyChangeListener(String propertyName, PropertyChangeListener listener){} 54 listeners[ propertyName.dup ] = list;
55 }
56 void firePropertyChange(String propertyName, bool oldValue, bool newValue){
57 firePropertyChange( propertyName, Boolean.valueOf(oldValue), Boolean.valueOf(newValue) );
58 }
59 void firePropertyChange(String propertyName, int oldValue, int newValue){
60 firePropertyChange( propertyName, new Integer(oldValue), new Integer(newValue) );
61 }
62 void firePropertyChange(String propertyName, Object oldValue, Object newValue){
63 PropertyChangeListener[] list = listeners[ propertyName ];
64 auto evt = new PropertyChangeEvent( obj, propertyName, oldValue, newValue );
65 foreach( listener; list ){
66 if( listener ){
67 listener.propertyChange( evt );
68 }
69 }
70 }
71 void removePropertyChangeListener(PropertyChangeListener listener){
72 removePropertyChangeListener( "", listener );
73 }
74 void removePropertyChangeListener(String propertyName, PropertyChangeListener listener){
75 if( auto list = propertyName in listeners ){
76 tango.core.Array.remove( *list, listener );
77 if( list.length > 0 ){
78 listeners[ propertyName.dup ] = *list;
79 }
80 else{
81 listeners.remove( propertyName );
82 }
83 }
84 }
52 } 85 }
53 86
54 87