annotate dwtx/dwtxhelper/Bean.d @ 112:9cb927d16b0a

Fix missing import
author Frank Benoit <benoit@tionex.de>
date Fri, 08 Aug 2008 00:21:19 +0200
parents d79c6b934729
children 5a082a5e1a5b
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
86617aa6b5dd More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 class PropertyChangeSupport {
108
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
44 PropertyChangeListener[][ String ] listeners;
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
45 Object obj;
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
46 this(Object obj){
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
47 this.obj = obj;
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
48 }
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
49 void addPropertyChangeListener(PropertyChangeListener listener){
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
50 addPropertyChangeListener( "", listener );
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
51 }
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
52 void addPropertyChangeListener(String propertyName, PropertyChangeListener listener){
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
53 PropertyChangeListener[] list = listeners[ propertyName ];
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
54 list ~= listener;
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
55 listeners[ propertyName.dup ] = list;
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
56 }
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
57 void firePropertyChange(String propertyName, bool oldValue, bool newValue){
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
58 firePropertyChange( propertyName, Boolean.valueOf(oldValue), Boolean.valueOf(newValue) );
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
59 }
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
60 void firePropertyChange(String propertyName, int oldValue, int newValue){
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
61 firePropertyChange( propertyName, new Integer(oldValue), new Integer(newValue) );
100
86617aa6b5dd More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 }
108
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
63 void firePropertyChange(String propertyName, Object oldValue, Object newValue){
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
64 PropertyChangeListener[] list = listeners[ propertyName ];
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
65 auto evt = new PropertyChangeEvent( obj, propertyName, oldValue, newValue );
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
66 foreach( listener; list ){
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
67 if( listener ){
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
68 listener.propertyChange( evt );
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
69 }
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
70 }
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
71 }
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
72 void removePropertyChangeListener(PropertyChangeListener listener){
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
73 removePropertyChangeListener( "", listener );
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 void removePropertyChangeListener(String propertyName, PropertyChangeListener listener){
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
76 if( auto list = propertyName in listeners ){
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
77 tango.core.Array.remove( *list, listener );
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
78 if( list.length > 0 ){
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
79 listeners[ propertyName.dup ] = *list;
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
80 }
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
81 else{
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
82 listeners.remove( propertyName );
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
83 }
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
84 }
d79c6b934729 Impl of Bean
Frank Benoit <benoit@tionex.de>
parents: 100
diff changeset
85 }
100
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
86617aa6b5dd More helper classes, needed by draw2d
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
88