diff dwtx/ui/internal/forms/MessageManager.d @ 104:04b47443bb01

Reworked the collection uses to make use of a wrapper collection that is compatible to the Java Collections. These new wrappers now use the tango.util.containers instead of the tango.util.collections.
author Frank Benoit <benoit@tionex.de>
date Thu, 07 Aug 2008 15:01:33 +0200
parents 1088ca33d3e0
children
line wrap: on
line diff
--- a/dwtx/ui/internal/forms/MessageManager.d	Sun Aug 03 17:01:51 2008 +0200
+++ b/dwtx/ui/internal/forms/MessageManager.d	Thu Aug 07 15:01:33 2008 +0200
@@ -31,9 +31,8 @@
 import dwtx.ui.forms.widgets.ScrolledForm;
 
 import dwt.dwthelper.utils;
+import dwtx.dwtxhelper.Collection;
 
-import tango.util.collection.ArraySeq;
-import tango.util.collection.HashMap;
 import tango.util.Convert;
 import tango.text.Text;
 import tango.io.model.IFile;
@@ -55,8 +54,8 @@
         }
         return DEFAULT_PREFIX_PROVIDER_;
     }
-    private ArraySeq!(Object) messages;
-    private HashMap!(Object,Object) decorators;
+    private ArrayList messages;
+    private Hashtable decorators;
     private bool autoUpdate = true;
     private ScrolledForm scrolledForm;
     private IMessagePrefixProvider prefixProvider;
@@ -237,11 +236,11 @@
 
     class ControlDecorator {
         private ControlDecoration decoration;
-        private ArraySeq!(Object) controlMessages;
+        private ArrayList controlMessages;
         private String prefix;
 
         this(Control control) {
-            controlMessages = new ArraySeq!(Object);
+            controlMessages = new ArrayList();
             this.decoration = new ControlDecoration(control, decorationPosition, scrolledForm.getBody());
         }
 
@@ -277,10 +276,8 @@
                 prefix = ""; //$NON-NLS-1$
         }
 
