diff dwtx/ui/internal/forms/MessageManager.d @ 76:e193036d82c9

Fix continue porting
author Frank Benoit <benoit@tionex.de>
date Sat, 24 May 2008 06:18:55 +0200
parents 5d489b9f966c
children 4ac9946b9fb5
line wrap: on
line diff
--- a/dwtx/ui/internal/forms/MessageManager.d	Sat May 24 05:11:16 2008 +0200
+++ b/dwtx/ui/internal/forms/MessageManager.d	Sat May 24 06:18:55 2008 +0200
@@ -35,15 +35,16 @@
 import tango.util.collection.ArraySeq;
 import tango.util.collection.HashMap;
 import tango.util.Convert;
-
+import tango.text.Text;
+import tango.io.FileConst;
 /**
  * @see IMessageManager
  */
 
 public class MessageManager : IMessageManager {
 
-    private static final DefaultPrefixProvider DEFAULT_PREFIX_PROVIDER_;
-    private static final DefaultPrefixProvider DEFAULT_PREFIX_PROVIDER(){
+    private static DefaultPrefixProvider DEFAULT_PREFIX_PROVIDER_;
+    private static DefaultPrefixProvider DEFAULT_PREFIX_PROVIDER(){
         if( DEFAULT_PREFIX_PROVIDER_ is null ){
             synchronized(MessageManager.classinfo){
                 if( DEFAULT_PREFIX_PROVIDER_ is null ){
@@ -99,17 +100,22 @@
         return standardInformation_;
     }
 
-    private static const String[] SINGLE_MESSAGE_SUMMARY_KEYS = [
+    private static String[] SINGLE_MESSAGE_SUMMARY_KEYS;
+    private static String[] MULTIPLE_MESSAGE_SUMMARY_KEYS;
+
+    static this(){
+        SINGLE_MESSAGE_SUMMARY_KEYS = [
             Messages.MessageManager_sMessageSummary,
             Messages.MessageManager_sMessageSummary,
             Messages.MessageManager_sWarningSummary,
             Messages.MessageManager_sErrorSummary ];
 
-    private static const String[] MULTIPLE_MESSAGE_SUMMARY_KEYS = [
+        MULTIPLE_MESSAGE_SUMMARY_KEYS = [
             Messages.MessageManager_pMessageSummary,
             Messages.MessageManager_pMessageSummary,
             Messages.MessageManager_pWarningSummary,
             Messages.MessageManager_pErrorSummary ];
+    }
 
     static class Message : IMessage {
         Control control;
@@ -215,10 +221,11 @@
 
     class ControlDecorator {
         private ControlDecoration decoration;
-        private ArraySeq!(Message) controlMessages = new ArraySeq!(Message);
+        private ArraySeq!(Object) controlMessages;
         private String prefix;
 
         this(Control control) {
+            controlMessages = new ArraySeq!(Object);
             this.decoration = new ControlDecoration(control, decorationPosition, scrolledForm.getBody());
         }
 
@@ -255,7 +262,9 @@
         }
 
         void addAll(ArraySeq!(Object) target) {
-            target.addAll(controlMessages);
+            foreach( o; controlMessages ){
+                target.append(o);
+            }
         }
 
         void addMessage(Object key, String text, Object data, int type) {
@@ -277,7 +286,7 @@
         }
 
         bool removeMessages() {
-            if (controlMessages.isEmpty())
+            if (controlMessages.drained())
                 return false;
             controlMessages.clear();
             if (isAutoUpdate())
@@ -286,7 +295,7 @@
         }
 
         public void update() {
-            if (controlMessages.isEmpty()) {
+            if (controlMessages.drained()) {
                 decoration.setDescriptionText(null);
                 decoration.hide();
             } else {
@@ -343,7 +352,7 @@
 
         if (dec is null) {
             dec = new ControlDecorator(control);
-            decorators.put(control, dec);
+            decorators.add(control, dec);
         }
         dec.addMessage(key, messageText, data, type);
         if (isAutoUpdate())
@@ -370,7 +379,7 @@
      * @see dwtx.ui.forms.IMessageManager#removeMessages()
      */
     public void removeMessages() {
-        if (!messages.isEmpty()) {
+        if (!messages.drained()) {
             messages.clear();
             if (isAutoUpdate())
                 updateForm();
@@ -414,12 +423,12 @@
      */
     public void removeAllMessages() {
         bool needsUpdate = false;
-        for (Enumeration enm = decorators.elements(); enm.hasMoreElements();) {
-            ControlDecorator control = cast(ControlDecorator) enm.nextElement();
+        foreach( v; decorators ){
+            ControlDecorator control = cast(ControlDecorator) v;
             if (control.removeMessages())
                 needsUpdate = true;
         }
-        if (!messages.isEmpty()) {
+        if (!messages.drained()) {
             messages.clear();
             needsUpdate = true;
         }
@@ -437,7 +446,7 @@
         if (message is null) {
             message = new Message(key, messageText, type, data);
             message.prefix = prefix;
-            list.add(message);
+            list.append(message);
         } else {
             message.message = messageText;
             message.type = type;
@@ -453,7 +462,7 @@
     private Message findMessage(Object key, ArraySeq!(Object) list) {
         for (int i = 0; i < list.size(); i++) {
             Message message = cast(Message) list.get(i);
-            if (message.getKey().equals(key))
+            if (message.getKey().opEquals(key))
                 return message;
         }
         return null;
@@ -466,8 +475,8 @@
      */
     public void update() {
         // Update decorations
-        for (Iterator iter = decorators.values().iterator(); iter.hasNext();) {
-            ControlDecorator dec = cast(ControlDecorator) iter.next();
+        foreach( v; decorators ){
+            ControlDecorator dec = cast(ControlDecorator) v;
             dec.update();
         }
         // Update the form
@@ -479,10 +488,12 @@
      */
 
     private void updateForm() {
-        ArrayList mergedList = new ArrayList();
-        mergedList.addAll(messages);
-        for (Enumeration enm = decorators.elements(); enm.hasMoreElements();) {
-            ControlDecorator dec = cast(ControlDecorator) enm.nextElement();
+        ArraySeq!(Object) mergedList = new ArraySeq!(Object);
+        foreach( o; messages ){
+            mergedList.append(o);
+        }
+        foreach( v; decorators ){
+            ControlDecorator dec = cast(ControlDecorator) v;
             dec.addAll(mergedList);
         }
         update(mergedList);
@@ -490,7 +501,7 @@
 
     private void update(ArraySeq!(Object) mergedList) {
         pruneControlDecorators();
-        if (scrolledForm.getForm().getHead().getBounds().height is 0 || mergedList.isEmpty() || mergedList is null) {
+        if (scrolledForm.getForm().getHead().getBounds().height is 0 || mergedList.drained() || mergedList is null) {
             scrolledForm.setMessage(null, IMessageProvider.NONE);
             return;
         }
@@ -520,13 +531,14 @@
     private static String getFullMessage(IMessage message) {
         if (message.getPrefix() is null)
             return message.getMessage();
-        return message.getPrefix() + message.getMessage();
+        return message.getPrefix() ~ message.getMessage();
     }
 
-    private ArraySeq!(Message) createPeers(ArraySeq!(Message) messages) {
-        auto peers = new ArraySeq!(Message);
+    private ArraySeq!(Object) createPeers(ArraySeq!(Object) messages) {
+        auto peers = new ArraySeq!(Object);
         int maxType = 0;
-        foreach( message; messages ){
+        foreach( o; messages ){
+            auto message = cast(Message)o;
             if (message.type > maxType) {
                 peers.clear();
                 maxType = message.type;
@@ -538,32 +550,28 @@
     }
 
     private String createDetails(ArraySeq!(Object) messages, bool excludePrefix) {
-        StringWriter sw = new StringWriter();
-        PrintWriter out_ = new PrintWriter(sw);
+        auto txt = new tango.text.Text.Text!(char);
 
         for (int i = 0; i < messages.size(); i++) {
             if (i > 0)
-                out_.println();
+                txt.append( FileConst.NewlineString );
             IMessage m = cast(IMessage) messages.get(i);
-            out_.print(excludePrefix ? m.getMessage() : getFullMessage(m));
+            txt.append(excludePrefix ? m.getMessage() : getFullMessage(m));
         }
-        out_.flush();
-        return sw.toString();
+        return txt.toString();
     }
 
     public static String createDetails(IMessage[] messages) {
         if (messages is null || messages.length is 0)
             return null;
-        StringWriter sw = new StringWriter();
-        PrintWriter out_ = new PrintWriter(sw);
+        auto txt = new tango.text.Text.Text!(char);
 
         for (int i = 0; i < messages.length; i++) {
             if (i > 0)
-                out_.println();
-            out_.print(getFullMessage(messages[i]));
+                txt.append( FileConst.NewlineString );
+            txt.append(getFullMessage(messages[i]));
         }
-        out_.flush();
-        return sw.toString();
+        return txt.toString();
     }
 
     /*
@@ -576,10 +584,10 @@
     }
 
     private void pruneControlDecorators() {
-        for (Iterator iter = decorators.values().iterator(); iter.hasNext();) {
-            ControlDecorator dec = cast(ControlDecorator) iter.next();
+        foreach( o; decorators.dup ){
+            ControlDecorator dec = cast(ControlDecorator) o;
             if (dec.isDisposed())
-                iter.remove();
+                decorators.remove(o);
         }
     }
 
@@ -599,8 +607,8 @@
      */
     public void setMessagePrefixProvider(IMessagePrefixProvider provider) {
         this.prefixProvider = provider;
-        for (Iterator iter = decorators.values().iterator(); iter.hasNext();) {
-            ControlDecorator dec = cast(ControlDecorator) iter.next();
+        foreach( o; decorators ){
+            ControlDecorator dec = cast(ControlDecorator) o;
             dec.updatePrefix();
         }
     }
@@ -621,8 +629,8 @@
      */
     public void setDecorationPosition(int position) {
         this.decorationPosition = position;
-        for (Iterator iter = decorators.values().iterator(); iter.hasNext();) {
-            ControlDecorator dec = cast(ControlDecorator) iter.next();
+        foreach( o; decorators ){
+            ControlDecorator dec = cast(ControlDecorator) o;
             dec.updatePosition();
         }
     }