Mercurial > projects > dwt-addons
annotate dwtx/dwtxhelper/Bean.d @ 179:9008cb2f47c5
Fix tango.core.Array.remove use
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Fri, 19 Sep 2008 22:37:04 +0200 |
parents | 5a082a5e1a5b |
children |
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; |
112 | 4 static import tango.core.Array; |
100
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5 |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6 class PropertyChangeEvent : EventObject { |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7 private String propertyName; |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8 private Object oldValue; |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
9 private Object newValue; |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
10 private Object propagationId; |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
11 |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
12 this( Object source, String propertyName, Object oldValue, Object newValue) { |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
13 super( source ); |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
14 this.propertyName = propertyName; |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
15 this.oldValue = oldValue; |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
16 this.newValue = newValue; |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
17 } |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
18 Object getNewValue(){ |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
19 return newValue; |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
20 } |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
21 Object getOldValue(){ |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
22 return oldValue; |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
23 } |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
24 Object getPropagationId(){ |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
25 return propagationId; |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
26 } |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
27 String getPropertyName(){ |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
28 return propertyName; |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
29 } |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
30 void setPropagationId(Object propagationId){ |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
31 this.propagationId = propagationId; |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
32 } |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
33 public override String toString() { |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
34 return this.classinfo.name ~ "[source=" ~ source.toString() ~ "]"; |
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 |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
38 interface PropertyChangeListener { |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
39 void propertyChange(PropertyChangeEvent evt); |
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){ | |
113
5a082a5e1a5b
Fix: exceptions on AA access
Frank Benoit <benoit@tionex.de>
parents:
112
diff
changeset
|
52 PropertyChangeListener[] list; |
5a082a5e1a5b
Fix: exceptions on AA access
Frank Benoit <benoit@tionex.de>
parents:
112
diff
changeset
|
53 if( auto l = propertyName in listeners ){ |
5a082a5e1a5b
Fix: exceptions on AA access
Frank Benoit <benoit@tionex.de>
parents:
112
diff
changeset
|
54 list = *l; |
5a082a5e1a5b
Fix: exceptions on AA access
Frank Benoit <benoit@tionex.de>
parents:
112
diff
changeset
|
55 } |
108 | 56 list ~= listener; |
57 listeners[ propertyName.dup ] = list; | |
58 } | |
59 void firePropertyChange(String propertyName, bool oldValue, bool newValue){ | |
60 firePropertyChange( propertyName, Boolean.valueOf(oldValue), Boolean.valueOf(newValue) ); | |
61 } | |
62 void firePropertyChange(String propertyName, int oldValue, int newValue){ | |
63 firePropertyChange( propertyName, new Integer(oldValue), new Integer(newValue) ); | |
100
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
64 } |
108 | 65 void firePropertyChange(String propertyName, Object oldValue, Object newValue){ |
113
5a082a5e1a5b
Fix: exceptions on AA access
Frank Benoit <benoit@tionex.de>
parents:
112
diff
changeset
|
66 PropertyChangeListener[] list; |
5a082a5e1a5b
Fix: exceptions on AA access
Frank Benoit <benoit@tionex.de>
parents:
112
diff
changeset
|
67 if( auto l = propertyName in listeners ){ |
5a082a5e1a5b
Fix: exceptions on AA access
Frank Benoit <benoit@tionex.de>
parents:
112
diff
changeset
|
68 list = *l; |
5a082a5e1a5b
Fix: exceptions on AA access
Frank Benoit <benoit@tionex.de>
parents:
112
diff
changeset
|
69 } |
108 | 70 auto evt = new PropertyChangeEvent( obj, propertyName, oldValue, newValue ); |
71 foreach( listener; list ){ | |
72 if( listener ){ | |
73 listener.propertyChange( evt ); | |
74 } | |
75 } | |
76 } | |
77 void removePropertyChangeListener(PropertyChangeListener listener){ | |
78 removePropertyChangeListener( "", listener ); | |
79 } | |
80 void removePropertyChangeListener(String propertyName, PropertyChangeListener listener){ | |
81 if( auto list = propertyName in listeners ){ | |
179
9008cb2f47c5
Fix tango.core.Array.remove use
Frank Benoit <benoit@tionex.de>
parents:
113
diff
changeset
|
82 list.length = tango.core.Array.remove( *list, listener ); |
108 | 83 if( list.length > 0 ){ |
84 listeners[ propertyName.dup ] = *list; | |
85 } | |
86 else{ | |
87 listeners.remove( propertyName ); | |
88 } | |
89 } | |
90 } | |
100
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
91 } |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
92 |
86617aa6b5dd
More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
93 |