-        void addAll(ArraySeq!(Object) target) {
-            foreach( o; controlMessages ){
-                target.append(o);
-            }
+        void addAll(ArrayList target) {
+            target.addAll(controlMessages);
         }
 
         void addMessage(Object key, String text, Object data, int type) {
@@ -302,7 +299,7 @@
         }
 
         bool removeMessages() {
-            if (controlMessages.drained())
+            if (controlMessages.isEmpty())
                 return false;
             controlMessages.clear();
             if (isAutoUpdate())
@@ -311,11 +308,11 @@
         }
 
         public void update() {
-            if (controlMessages.drained()) {
+            if (controlMessages.isEmpty()) {
                 decoration.setDescriptionText(null);
                 decoration.hide();
             } else {
-                auto peers = createPeers(controlMessages);
+                ArrayList peers = createPeers(controlMessages);
                 int type = (cast(IMessage) peers.get(0)).getMessageType();
                 String description = createDetails(createPeers(peers), true);
                 if (type is IMessageProvider.ERROR)
@@ -339,8 +336,8 @@
      */
     public this(ScrolledForm scrolledForm) {
         prefixProvider = DEFAULT_PREFIX_PROVIDER;
-        messages = new ArraySeq!(Object);
-        decorators = new HashMap!(Object,Object);
+        messages = new ArrayList();
+        decorators = new Hashtable();
         this.scrolledForm = scrolledForm;
     }
 
@@ -368,7 +365,7 @@
 
         if (dec is null) {
             dec = new ControlDecorator(control);
-            decorators.add(control, dec);
+            decorators.put(control, dec);
         }
         dec.addMessage(key, messageText, data, type);
         if (isAutoUpdate())
@@ -395,7 +392,7 @@
      * @see dwtx.ui.forms.IMessageManager#removeMessages()
      */
     public void removeMessages() {
-        if (!messages.drained()) {
+        if (!messages.isEmpty()) {
             messages.clear();
             if (isAutoUpdate())
                 updateForm();
@@ -439,12 +436,12 @@
      */
     public void removeAllMessages() {
         bool needsUpdate = false;
-        foreach( v; decorators ){
-            ControlDecorator control = cast(ControlDecorator) v;
+        for (Enumeration enm = decorators.elements(); enm.hasMoreElements();) {
+            ControlDecorator control = cast(ControlDecorator) enm.nextElement();
             if (control.removeMessages())
                 needsUpdate = true;
         }
-        if (!messages.drained()) {
+        if (!messages.isEmpty()) {
             messages.clear();
             needsUpdate = true;
         }
@@ -457,12 +454,12 @@
      */
 
     private Message addMessage(String prefix, Object key, String messageText,
-            Object data, int type, ArraySeq!(Object) list) {
+            Object data, int type, ArrayList list) {
         Message message = findMessage(key, list);
         if (message is null) {
             message = new Message(key, messageText, type, data);
             message.prefix = prefix;
-            list.append(message);
+            list.add(message);
         } else {
             message.message = messageText;
             message.type = type;
@@ -475,7 +472,7 @@
      * Finds the message with the provided key in the provided list.
      */
 
-    private Message findMessage(Object key, ArraySeq!(Object) list) {
+    private Message findMessage(Object key, ArrayList list) {
         for (int i = 0; i < list.size(); i++) {
             Message message = cast(Message) list.get(i);
             if (message.getKey().opEquals(key))
@@ -491,8 +488,8 @@
      */
     public void update() {
         // Update decorations
-        foreach( v; decorators ){
-            ControlDecorator dec = cast(ControlDecorator) v;
+        for (Iterator iter = decorators.values().iterator(); iter.hasNext();) {
+            ControlDecorator dec = cast(ControlDecorator) iter.next();
             dec.update();
         }
         // Update the form
@@ -504,24 +501,22 @@
      */
 
     private void updateForm() {
-        ArraySeq!(Object) mergedList = new ArraySeq!(Object);
-        foreach( o; messages ){
-            mergedList.append(o);
-        }
-        foreach( v; decorators ){
-            ControlDecorator dec = cast(ControlDecorator) v;
+        ArrayList mergedList = new ArrayList();
+        mergedList.addAll(messages);
+        for (Enumeration enm = decorators.elements(); enm.hasMoreElements();) {
+            ControlDecorator dec = cast(ControlDecorator) enm.nextElement();
             dec.addAll(mergedList);
         }
         update(mergedList);
     }
 
-    private void update(ArraySeq!(Object) mergedList) {
+    private void update(ArrayList mergedList) {
         pruneControlDecorators();
-        if (scrolledForm.getForm().getHead().getBounds().height is 0 || mergedList.drained() || mergedList is null) {
+        if (scrolledForm.getForm().getHead().getBounds().height is 0 || mergedList.isEmpty() || mergedList is null) {
             scrolledForm.setMessage(null, IMessageProvider.NONE);
             return;
         }
-        auto peers = createPeers(mergedList);
+        ArrayList peers = createPeers(mergedList);
         int maxType = (cast(IMessage) peers.get(0)).getMessageType();
         String messageText;
         IMessage[] array = arraycast!(IMessage)( peers
@@ -550,22 +545,22 @@
         return message.getPrefix() ~ message.getMessage();
     }
 
-    private ArraySeq!(Object) createPeers(ArraySeq!(Object) messages) {
-        auto peers = new ArraySeq!(Object);
+    private ArrayList createPeers(ArrayList messages) {
+        ArrayList peers = new ArrayList();
         int maxType = 0;
-        foreach( o; messages ){
-            auto message = cast(Message)o;
+        for (int i = 0; i < messages.size(); i++) {
+            Message message = cast(Message) messages.get(i);
             if (message.type > maxType) {
                 peers.clear();
                 maxType = message.type;
             }
             if (message.type is maxType)
-                peers.append(message);
+                peers.add(message);
         }
         return peers;
     }
 
-    private String createDetails(ArraySeq!(Object) messages, bool excludePrefix) {
+    private String createDetails(ArrayList messages, bool excludePrefix) {
         auto txt = new tango.text.Text.Text!(char);
 
         for (int i = 0; i < messages.size(); i++) {
@@ -600,10 +595,10 @@
     }
 
     private void pruneControlDecorators() {
-        foreach( o; decorators.dup ){
-            ControlDecorator dec = cast(ControlDecorator) o;
+        for (Iterator iter = decorators.values().iterator(); iter.hasNext();) {
+            ControlDecorator dec = cast(ControlDecorator) iter.next();
             if (dec.isDisposed())
-                decorators.remove(o);
+                iter.remove();
         }
     }
 
@@ -623,8 +618,8 @@
      */
     public void setMessagePrefixProvider(IMessagePrefixProvider provider) {
         this.prefixProvider = provider;
-        foreach( o; decorators ){
-            ControlDecorator dec = cast(ControlDecorator) o;
+        for (Iterator iter = decorators.values().iterator(); iter.hasNext();) {
+            ControlDecorator dec = cast(ControlDecorator) iter.next();
             dec.updatePrefix();
         }
     }
@@ -645,8 +640,8 @@
      */
     public void setDecorationPosition(int position) {
         this.decorationPosition = position;
-        foreach( o; decorators ){
-            ControlDecorator dec = cast(ControlDecorator) o;
+        for (Iterator iter = decorators.values().iterator(); iter.hasNext();) {
+            ControlDecorator dec = cast(ControlDecorator) iter.next();
             dec.updatePosition();
         }
     }