diff options
author | Lluis Sanchez Gual <lluis@novell.com> | 2011-03-31 19:57:44 +0400 |
---|---|---|
committer | Lluis Sanchez Gual <lluis@novell.com> | 2011-03-31 19:58:57 +0400 |
commit | f4ce0fd8be6f3e5fe2176b3cb7a54234f79cc599 (patch) | |
tree | 202b9202bd39d391e48212e66179d67cc85bbc92 /main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.ProgressMonitoring | |
parent | d10475bc63a0e69dcab63ca216643e186a4af872 (diff) |
Factorized code for showing error dialogs into BaseProgressMonitor.
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.ProgressMonitoring')
2 files changed, 28 insertions, 34 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.ProgressMonitoring/BaseProgressMonitor.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.ProgressMonitoring/BaseProgressMonitor.cs index 00713ad836..d143ad00d6 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.ProgressMonitoring/BaseProgressMonitor.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.ProgressMonitoring/BaseProgressMonitor.cs @@ -34,6 +34,7 @@ using System.IO; using MonoDevelop.Core; using MonoDevelop.Core.ProgressMonitoring; using MonoDevelop.Ide.Gui; +using MonoDevelop.Ide.Gui.Dialogs; namespace MonoDevelop.Ide.ProgressMonitoring { @@ -326,5 +327,27 @@ namespace MonoDevelop.Ide.ProgressMonitoring } } + protected void ShowResultDialog () + { + if (Errors.Count == 1 && Warnings.Count == 0) { + if (ErrorException != null) + MessageService.ShowException (ErrorException, Errors[0]); + else + MessageService.ShowError (Errors[0]); + } + else if (Errors.Count == 0 && Warnings.Count == 1) { + MessageService.ShowWarning (Warnings[0]); + } + else if (Errors.Count > 0 || Warnings.Count > 0) { + MultiMessageDialog resultDialog = new MultiMessageDialog (); + foreach (string m in Errors) + resultDialog.AddError (m); + foreach (string m in Warnings) + resultDialog.AddWarning (m); + resultDialog.Run (); + resultDialog.Destroy (); + } + } + } } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.ProgressMonitoring/MessageDialogProgressMonitor.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.ProgressMonitoring/MessageDialogProgressMonitor.cs index bb8ddbedcf..6b91c23883 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.ProgressMonitoring/MessageDialogProgressMonitor.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.ProgressMonitoring/MessageDialogProgressMonitor.cs @@ -39,9 +39,6 @@ namespace MonoDevelop.Ide.ProgressMonitoring public class MessageDialogProgressMonitor: BaseProgressMonitor { - StringCollection errorsMessages = new StringCollection (); - StringCollection warningMessages = new StringCollection (); - Exception errorException; ProgressDialog dialog; bool hideWhenDone; bool showDetails; @@ -121,30 +118,19 @@ namespace MonoDevelop.Ide.ProgressMonitoring public override void ReportWarning (string message) { + base.ReportWarning (message); if (dialog != null) { dialog.WriteText (GettextCatalog.GetString ("WARNING: ") + message + "\n"); RunPendingEvents (); } - warningMessages.Add (message); } public override void ReportError (string message, Exception ex) { - if (message == null && ex != null) - message = ex.Message; - else if (message != null && ex != null) { - if (!message.EndsWith (".")) message += "."; - message += " " + ex.Message; - } - - errorsMessages.Add (message); - if (ex != null) { - LoggingService.LogError (ex.ToString ()); - errorException = ex; - } + base.ReportError (message, ex); if (dialog != null) { - dialog.WriteText (GettextCatalog.GetString ("ERROR: ") + message + "\n"); + dialog.WriteText (GettextCatalog.GetString ("ERROR: ") + Errors [Errors.Count - 1] + "\n"); RunPendingEvents (); } } @@ -158,7 +144,7 @@ namespace MonoDevelop.Ide.ProgressMonitoring void ShowDialogs () { if (dialog != null) { - dialog.ShowDone (warningMessages.Count > 0, errorsMessages.Count > 0); + dialog.ShowDone (Warnings.Count > 0, Errors.Count > 0); if (hideWhenDone) dialog.Destroy (); } @@ -166,22 +152,7 @@ namespace MonoDevelop.Ide.ProgressMonitoring if (showDetails) return; - if (errorsMessages.Count > 0) { - string s = ""; - foreach (string m in errorsMessages) - s += m + "\n"; - if (errorException != null) - MessageService.ShowException (errorException, s); - else - MessageService.ShowError (s); - } - - if (warningMessages.Count > 0) { - string s = ""; - foreach (string m in warningMessages) - s += m + "\n"; - MessageService.ShowError (s); - } + ShowResultDialog (); } } } |