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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
9cb927d16b0a Fix missing import
Frank Benoit <benoit@tionex.de>
parents: 108
diff changeset
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
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
43 PropertyChangeListener[][ String ] listeners;
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
44 Object obj;
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
45 this(Object obj){
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
46 this.obj = obj;
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
47 }
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
48 void addPropertyChangeListener(PropertyChangeListener listener){
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
49 addPropertyChangeListener( "", listener );
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
50 }
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
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
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
56 list ~= listener;
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
57 listeners[ propertyName.dup ] = list;
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
58 }
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
59 void firePropertyChange(String propertyName, bool oldValue, bool newValue){
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
60 firePropertyChange( propertyName, Boolean.valueOf(oldValue), Boolean.valueOf(newValue) );
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
61 }
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
62 void firePropertyChange(String propertyName, int oldValue, int newValue){
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
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
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
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
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
70 auto evt = new PropertyChangeEvent( obj, propertyName, oldValue, newValue );
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
71 foreach( listener; list ){
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
72 if( listener ){
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
73 listener.propertyChange( evt );
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
74 }
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
75 }
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
76 }
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
77 void removePropertyChangeListener(PropertyChangeListener listener){
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
78 removePropertyChangeListener( "", listener );
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
79 }
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
80 void removePropertyChangeListener(String propertyName, PropertyChangeListener listener){
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
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
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
83 if( list.length > 0 ){
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
84 listeners[ propertyName.dup ] = *list;
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
85 }
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
86 else{
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
87 listeners.remove( propertyName );
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
88 }
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
89 }
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
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