# HG changeset patch # User Frank Benoit # Date 1217717669 -7200 # Node ID 86617aa6b5dd1744e6da56d49c740e3e15cbcdc4 # Parent cdf77a0793c2e10c59083efefae7d51d8e13a5ed More helper classes, needed by draw2d diff -r cdf77a0793c2 -r 86617aa6b5dd dwtx/dwtxhelper/Bean.d --- /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){} +} + + diff -r cdf77a0793c2 -r 86617aa6b5dd dwtx/dwtxhelper/Collection.d --- /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; + } +} + + diff -r cdf77a0793c2 -r 86617aa6b5dd dwtx/dwtxhelper/Random.d --- /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; + } +} + + diff -r cdf77a0793c2 -r 86617aa6b5dd dwtx/dwtxhelper/Timer.d --- /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){} +} + + diff -r cdf77a0793c2 -r 86617aa6b5dd dwtx/dwtxhelper/TimerTask.d --- /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; + } +} + +