diff java/src/java/beans/PropertyChangeSupport.d @ 12:bc29606a740c

Added dwt-addons in original directory structure of eclipse.org
author Frank Benoit <benoit@tionex.de>
date Sat, 14 Mar 2009 18:23:29 +0100
parents
children 9b96950f2c3c
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/java/src/java/beans/PropertyChangeSupport.d	Sat Mar 14 18:23:29 2009 +0100
@@ -0,0 +1,58 @@
+module java.beans.PropertyChangeSupport;
+
+import java.lang.all;
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeEvent;
+
+class PropertyChangeSupport {
+    PropertyChangeListener[][ String ] listeners;
+    Object obj;
+    this(Object obj){
+        this.obj = obj;
+    }
+    void addPropertyChangeListener(PropertyChangeListener listener){
+        addPropertyChangeListener( "", listener );
+    }
+    void addPropertyChangeListener(String propertyName, PropertyChangeListener listener){
+        PropertyChangeListener[] list;
+        if( auto l = propertyName in listeners ){
+            list = *l;
+        }
+        list ~= listener;
+        listeners[ propertyName.dup ] = list;
+    }
+    void firePropertyChange(String propertyName, bool oldValue, bool newValue){
+        firePropertyChange( propertyName, Boolean.valueOf(oldValue), Boolean.valueOf(newValue) );
+    }
+    void firePropertyChange(String propertyName, int oldValue, int newValue){
+        firePropertyChange( propertyName, new Integer(oldValue), new Integer(newValue) );
+    }
+    void firePropertyChange(String propertyName, Object oldValue, Object newValue){
+        PropertyChangeListener[] list;
+        if( auto l = propertyName in listeners ){
+            list = *l;
+        }
+        auto evt = new PropertyChangeEvent( obj, propertyName, oldValue, newValue );
+        foreach( listener; list ){
+            if( listener ){
+                listener.propertyChange( evt );
+            }
+        }
+    }
+    void removePropertyChangeListener(PropertyChangeListener listener){
+        removePropertyChangeListener( "", listener );
+    }
+    void removePropertyChangeListener(String propertyName, PropertyChangeListener listener){
+        if( auto list = propertyName in listeners ){
+            list.length = tango.core.Array.remove( *list, listener );
+            if( list.length > 0 ){
+                listeners[ propertyName.dup ] = *list;
+            }
+            else{
+                listeners.remove( propertyName );
+            }
+        }
+    }
+}
+
+