diff options
author | Lluis Sanchez <lluis@novell.com> | 2010-04-19 17:00:52 +0400 |
---|---|---|
committer | Lluis Sanchez <lluis@novell.com> | 2010-04-19 17:00:52 +0400 |
commit | 47db2d5365b0d0ed457c9e30566f2c01680a9698 (patch) | |
tree | 2337a1c5b58d41d1f80777a1336792b57535c045 /main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles | |
parent | 075c3b38fdd5758b3dee108b99ebcc3152b4fefe (diff) |
* MonoDevelop.Ide.Gui/ProgressMonitors.cs:
* MonoDevelop.Ide.Gui.Components/LogView.cs:
* MonoDevelop.Ide.Gui/MonoDevelopStatusBar.cs:
* MonoDevelop.Ide.Gui/StatusProgressMonitor.cs:
* MonoDevelop.Ide.Gui.Pads/DefaultMonitorPad.cs:
* MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs:
* MonoDevelop.Ide.FindInFiles/SearchProgressMonitor.cs: When clicking
over the status bar, activate the pad that generated the status
message being shown. For example, if the status bar shows "Build: 1
error", show the errors pad when clicking on that.
* MonoDevelop.Ide/ProjectOperations.cs:
* MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs: Fix
warning.
* MonoDevelop.Ide.Gui.Pads/TaskListPad.cs: Fix nullref.
svn path=/trunk/monodevelop/; revision=155730
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles')
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs | 10 | ||||
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchProgressMonitor.cs | 56 |
2 files changed, 56 insertions, 10 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs index d60c1f715d..2dccb99227 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs @@ -563,11 +563,10 @@ namespace MonoDevelop.Ide.FindInFiles DispatchService.BackgroundDispatch (delegate { DateTime timer = DateTime.Now; string errorMessage = null; - IProgressMonitor monitor = IdeApp.Workbench.ProgressMonitors.GetStatusProgressMonitor (GettextCatalog.GetString ("Searching..."), MonoDevelop.Ide.Gui.Stock.FindInFiles, false); try { List<SearchResult> results = new List<SearchResult> (); - foreach (SearchResult result in find.FindAll (scope, monitor, pattern, replacePattern, options)) { + foreach (SearchResult result in find.FindAll (scope, searchMonitor, pattern, replacePattern, options)) { if (searchMonitor.IsCancelRequested) return; results.Add (result); @@ -585,19 +584,20 @@ namespace MonoDevelop.Ide.FindInFiles } catch (Exception ex) { errorMessage = ex.Message; LoggingService.LogError ("Error while search", ex); - } finally { - monitor.Dispose (); } string message; if (errorMessage != null) { message = GettextCatalog.GetString ("The search could not be finished: {0}", errorMessage); - } else if (monitor.IsCancelRequested) { + searchMonitor.ReportError (message, null); + } else if (searchMonitor.IsCancelRequested) { message = GettextCatalog.GetString ("Search cancelled."); + searchMonitor.ReportWarning (message); } else { string matches = string.Format (GettextCatalog.GetPluralString ("{0} match found", "{0} matches found", find.FoundMatchesCount), find.FoundMatchesCount); string files = string.Format (GettextCatalog.GetPluralString ("in {0} file.", "in {0} files.", find.SearchedFilesCount), find.SearchedFilesCount); message = GettextCatalog.GetString ("Search completed.") + Environment.NewLine + matches + " " + files; + searchMonitor.ReportSuccess (message); } searchMonitor.ReportStatus (message); searchMonitor.Log.WriteLine (message); diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchProgressMonitor.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchProgressMonitor.cs index f040056284..d7dffae6fb 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchProgressMonitor.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchProgressMonitor.cs @@ -33,16 +33,18 @@ using MonoDevelop.Ide.Gui; namespace MonoDevelop.Ide.FindInFiles { - public class SearchProgressMonitor : BaseProgressMonitor, ISearchProgressMonitor + class SearchProgressMonitor : BaseProgressMonitor, ISearchProgressMonitor { SearchResultPad outputPad; + IProgressMonitor statusMonitor; event EventHandler stopRequested; - public SearchProgressMonitor (SearchResultPad pad, string title) + public SearchProgressMonitor (Pad pad) { - pad.AsyncOperation = this.AsyncOperation; - outputPad = pad; - outputPad.BeginProgress (title); + outputPad = (SearchResultPad) pad.Content; + outputPad.AsyncOperation = this.AsyncOperation; + outputPad.BeginProgress (pad.Title); + statusMonitor = IdeApp.Workbench.ProgressMonitors.GetStatusProgressMonitor (GettextCatalog.GetString ("Searching..."), Stock.FindIcon, false, true, false, pad); } [FreeDispatch] @@ -81,6 +83,8 @@ namespace MonoDevelop.Ide.FindInFiles protected override void OnCompleted () { + statusMonitor.Dispose (); + if (outputPad == null) throw GetDisposedException (); outputPad.WriteText ("\n"); @@ -110,5 +114,47 @@ namespace MonoDevelop.Ide.FindInFiles if (stopRequested != null) stopRequested (this, null); } + + public override void ReportError (string message, Exception ex) + { + base.ReportError (message, ex); + statusMonitor.ReportError (message, ex); + } + + public override void ReportSuccess (string message) + { + base.ReportSuccess (message); + statusMonitor.ReportSuccess (message); + } + + public override void ReportWarning (string message) + { + base.ReportWarning (message); + statusMonitor.ReportWarning (message); + } + + public override void Step (int work) + { + base.Step (work); + statusMonitor.Step (work); + } + + public override void BeginStepTask (string name, int totalWork, int stepSize) + { + base.BeginStepTask (name, totalWork, stepSize); + statusMonitor.BeginStepTask (name, totalWork, stepSize); + } + + public override void BeginTask (string name, int totalWork) + { + base.BeginTask (name, totalWork); + statusMonitor.BeginTask (name, totalWork); + } + + public override void EndTask () + { + base.EndTask (); + statusMonitor.EndTask (); + } } }
\ No newline at end of file |