Mercurial > projects > dwt-addons
annotate 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 |
rev | line source |
---|---|
100
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1 module dwtx.dwtxhelper.Bean; |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2 |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3 import dwt.dwthelper.utils; |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4 |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5 class PropertyChangeEvent : EventObject { |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6 private String propertyName; |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7 private Object oldValue; |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8 private Object newValue; |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
9 private Object propagationId; |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
10 |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
11 this( Object source, String propertyName, Object oldValue, Object newValue) { |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
12 super( source ); |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
13 this.propertyName = propertyName; |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
14 this.oldValue = oldValue; |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
15 this.newValue = newValue; |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
16 } |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
17 Object getNewValue(){ |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
18 return newValue; |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
19 } |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
20 Object getOldValue(){ |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
21 return oldValue; |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
22 } |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
23 Object getPropagationId(){ |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
24 return propagationId; |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
25 } |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
26 String getPropertyName(){ |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
27 return propertyName; |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
28 } |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
29 void setPropagationId(Object propagationId){ |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
30 this.propagationId = propagationId; |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
31 } |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
32 public override String toString() { |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
33 return this.classinfo.name ~ "[source=" ~ source.toString() ~ "]"; |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
34 } |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
35 } |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
36 |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
37 interface PropertyChangeListener { |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
38 void propertyChange(PropertyChangeEvent evt); |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
39 } |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
40 |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
41 |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
42 class PropertyChangeSupport { |
108 | 43 PropertyChangeListener[][ String ] listeners; |
44 Object obj; | |
45 this(Object obj){ | |
46 this.obj = obj; | |
47 } | |
48 void addPropertyChangeListener(PropertyChangeListener listener){ | |
49 addPropertyChangeListener( "", listener ); | |
50 } | |
51 void addPropertyChangeListener(String propertyName, PropertyChangeListener listener){ | |
52 PropertyChangeListener[] list = listeners[ propertyName ]; | |
53 list ~= 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) ); | |
100
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
61 } |
108 | 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 } | |
100
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
85 } |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
86 |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
87 |