changeset 100:86617aa6b5dd

More helper classes, needed by draw2d
author Frank Benoit <benoit@tionex.de>
date Sun, 03 Aug 2008 00:54:29 +0200
parents cdf77a0793c2
children 1082a0fc2bb8
files dwtx/dwtxhelper/Bean.d dwtx/dwtxhelper/Collection.d dwtx/dwtxhelper/Random.d dwtx/dwtxhelper/Timer.d dwtx/dwtxhelper/TimerTask.d
diffstat 5 files changed, 1280 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dwtx/dwtxhelper/Bean.d	Sun Aug 03 00:54:29 2008 +0200
@@ -0,0 +1,54 @@
+module dwtx.dwtxhelper.Bean;
+
+import dwt.dwthelper.utils;
+
+class PropertyChangeEvent : EventObject {
+    private String propertyName;
+    private Object oldValue;
+    private Object newValue;
+    private Object propagationId;
+
+    this( Object source, String propertyName, Object oldValue, Object newValue) {
+        super( source );
+        this.propertyName = propertyName;
+        this.oldValue = oldValue;
+        this.newValue = newValue;
+    }
+    Object getNewValue(){
+        return newValue;
+    }
+    Object getOldValue(){
+        return oldValue;
+    }
+    Object getPropagationId(){
+        return propagationId;
+    }
+    String getPropertyName(){
+        return propertyName;
+    }
+    void setPropagationId(Object propagationId){
+        this.propagationId = propagationId;
+    }
+    public override String toString() {
+        return this.classinfo.name ~ "[source=" ~ source.toString() ~ "]";
+    }
+}
+
+interface PropertyChangeListener {
+    void   propertyChange(PropertyChangeEvent evt);
+}
+
+
+class PropertyChangeSupport {
+    this(Object){
+    }
+    void addPropertyChangeListener(PropertyChangeListener listener){}
+    void addPropertyChangeListener(String propertyName, PropertyChangeListener listener){}
+    void firePropertyChange(String propertyName, bool oldValue, bool newValue){}
+    void firePropertyChange(String propertyName, int oldValue, int newValue){}
+    void firePropertyChange(String propertyName, Object oldValue, Object newValue){}
+    void removePropertyChangeListener(PropertyChangeListener listener){}
+    void removePropertyChangeListener(String propertyName, PropertyChangeListener listener){}
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dwtx/dwtxhelper/Collection.d	Sun Aug 03 00:54:29 2008 +0200
@@ -0,0 +1,1078 @@
+module dwtx.dwtxhelper.Collection;
+
+import dwt.dwthelper.utils;
+
+static import tango.util.container.CircularList;
+static import tango.util.container.HashMap;
+static import tango.util.container.SortedMap;
+static import tango.util.container.more.Vector;
+
+interface Iterator{
+    public bool hasNext();
+    public Object next();
+    public void  remove();
+}
+
+interface Collection {
+    public bool     add(Object o);
+    public bool    addAll(Collection c);
+    public void   clear();
+    public bool    contains(Object o);
+    public bool    containsAll(Collection c);
+    public int    opEquals(Object o);
+    public hash_t   toHash();
+    public bool    isEmpty();
+    public Iterator   iterator();
+    public bool    remove(Object o);
+    public bool    removeAll(Collection c);
+    public bool    retainAll(Collection c);
+    public int    size();
+    public Object[]   toArray();
+    public Object[]   toArray(Object[] a);
+}
+
+interface Map {
+    public void clear();
+    public bool containsKey(Object key);
+    public bool containsValue(Object value);
+    public Set  entrySet();
+    public int opEquals(Object o);
+    public Object get(Object key);
+    public hash_t toHash();
+    public bool isEmpty();
+    public Set    keySet();
+    public Object put(Object key, Object value);
+    public void   putAll(Map t);
+    public Object remove(Object key);
+    public int    size();
+    public Collection values();
+
+    // only for D
+    public int opApply (int delegate(ref Object value) dg);
+    public int opApply (int delegate(ref Object key, ref Object value) dg);
+}
+
+interface List : Collection {
+    public void     add(int index, Object element);
+    public bool     add(Object o);
+    public bool     addAll(Collection c);
+    public bool     addAll(int index, Collection c);
+    public void     clear();
+    public bool     contains(Object o);
+    public bool     containsAll(Collection c);
+    public int      opEquals(Object o);
+    public Object   get(int index);
+    public hash_t   toHash();
+    public int      indexOf(Object o);
+    public bool     isEmpty();
+    public Iterator iterator();
+    public int      lastIndexOf(Object o);
+    public ListIterator   listIterator();
+    public ListIterator   listIterator(int index);
+    public Object   remove(int index);
+    public bool     remove(Object o);
+    public bool     removeAll(Collection c);
+    public bool     retainAll(Collection c);
+    public Object   set(int index, Object element);
+    public int      size();
+    public List     subList(int fromIndex, int toIndex);
+    public Object[] toArray();
+    public Object[] toArray(Object[] a);
+}
+
+interface Set : Collection {
+    public bool     add(Object o);
+    public bool     addAll(Collection c);
+    public void     clear();
+    public bool     contains(Object o);
+    public bool     containsAll(Collection c);
+    public int      opEquals(Object o);
+    public hash_t   toHash();
+    public bool     isEmpty();
+    public Iterator iterator();
+    public bool     remove(Object o);
+    public bool     removeAll(Collection c);
+    public bool     retainAll(Collection c);
+    public int      size();
+    public Object[] toArray();
+    public Object[] toArray(Object[] a);
+}
+interface ListIterator {
+    public void   add(Object o);
+    public bool   hasNext();
+    public bool   hasPrevious();
+    public Object next();
+    public int    nextIndex();
+    public Object previous();
+    public int    previousIndex();
+    public void   remove();
+    public void   set(Object o);
+}
+class Collections {
+
+    public static List EMPTY_LIST;
+
+    public static List unmodifiableList( List list ){
+        return null;
+    }
+    public static void     sort(List list){
+    }
+    public static void     sort(List list, Comparator c){
+    }
+    static void     reverse(List list) {
+    }
+}
+
+class HashMap : Map {
+    alias tango.util.container.HashMap.HashMap!(Object,Object) MapType;
+    private MapType map;
+
+    public this(){
+        map = new MapType();
+    }
+    public this(int initialCapacity){
+        implMissing( __FILE__, __LINE__ );
+    }
+    public this(int initialCapacity, float loadFactor){
+        implMissing( __FILE__, __LINE__ );
+    }
+    public this(Map m){
+        implMissing( __FILE__, __LINE__ );
+    }
+    public void clear(){
+        map.clear();
+    }
+    public bool containsKey(Object key){
+        Object v;
+        return map.get(key, v );
+    }
+    public bool containsValue(Object value){
+        return map.contains(value);
+    }
+    public Set  entrySet(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    public override int opEquals(Object o){
+        if( auto other = cast(HashMap) o ){
+            if( other.size() !is size() ){
+                return false;
+            }
+            foreach( k, v; map ){
+                Object vo = other.get(k);
+                if( v != vo ){
+                    return false;
+                }
+            }
+            return true;
+        }
+        return false;
+    }
+    public Object get(Object key){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    public override hash_t toHash(){
+        return super.toHash();
+    }
+    public bool isEmpty(){
+        return map.isEmpty();
+    }
+    public Set    keySet(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    public Object put(Object key, Object value){
+        Object res = null;
+        if( auto vold = key in map ){
+            res = *vold;
+        }
+        map[ key ] = value;
+        return res;
+    }
+    public void   putAll(Map t){
+        implMissing( __FILE__, __LINE__ );
+    }
+    public Object remove(Object key){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    public int    size(){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    public Collection values(){
+        ArrayList res = new ArrayList( size() );
+        foreach( k, v; map ){
+            res.add( v );
+        }
+        return res;
+    }
+
+    public int opApply (int delegate(ref Object value) dg){
+        return map.opApply( dg );
+    }
+    public int opApply (int delegate(ref Object key, ref Object value) dg){
+        return map.opApply( dg );
+    }
+
+}
+
+class TreeMap : Map {
+    alias tango.util.container.SortedMap.SortedMap!(Object,Object) MapType;
+    private MapType map;
+
+    public this(){
+        map = new MapType();
+    }
+    public this(Comparator c){
+        implMissing( __FILE__, __LINE__ );
+    }
+    public this(Map m){
+        implMissing( __FILE__, __LINE__ );
+    }
+//     public this(SortedMap m){
+//         implMissing( __FILE__, __LINE__ );
+//     }
+    public void clear(){
+        map.clear();
+    }
+    public bool containsKey(Object key){
+        Object v;
+        return map.get(key, v );
+    }
+    public bool containsValue(Object value){
+        return map.contains(value);
+    }
+    public Set  entrySet(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    public override int opEquals(Object o){
+        if( auto other = cast(HashMap) o ){
+            if( other.size() !is size() ){
+                return false;
+            }
+            foreach( k, v; map ){
+                Object vo = other.get(k);
+                if( v != vo ){
+                    return false;
+                }
+            }
+            return true;
+        }
+        return false;
+    }
+    public Object get(Object key){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    public override hash_t toHash(){
+        return super.toHash();
+    }
+    public bool isEmpty(){
+        return map.isEmpty();
+    }
+    public Set    keySet(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    public Object put(Object key, Object value){
+        Object res = null;
+        implMissing( __FILE__, __LINE__ );
+        return res;
+    }
+    public void   putAll(Map t){
+        implMissing( __FILE__, __LINE__ );
+    }
+    public Object remove(Object key){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    public int    size(){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    public Collection values(){
+        ArrayList res = new ArrayList( size() );
+        foreach( k, v; map ){
+            res.add( v );
+        }
+        return res;
+    }
+
+    public int opApply (int delegate(ref Object value) dg){
+        return map.opApply( dg );
+    }
+    public int opApply (int delegate(ref Object key, ref Object value) dg){
+        return map.opApply( dg );
+    }
+}
+
+class HashSet : Set {
+    public this(){}
+    public this(Collection c){}
+    public this(int initialCapacity){}
+    public this(int initialCapacity, float loadFactor){}
+    public bool    add(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    public bool    addAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    public void   clear(){
+        implMissing( __FILE__, __LINE__ );
+    }
+    public bool    contains(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    public bool    containsAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    public override int    opEquals(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    public override hash_t    toHash(){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    public bool    isEmpty(){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    public Iterator   iterator(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    public bool    remove(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    public bool    removeAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    public bool    retainAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    public int    size(){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    public Object[]   toArray(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    public Object[]   toArray(Object[] a){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+
+
+}
+
+
+class Vector : List {
+    this(){
+        implMissing( __FILE__, __LINE__ );
+    }
+    this(Collection c){
+        implMissing( __FILE__, __LINE__ );
+    }
+    this(int initialCapacity){
+        implMissing( __FILE__, __LINE__ );
+    }
+    this(int initialCapacity, int capacityIncrement){
+        implMissing( __FILE__, __LINE__ );
+    }
+    void   add(int index, Object element){
+        implMissing( __FILE__, __LINE__ );
+    }
+    bool    add(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    addAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    addAll(int index, Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    void   addElement(Object obj){
+        implMissing( __FILE__, __LINE__ );
+    }
+    int    capacity(){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    void   clear(){
+        implMissing( __FILE__, __LINE__ );
+    }
+    Object     clone(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    bool    contains(Object elem){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    containsAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    void   copyInto(Object[] anArray){
+        implMissing( __FILE__, __LINE__ );
+    }
+    Object     elementAt(int index){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+//     Enumeration    elements(){
+//         implMissing( __FILE__, __LINE__ );
+//         return null;
+//     }
+    void   ensureCapacity(int minCapacity){
+        implMissing( __FILE__, __LINE__ );
+    }
+    int opEquals(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    Object     firstElement(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object     get(int index){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    hash_t    toHash(){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    int    indexOf(Object elem){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    int    indexOf(Object elem, int index){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    void   insertElementAt(Object obj, int index){
+        implMissing( __FILE__, __LINE__ );
+    }
+    bool    isEmpty(){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    Iterator   iterator(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object     lastElement(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    int    lastIndexOf(Object elem){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    int    lastIndexOf(Object elem, int index){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    ListIterator   listIterator(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    ListIterator   listIterator(int index){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object     remove(int index){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    bool    remove(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    removeAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    void   removeAllElements(){
+        implMissing( __FILE__, __LINE__ );
+    }
+    bool    removeElement(Object obj){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    void   removeElementAt(int index){
+        implMissing( __FILE__, __LINE__ );
+    }
+    protected  void     removeRange(int fromIndex, int toIndex){
+        implMissing( __FILE__, __LINE__ );
+    }
+    bool    retainAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    Object     set(int index, Object element){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    void   setElementAt(Object obj, int index){
+        implMissing( __FILE__, __LINE__ );
+    }
+    void   setSize(int newSize){
+        implMissing( __FILE__, __LINE__ );
+    }
+    int    size(){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    List   subList(int fromIndex, int toIndex){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object[]   toArray(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object[]   toArray(Object[] a){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    String     toString(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    void   trimToSize(){
+        implMissing( __FILE__, __LINE__ );
+    }
+}
+class Stack : Vector {
+    this(){
+    }
+    void   add(int index, Object element){
+        implMissing( __FILE__, __LINE__ );
+    }
+    bool    add(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    addAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    addAll(int index, Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    void   addElement(Object obj){
+        implMissing( __FILE__, __LINE__ );
+    }
+    int    capacity(){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    void   clear(){
+        implMissing( __FILE__, __LINE__ );
+    }
+    Object     clone(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    bool    contains(Object elem){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    containsAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    void   copyInto(Object[] anArray){
+        implMissing( __FILE__, __LINE__ );
+    }
+    Object     elementAt(int index){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+//     Enumeration    elements(){
+//         implMissing( __FILE__, __LINE__ );
+//         return null;
+//     }
+    void   ensureCapacity(int minCapacity){
+        implMissing( __FILE__, __LINE__ );
+    }
+    int opEquals(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    Object     firstElement(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object     get(int index){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    hash_t    toHash(){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    int    indexOf(Object elem){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    int    indexOf(Object elem, int index){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    void   insertElementAt(Object obj, int index){
+        implMissing( __FILE__, __LINE__ );
+    }
+    bool    isEmpty(){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    Iterator   iterator(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object     lastElement(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    int    lastIndexOf(Object elem){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    int    lastIndexOf(Object elem, int index){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    ListIterator   listIterator(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    ListIterator   listIterator(int index){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object     remove(int index){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    bool    remove(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    removeAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    void   removeAllElements(){
+        implMissing( __FILE__, __LINE__ );
+    }
+    bool    removeElement(Object obj){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    void   removeElementAt(int index){
+        implMissing( __FILE__, __LINE__ );
+    }
+    protected  void     removeRange(int fromIndex, int toIndex){
+        implMissing( __FILE__, __LINE__ );
+    }
+    bool    retainAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    Object     set(int index, Object element){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    void   setElementAt(Object obj, int index){
+        implMissing( __FILE__, __LINE__ );
+    }
+    void   setSize(int newSize){
+        implMissing( __FILE__, __LINE__ );
+    }
+    int    size(){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    List   subList(int fromIndex, int toIndex){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object[]   toArray(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object[]   toArray(Object[] a){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+
+    // from Stack
+    String     toString(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    void   trimToSize(){
+        implMissing( __FILE__, __LINE__ );
+    }
+    bool     empty(){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    Object     peek(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object     pop(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object     push(Object item){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    int    search(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+}
+
+class LinkedList : List {
+    void   add(int index, Object element){
+        implMissing( __FILE__, __LINE__ );
+    }
+    bool    add(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    addAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    addAll(int index, Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    void   addElement(Object obj){
+        implMissing( __FILE__, __LINE__ );
+    }
+    int    capacity(){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    void   clear(){
+        implMissing( __FILE__, __LINE__ );
+    }
+    Object     clone(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    bool    contains(Object elem){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    containsAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    void   copyInto(Object[] anArray){
+        implMissing( __FILE__, __LINE__ );
+    }
+    Object     elementAt(int index){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+//     Enumeration    elements(){
+//         implMissing( __FILE__, __LINE__ );
+//         return null;
+//     }
+    void   ensureCapacity(int minCapacity){
+        implMissing( __FILE__, __LINE__ );
+    }
+    int opEquals(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    Object     firstElement(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object     get(int index){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    hash_t    toHash(){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    int    indexOf(Object elem){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    int    indexOf(Object elem, int index){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    void   insertElementAt(Object obj, int index){
+        implMissing( __FILE__, __LINE__ );
+    }
+    bool    isEmpty(){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    Iterator   iterator(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object     lastElement(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    int    lastIndexOf(Object elem){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    int    lastIndexOf(Object elem, int index){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    ListIterator   listIterator(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    ListIterator   listIterator(int index){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object     remove(int index){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    bool    remove(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    removeAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    void   removeAllElements(){
+        implMissing( __FILE__, __LINE__ );
+    }
+    bool    removeElement(Object obj){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    void   removeElementAt(int index){
+        implMissing( __FILE__, __LINE__ );
+    }
+    protected  void     removeRange(int fromIndex, int toIndex){
+        implMissing( __FILE__, __LINE__ );
+    }
+    bool    retainAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    Object     set(int index, Object element){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    void   setElementAt(Object obj, int index){
+        implMissing( __FILE__, __LINE__ );
+    }
+    void   setSize(int newSize){
+        implMissing( __FILE__, __LINE__ );
+    }
+    int    size(){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    List   subList(int fromIndex, int toIndex){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object[]   toArray(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object[]   toArray(Object[] a){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    String     toString(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    void   trimToSize(){
+        implMissing( __FILE__, __LINE__ );
+    }
+}
+
+class ArrayList : List {
+    private Object[] data;
+
+    this(){
+    }
+    this(int size){
+        data.length = size;
+        data.length = 0;
+    }
+    this(Collection){
+        implMissing( __FILE__, __LINE__ );
+    }
+    void   add(int index, Object element){
+        implMissing( __FILE__, __LINE__ );
+    }
+    bool    add(Object o){
+
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    addAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    addAll(int index, Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    void   clear(){
+        implMissing( __FILE__, __LINE__ );
+    }
+    bool    contains(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    containsAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    int opEquals(Object o){
+        if( auto other = cast(ArrayList)o ){
+            if( data.length !is other.data.length ){
+                return false;
+            }
+            for( int i = 0; i < data.length; i++ ){
+                if( data[i] is other.data[i] ){
+                    continue;
+                }
+                if(( data[i] is null ) || ( other.data[i] is null )){
+                    return false;
+                }
+                if( data[i] == other.data[i] ){
+                    continue;
+                }
+                return false;
+            }
+            return true;
+        }
+        return false;
+    }
+    Object     get(int index){
+        return data[index];
+    }
+    public override hash_t toHash(){
+        return super.toHash();
+    }
+    int    indexOf(Object o){
+        foreach( i, v; data ){
+            if( data[i] is o ){
+                return i;
+            }
+            if(( data[i] is null ) || ( o is null )){
+                continue;
+            }
+            if( data[i] == o ){
+                return i;
+            }
+        }
+        return -1;
+    }
+    bool    isEmpty(){
+        return data.length is 0;
+    }
+    Iterator   iterator(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    int    lastIndexOf(Object o){
+        foreach_reverse( i, v; data ){
+            if( data[i] is o ){
+                return i;
+            }
+            if(( data[i] is null ) || ( o is null )){
+                continue;
+            }
+            if( data[i] == o ){
+                return i;
+            }
+        }
+        return -1;
+    }
+    ListIterator   listIterator(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    ListIterator   listIterator(int index){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object     remove(int index){
+        Object res = data[index];
+        data[ index .. $-1] = data[ index+1 .. $ ];
+        data.length = data.length -1;
+        return res;
+    }
+    bool    remove(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    removeAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    retainAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    Object     set(int index, Object element){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    int    size(){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    List   subList(int fromIndex, int toIndex){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object[]   toArray(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object[]   toArray(Object[] a){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dwtx/dwtxhelper/Random.d	Sun Aug 03 00:54:29 2008 +0200
@@ -0,0 +1,16 @@
+module dwtx.dwtxhelper.Random;
+
+static import tango.math.random.Kiss;
+
+class Random {
+    tango.math.random.Kiss.Kiss kiss;
+
+    public this(int seed ){
+        kiss.seed(seed);
+    }
+    public bool  nextBoolean(){
+        return kiss.toInt(2) is 0;
+    }
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dwtx/dwtxhelper/Timer.d	Sun Aug 03 00:54:29 2008 +0200
@@ -0,0 +1,110 @@
+module dwtx.dwtxhelper.Timer;
+
+import dwtx.dwtxhelper.TimerTask;
+import tango.util.container.CircularList;
+import tango.core.Thread;
+import tango.core.sync.Mutex;
+import tango.core.sync.Condition;
+import tango.time.Time;
+import tango.time.Clock;
+
+class Timer {
+
+    alias CircularList!( TimerTask ) ListType;
+
+    private Thread thread;
+    private ListType schedules;
+    private Mutex mutex;
+    private Condition cond;
+    private bool isCanceled = false;
+
+    this(){
+        this(false);
+    }
+    this(bool isDaemon){
+        mutex = new Mutex();
+        cond = new Condition( mutex );
+
+        schedules = new ListType();
+        thread = new Thread( &run );
+        thread.isDaemon = isDaemon;
+        thread.start();
+    }
+    private void run(){
+
+        while( !isCanceled ){
+            TimerTask timerTask = null;
+            synchronized(mutex){
+                bool isReady = false;
+                do{
+                    if( isCanceled ){
+                        return;
+                    }
+
+                    if( schedules.size() is 0 ){
+                        cond.wait();
+                    }
+                    else{
+                        timerTask = schedules.head();
+                        TimeSpan toWait = timerTask.executionTime - Clock.now();
+                        if( toWait.interval() > 0 ){
+                            cond.wait( toWait.interval() );
+                        }
+                        else{
+                            schedules.removeHead();
+                            isReady = true;
+                        }
+                    }
+                }while( !isReady );
+            }
+            if( timerTask ){
+                timerTask.run();
+                if( timerTask.period.millis > 0 ){
+                    timerTask.executionTime += timerTask.period;
+                    synchronized(mutex){
+                        int index = 0;
+                        foreach( tt; schedules ){
+                            if( tt.executionTime > timerTask.executionTime ){
+                                break;
+                            }
+                            index++;
+                        }
+                        schedules.addAt( index, timerTask );
+                    }
+                }
+            }
+        }
+    }
+    void   cancel(){
+        synchronized(mutex){
+            isCanceled = true;
+            cond.notifyAll();
+        }
+    }
+    void   schedule(TimerTask task, long delay){
+        scheduleAtFixedRate( task, delay, 0 );
+    }
+    void   scheduleAtFixedRate(TimerTask task, long delay, long period){
+        assert( task );
+        task.executionTime = Clock.now + TimeSpan.millis(delay);
+        task.timer = this;
+        synchronized(mutex){
+            int index = 0;
+            foreach( tt; schedules ){
+                if( tt.executionTime > task.executionTime ){
+                    break;
+                }
+                index++;
+            }
+            schedules.addAt( index, task );
+            cond.notifyAll();
+        }
+    }
+
+//     void   schedule(TimerTask task, Date time){}
+//     void   schedule(TimerTask task, Date firstTime, long period){}
+//     void   schedule(TimerTask task, long delay, long period){}
+//     void   scheduleAtFixedRate(TimerTask task, Date firstTime, long period){}
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dwtx/dwtxhelper/TimerTask.d	Sun Aug 03 00:54:29 2008 +0200
@@ -0,0 +1,22 @@
+module dwtx.dwtxhelper.TimerTask;
+
+import tango.time.Time;
+import dwt.dwthelper.Runnable;
+import dwtx.dwtxhelper.Timer;
+
+class TimerTask : Runnable {
+    package TimeSpan period;
+    package Time executionTime;
+    package Timer timer;
+
+//     bool cancel(){
+//     }
+
+    abstract void run();
+
+    long scheduledExcecutionTime(){
+        return ( executionTime - Time.epoch1970 ).millis;
+    }
+}
+
+