diff --git a/src/AddIns/Misc/NUnitPad/Project/Src/Gui/TestTreeView.cs b/src/AddIns/Misc/NUnitPad/Project/Src/Gui/TestTreeView.cs
index 1c25b418de..cf650654f2 100644
--- a/src/AddIns/Misc/NUnitPad/Project/Src/Gui/TestTreeView.cs
+++ b/src/AddIns/Misc/NUnitPad/Project/Src/Gui/TestTreeView.cs
@@ -198,7 +198,7 @@ namespace ICSharpCode.NUnitPad
testRunnerCategory.ClearText();
}
- TaskService.Tasks.Clear();
+ TaskService.Clear();
TreeNode selectedNode = treeView.SelectedNode;
@@ -221,7 +221,7 @@ namespace ICSharpCode.NUnitPad
}
// If any tasks bring task view to front.
- if (TaskService.Tasks.Count > 0) {
+ if (TaskService.TaskCount > 0) {
IWorkbench Workbench = ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.Workbench;
PadDescriptor padDescriptor = Workbench.GetPad(typeof(OpenTaskView));
@@ -339,8 +339,7 @@ namespace ICSharpCode.NUnitPad
LineRef.Line,
TaskType.Error);
- TaskService.Tasks.Add(Task);
- TaskService.NotifyTaskChange();
+ TaskService.Add(Task);
}
} else if (!result.Executed) {
@@ -370,8 +369,7 @@ namespace ICSharpCode.NUnitPad
LineRef.Line,
TaskType.Warning);
- TaskService.Tasks.Add(Task);
- TaskService.NotifyTaskChange();
+ TaskService.Add(Task);
}
}
diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaMouseHandler.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaMouseHandler.cs
index 93f0732245..74f3064d22 100644
--- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaMouseHandler.cs
+++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaMouseHandler.cs
@@ -185,7 +185,7 @@ namespace ICSharpCode.TextEditor
return;
}
textArea.Caret.Position = realmousepos;
- if (minSelection != nilPoint) {
+ if (minSelection != nilPoint && textArea.SelectionManager.SelectionCollection.Count > 0) {
ISelection selection = textArea.SelectionManager.SelectionCollection[0];
Point min = textArea.SelectionManager.GreaterEqPos(minSelection, maxSelection) ? maxSelection : minSelection;
Point max = textArea.SelectionManager.GreaterEqPos(minSelection, maxSelection) ? minSelection : maxSelection;
diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
index 9a787e2508..ba3bbcc5e5 100644
--- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
+++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
@@ -617,6 +617,7 @@
+
diff --git a/src/Main/Base/Project/Src/Commands/BuildCommands.cs b/src/Main/Base/Project/Src/Commands/BuildCommands.cs
index 708bc143d8..753a5a12b7 100644
--- a/src/Main/Base/Project/Src/Commands/BuildCommands.cs
+++ b/src/Main/Base/Project/Src/Commands/BuildCommands.cs
@@ -20,19 +20,18 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
public static void ClearTasks()
{
TaskService.BuildMessageViewCategory.ClearText();
- TaskService.Tasks.Clear();
+ TaskService.Clear();
}
public static void ShowResults(CompilerResults results)
{
if (results != null) {
foreach (CompilerError error in results.Errors) {
- TaskService.Tasks.Add(new Task(error));
+ TaskService.Add(new Task(error));
}
if (results.Errors.Count > 0) {
WorkbenchSingleton.Workbench.GetPad(typeof(ErrorList)).BringPadToFront();
}
- TaskService.NotifyTaskChange();
}
}
@@ -87,12 +86,11 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
{
if (results != null) {
foreach (CompilerError error in results.Errors) {
- TaskService.Tasks.Add(new Task(error));
+ TaskService.Add(new Task(error));
}
if (results.Errors.Count > 0) {
WorkbenchSingleton.Workbench.GetPad(typeof(ErrorList)).BringPadToFront();
}
- TaskService.NotifyTaskChange();
}
}
diff --git a/src/Main/Base/Project/Src/Commands/CustomStringTagProvider.cs b/src/Main/Base/Project/Src/Commands/CustomStringTagProvider.cs
index cc0bbb0270..3ecaf4ddde 100644
--- a/src/Main/Base/Project/Src/Commands/CustomStringTagProvider.cs
+++ b/src/Main/Base/Project/Src/Commands/CustomStringTagProvider.cs
@@ -66,11 +66,11 @@ namespace ICSharpCode.SharpDevelop.Commands
{
switch (tag) {
case "TaskService.Warnings":
- return TaskService.Warnings.ToString();
+ return TaskService.GetCount(TaskType.Warning).ToString();
case "TaskService.Errors":
- return TaskService.Errors.ToString();
+ return TaskService.GetCount(TaskType.Error).ToString();
case "TaskService.Messages":
- return TaskService.Messages.ToString();
+ return TaskService.GetCount(TaskType.Message).ToString();
}
switch (tag.ToUpper()) {
diff --git a/src/Main/Base/Project/Src/Gui/Pads/ErrorList/ErrorList.cs b/src/Main/Base/Project/Src/Gui/Pads/ErrorList/ErrorList.cs
index 19c25b37e9..ffeaa7ef7c 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/ErrorList/ErrorList.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/ErrorList/ErrorList.cs
@@ -98,7 +98,9 @@ namespace ICSharpCode.SharpDevelop.Gui
listView.Activation = ItemActivation.OneClick;
ListViewResize(this, EventArgs.Empty);
- TaskService.TasksChanged += new EventHandler(ShowResults);
+ TaskService.Cleared += new EventHandler(TaskServiceCleared);
+ TaskService.Added += new TaskEventHandler(TaskServiceAdded);
+ TaskService.Removed += new TaskEventHandler(TaskServiceRemoved);
ProjectService.EndBuild += new EventHandler(ProjectServiceEndBuild);
@@ -156,7 +158,7 @@ namespace ICSharpCode.SharpDevelop.Gui
void ProjectServiceEndBuild(object sender, EventArgs e)
{
- if (TaskService.Tasks.Count > 0) {
+ if (TaskService.TaskCount > 0) {
WorkbenchSingleton.Workbench.WorkbenchLayout.ActivatePad(this.GetType().FullName);
}
}
@@ -203,61 +205,81 @@ namespace ICSharpCode.SharpDevelop.Gui
public CompilerResults CompilerResults = null;
- void AddTasks(ICollection col)
+ void AddTask(Task task)
{
- foreach (Task task in col) {
- int imageIndex = 0;
- switch (task.TaskType) {
- case TaskType.Warning:
- imageIndex = 1;
- if (!ShowWarnings) {
- continue;
- }
- break;
- case TaskType.Error:
- imageIndex = 0;
- if (!ShowErrors) {
- continue;
- }
- break;
- case TaskType.Message:
- imageIndex = 3;
- if (!ShowMessages) {
- continue;
- }
- break;
- default:
- continue;
- }
-
- string tmpPath;
- if (task.Project != null && task.FileName != null) {
- tmpPath = FileUtility.GetRelativePath(task.Project.Directory, task.FileName);
- } else {
- tmpPath = task.FileName;
+ int imageIndex = 0;
+ switch (task.TaskType) {
+ case TaskType.Warning:
+ imageIndex = 1;
+ if (!ShowWarnings) {
+ return;
+ }
+ break;
+ case TaskType.Error:
+ imageIndex = 0;
+ if (!ShowErrors) {
+ return;
+ }
+ break;
+ case TaskType.Message:
+ imageIndex = 3;
+ if (!ShowMessages) {
+ return;
+ }
+ break;
+ default:
+ return;
+ }
+
+ string tmpPath;
+ if (task.Project != null && task.FileName != null) {
+ tmpPath = FileUtility.GetRelativePath(task.Project.Directory, task.FileName);
+ } else {
+ tmpPath = task.FileName;
+ }
+
+ string fileName = tmpPath;
+ string path = tmpPath;
+
+ try {
+ fileName = Path.GetFileName(tmpPath);
+ } catch (Exception) {}
+
+ try {
+ path = Path.GetDirectoryName(tmpPath);
+ } catch (Exception) {}
+
+ ListViewItem item = new ListViewItem(new string[] {
+ String.Empty,
+ (task.Line + 1).ToString(),
+ FormatDescription(task.Description),
+ fileName,
+ path
+ });
+ item.ImageIndex = item.StateImageIndex = imageIndex;
+ item.Tag = task;
+ listView.Items.Add(item);
+ }
+
+
+ void TaskServiceCleared(object sender, EventArgs e)
+ {
+ listView.Items.Clear();
+ }
+
+ void TaskServiceAdded(object sender, TaskEventArgs e)
+ {
+ AddTask(e.Task);
+ }
+
+ void TaskServiceRemoved(object sender, TaskEventArgs e)
+ {
+ Task task = e.Task;
+ for (int i = 0; i < listView.Items.Count; ++i) {
+ if ((Task)listView.Items[i].Tag == task) {
+ listView.Items.RemoveAt(i);
+ break;
}
-
- string fileName = tmpPath;
- string path = tmpPath;
-
- try {
- fileName = Path.GetFileName(tmpPath);
- } catch (Exception) {}
-
- try {
- path = Path.GetDirectoryName(tmpPath);
- } catch (Exception) {}
-
- ListViewItem item = new ListViewItem(new string[] {
- String.Empty,
- (task.Line + 1).ToString(),
- FormatDescription(task.Description),
- fileName,
- path
- });
- item.ImageIndex = item.StateImageIndex = imageIndex;
- item.Tag = task;
- listView.Items.Add(item);
}
}
@@ -290,14 +312,11 @@ namespace ICSharpCode.SharpDevelop.Gui
listView.BeginUpdate();
listView.Items.Clear();
- AddTasks(TaskService.Tasks);
+ foreach (Task task in TaskService.Tasks) {
+ AddTask(task);
+ }
listView.EndUpdate();
}
-
- public void ShowResults(object sender, EventArgs e)
- {
- WorkbenchSingleton.SafeThreadCall(this, "InternalShowResults");
- }
}
}
diff --git a/src/Main/Base/Project/Src/Gui/Pads/OpenTaskView.cs b/src/Main/Base/Project/Src/Gui/Pads/OpenTaskView.cs
index 929f25e82f..6e01a90245 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/OpenTaskView.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/OpenTaskView.cs
@@ -55,7 +55,9 @@ namespace ICSharpCode.SharpDevelop.Gui
listView.Activation = ItemActivation.OneClick;
ListViewResize(this, EventArgs.Empty);
- TaskService.TasksChanged += new EventHandler(ShowResults);
+ TaskService.Cleared += new EventHandler(TaskServiceCleared);
+ TaskService.Added += new TaskEventHandler(TaskServiceAdded);
+ TaskService.Removed += new TaskEventHandler(TaskServiceRemoved);
ProjectService.EndBuild += new EventHandler(SelectTaskView);
@@ -109,7 +111,7 @@ namespace ICSharpCode.SharpDevelop.Gui
void SelectTaskView(object sender, EventArgs e)
{
- if (TaskService.Tasks.Count > 0) {
+ if (TaskService.TaskCount > 0) {
WorkbenchSingleton.SafeThreadCall(this, "SelectTaskView2");
}
}
@@ -117,13 +119,6 @@ namespace ICSharpCode.SharpDevelop.Gui
void SelectTaskView2()
{
WorkbenchSingleton.Workbench.WorkbenchLayout.ActivatePad(this.GetType().FullName);
-// if (WorkbenchSingleton.Workbench.WorkbenchLayout.IsVisible(this)) {
-// } else {
-// if ((bool)PropertyService.Get("SharpDevelop.ShowTaskListAfterBuild", true)) {
-// WorkbenchSingleton.Workbench.WorkbenchLayout.ShowPad(this);
-// WorkbenchSingleton.Workbench.WorkbenchLayout.ActivatePad(this);
-// }
-// }
}
void ListViewItemActivate(object sender, EventArgs e)
@@ -168,49 +163,65 @@ namespace ICSharpCode.SharpDevelop.Gui
public CompilerResults CompilerResults = null;
- void AddTasks(ICollection col)
+ void AddTask(Task task)
{
- foreach (Task task in col) {
- int imageIndex = 0;
- switch (task.TaskType) {
- case TaskType.Comment:
- imageIndex = 3;
- break;
- default:
- continue;
- }
-
- string tmpPath;
- if (task.Project != null && task.FileName != null) {
- tmpPath = FileUtility.GetRelativePath(task.Project.Directory, task.FileName);
- } else {
- tmpPath = task.FileName;
+ int imageIndex = 3;
+
+ string tmpPath;
+ if (task.Project != null && task.FileName != null) {
+ tmpPath = FileUtility.GetRelativePath(task.Project.Directory, task.FileName);
+ } else {
+ tmpPath = task.FileName;
+ }
+
+ string fileName = tmpPath;
+ string path = tmpPath;
+
+ try {
+ fileName = Path.GetFileName(tmpPath);
+ } catch (Exception) {}
+
+ try {
+ path = Path.GetDirectoryName(tmpPath);
+ } catch (Exception) {}
+
+ ListViewItem item = new ListViewItem(new string[] {
+ String.Empty,
+ (task.Line + 1).ToString(),
+ FormatDescription(task.Description),
+ fileName,
+ path
+ });
+ item.ImageIndex = item.StateImageIndex = imageIndex;
+ item.Tag = task;
+ listView.Items.Add(item);
+ }
+
+
+ void TaskServiceCleared(object sender, EventArgs e)
+ {
+ listView.Items.Clear();
+ }
+
+ void TaskServiceAdded(object sender, TaskEventArgs e)
+ {
+ if (e.Task.TaskType == TaskType.Comment) {
+ AddTask(e.Task);
+ }
+ }
+
+ void TaskServiceRemoved(object sender, TaskEventArgs e)
+ {
+ Task task = e.Task;
+ for (int i = 0; i < listView.Items.Count; ++i) {
+ if ((Task)listView.Items[i].Tag == task) {
+ listView.Items.RemoveAt(i);
+ break;
}
-
- string fileName = tmpPath;
- string path = tmpPath;
-
- try {
- fileName = Path.GetFileName(tmpPath);
- } catch (Exception) {}
-
- try {
- path = Path.GetDirectoryName(tmpPath);
- } catch (Exception) {}
-
- ListViewItem item = new ListViewItem(new string[] {
- String.Empty,
- (task.Line + 1).ToString(),
- FormatDescription(task.Description),
- fileName,
- path
- });
- item.ImageIndex = item.StateImageIndex = imageIndex;
- item.Tag = task;
- listView.Items.Add(item);
}
}
+
///
/// Removes new lines, carriage returns and tab characters from
/// the list view task description and replaces them with a space.
@@ -234,8 +245,9 @@ namespace ICSharpCode.SharpDevelop.Gui
listView.Items.Clear();
- AddTasks(TaskService.Tasks);
- AddTasks(TaskService.CommentTasks);
+ foreach (Task task in TaskService.CommentTasks) {
+ AddTask(task);
+ }
listView.EndUpdate();
}
diff --git a/src/Main/Base/Project/Src/Services/ParserService/CaseSensitiveProjectContent.cs b/src/Main/Base/Project/Src/Services/ParserService/CaseSensitiveProjectContent.cs
index 0735206792..f95cebf20e 100644
--- a/src/Main/Base/Project/Src/Services/ParserService/CaseSensitiveProjectContent.cs
+++ b/src/Main/Base/Project/Src/Services/ParserService/CaseSensitiveProjectContent.cs
@@ -106,14 +106,9 @@ namespace ICSharpCode.Core
public void UpdateCompilationUnit(ICompilationUnit oldUnit, ICompilationUnit parserOutput, string fileName, bool updateCommentTags)
{
+
if (updateCommentTags) {
- TaskService.RemoveCommentTasks(fileName);
- if (parserOutput.TagComments.Count > 0) {
- foreach (Tag tag in parserOutput.TagComments) {
- TaskService.CommentTasks.Add(new Task(fileName, tag.Key + tag.CommentString, tag.Region.BeginColumn, tag.Region.BeginLine, TaskType.Comment));
- }
- TaskService.NotifyTaskChange();
- }
+ TaskService.UpdateCommentTags(fileName, parserOutput.TagComments);
}
if (oldUnit != null) {
@@ -462,7 +457,7 @@ namespace ICSharpCode.Core
return false;
}
- // TODO: check inner classes for protected members too
+ // TODO: check inner classes for protected members too.
// TODO: look for FullyQualifiedName == FullyQualifiedName. Must be replaced by a function wich pays attention to the case.
// Look at NRefactoryResolver.IsSameName. Also pay attention if you can put this Function in IClass, and if you have to
// compare the names instead of the FullyQualifiedNames
diff --git a/src/Main/Base/Project/Src/Services/Tasks/Task.cs b/src/Main/Base/Project/Src/Services/Tasks/Task.cs
index 8db2648178..c08b71e33f 100644
--- a/src/Main/Base/Project/Src/Services/Tasks/Task.cs
+++ b/src/Main/Base/Project/Src/Services/Tasks/Task.cs
@@ -18,6 +18,7 @@ namespace ICSharpCode.Core
Error,
Warning,
Message,
+
Comment,
}
diff --git a/src/Main/Base/Project/Src/Services/Tasks/TaskEventHandler.cs b/src/Main/Base/Project/Src/Services/Tasks/TaskEventHandler.cs
new file mode 100644
index 0000000000..9fae84eac3
--- /dev/null
+++ b/src/Main/Base/Project/Src/Services/Tasks/TaskEventHandler.cs
@@ -0,0 +1,22 @@
+using System;
+
+namespace ICSharpCode.Core
+{
+ public delegate void TaskEventHandler(object sender, TaskEventArgs e);
+
+ public class TaskEventArgs : EventArgs
+ {
+ Task task;
+
+ public Task Task {
+ get {
+ return task;
+ }
+ }
+
+ public TaskEventArgs(Task task)
+ {
+ this.task = task;
+ }
+ }
+}
diff --git a/src/Main/Base/Project/Src/Services/Tasks/TaskService.cs b/src/Main/Base/Project/Src/Services/Tasks/TaskService.cs
index 1d2954116c..bff54db538 100644
--- a/src/Main/Base/Project/Src/Services/Tasks/TaskService.cs
+++ b/src/Main/Base/Project/Src/Services/Tasks/TaskService.cs
@@ -7,18 +7,17 @@
using System;
using System.IO;
-using System.Collections;
+using System.Collections.Generic;
-using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project;
+using ICSharpCode.SharpDevelop.Dom;
namespace ICSharpCode.Core
{
public class TaskService
{
- static ArrayList tasks = new ArrayList();
- static ArrayList commentTasks = new ArrayList();
+ static List tasks = new List();
static MessageViewCategory buildMessageViewCategory = new MessageViewCategory("Build", "${res:MainWindow.Windows.OutputWindow.BuildCategory}");
public static MessageViewCategory BuildMessageViewCategory {
@@ -27,66 +26,66 @@ namespace ICSharpCode.Core
}
}
- public static ArrayList Tasks {
- get {
- return tasks;
+ public class TaskEnumerator {
+ public IEnumerator GetEnumerator()
+ {
+ foreach (Task task in tasks) {
+ if (task.TaskType != TaskType.Comment) {
+ yield return task;
+ }
+ }
}
}
- public static ArrayList CommentTasks {
+ public static int TaskCount {
get {
- return commentTasks;
+ return tasks.Count - GetCount(TaskType.Comment);
}
}
-
- static int warnings = 0;
- static int errors = 0;
- static int messages = 0;
- static int comments = 0;
-
- public static int Warnings {
+ public static TaskEnumerator Tasks {
get {
- return warnings;
+ return new TaskEnumerator();
}
}
- public static int Errors {
- get {
- return errors;
+ public class CommentTaskEnumerator {
+ public IEnumerator GetEnumerator()
+ {
+ foreach (Task task in tasks) {
+ if (task.TaskType == TaskType.Comment) {
+ yield return task;
+ }
+ }
}
}
-
- public static int Messages {
+ public static CommentTaskEnumerator CommentTasks {
get {
- return messages;
+ return new CommentTaskEnumerator();
}
}
- public static int Comments {
- get {
- return comments;
+ static Dictionary taskCount = new Dictionary();
+
+ public static int GetCount(TaskType type)
+ {
+ if (!taskCount.ContainsKey(type)) {
+ return 0;
}
+ return taskCount[type];
}
public static bool SomethingWentWrong {
get {
- return errors + warnings > 0;
+ return GetCount(TaskType.Error) + GetCount(TaskType.Warning) > 0;
}
}
public static bool HasCriticalErrors(bool treatWarningsAsErrors)
{
if (treatWarningsAsErrors) {
- return errors + warnings > 0;
+ return SomethingWentWrong;
} else {
- return errors > 0;
- }
- }
-
- static void OnTasksChanged(EventArgs e)
- {
- if (TasksChanged != null) {
- TasksChanged(null, e);
+ return GetCount(TaskType.Error) > 0;
}
}
@@ -100,93 +99,134 @@ namespace ICSharpCode.Core
static void ProjectServiceSolutionClosed(object sender, EventArgs e)
{
- tasks.Clear();
- commentTasks.Clear();
- NotifyTaskChange();
+ Clear();
}
static void CheckFileRemove(object sender, FileEventArgs e)
{
- bool somethingChanged = false;
for (int i = 0; i < tasks.Count; ++i) {
- Task curTask = (Task)tasks[i];
- bool doRemoveTask = false;
- try {
- doRemoveTask = Path.GetFullPath(curTask.FileName) == Path.GetFullPath(e.FileName);
- } catch {
- doRemoveTask = curTask.FileName == e.FileName;
- }
- if (doRemoveTask) {
- tasks.RemoveAt(i);
+ Task curTask = tasks[i];
+ if (FileUtility.IsEqualFile(curTask.FileName, e.FileName)) {
+ Remove(curTask);
--i;
- somethingChanged = true;
}
}
-
- if (somethingChanged) {
- NotifyTaskChange();
- }
}
static void CheckFileRename(object sender, FileRenameEventArgs e)
{
- bool somethingChanged = false;
- foreach (Task curTask in tasks) {
- if (Path.GetFullPath(curTask.FileName) == Path.GetFullPath(e.SourceFile)) {
+ for (int i = 0; i < tasks.Count; ++i) {
+ Task curTask = tasks[i];
+ if (FileUtility.IsEqualFile(curTask.FileName, e.SourceFile)) {
+ Remove(curTask);
curTask.FileName = Path.GetFullPath(e.TargetFile);
- somethingChanged = true;
+ Add(curTask);
+ --i;
+ }
+ }
+ }
+
+ public static void Clear()
+ {
+ taskCount.Clear();
+ tasks.Clear();
+ OnCleared(EventArgs.Empty);
+ }
+
+ public static void Add(Task task)
+ {
+ tasks.Add(task);
+ if (!taskCount.ContainsKey(task.TaskType)) {
+ taskCount[task.TaskType] = 1;
+ } else {
+ taskCount[task.TaskType]++;
+ }
+ OnAdded(new TaskEventArgs(task));
+ }
+
+ public static void Remove(Task task)
+ {
+ if (tasks.Contains(task)) {
+ tasks.Remove(task);
+ taskCount[task.TaskType]--;
+ OnRemoved(new TaskEventArgs(task));
+ }
+ }
+
+ public static void UpdateCommentTags(string fileName, List tagComments)
+ {
+ if (fileName == null || tagComments == null) {
+ return;
+ }
+
+ List newTasks = new List();
+ foreach (Tag tag in tagComments) {
+ newTasks.Add(new Task(fileName,
+ tag.Key + tag.CommentString,
+ tag.Region.BeginColumn,
+ tag.Region.BeginLine,
+ TaskType.Comment));
+ }
+ List oldTasks = new List();
+
+ foreach (Task task in CommentTasks) {
+ if (FileUtility.IsEqualFile(task.FileName, fileName)) {
+ oldTasks.Add(task);
}
}
- foreach (Task curTask in commentTasks) {
- if (Path.GetFullPath(curTask.FileName) == Path.GetFullPath(e.SourceFile)) {
- curTask.FileName = Path.GetFullPath(e.TargetFile);
- somethingChanged = true;
+ for (int i = 0; i < newTasks.Count; ++i) {
+ for (int j = 0; j < oldTasks.Count; ++j) {
+ if (newTasks[i].Line == oldTasks[j].Line &&
+ newTasks[i].Column == oldTasks[j].Column &&
+ newTasks[i].Description == oldTasks[j].Description) {
+ newTasks[i] = null;
+ oldTasks[j] = null;
+ ++i;
+ if (i >= newTasks.Count) {
+ break;
+ }
+ }
}
}
+ foreach (Task task in newTasks) {
+ if (task != null) {
+ Add(task);
+ }
+ }
- if (somethingChanged) {
- NotifyTaskChange();
+ foreach (Task task in oldTasks) {
+ if (task != null) {
+ Remove(task);
+ }
}
}
-
- public static void RemoveCommentTasks(string fileName)
+
+ static void OnCleared(EventArgs e)
{
- bool removed = false;
- for (int i = 0; i < commentTasks.Count; ++i) {
- Task task = (Task)commentTasks[i];
- if (Path.GetFullPath(task.FileName) == Path.GetFullPath(fileName)) {
- commentTasks.RemoveAt(i);
- removed = true;
- --i;
- }
+ if (Cleared != null) {
+ Cleared(null, e);
}
- if (removed) {
- NotifyTaskChange();
+ }
+
+ static void OnAdded(TaskEventArgs e)
+ {
+ if (Added != null) {
+ Added(null, e);
}
}
- public static void NotifyTaskChange()
+ static void OnRemoved(TaskEventArgs e)
{
- warnings = errors = comments = 0;
- foreach (Task task in tasks) {
- switch (task.TaskType) {
- case TaskType.Warning:
- ++warnings;
- break;
- case TaskType.Error:
- ++errors;
- break;
- default:
- ++comments;
- break;
- }
+ if (Removed != null) {
+ Removed(null, e);
}
- OnTasksChanged(null);
}
- public static event EventHandler TasksChanged;
+ public static event TaskEventHandler Added;
+ public static event TaskEventHandler Removed;
+ public static event EventHandler Cleared;
}
}
diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/ErrorDrawer.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/ErrorDrawer.cs
index 3d98424f50..fa312a20cc 100644
--- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/ErrorDrawer.cs
+++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/ErrorDrawer.cs
@@ -42,8 +42,8 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
{
this.textEditor = textEditor;
-
- TaskService.TasksChanged += new EventHandler(SetErrors);
+// TODO: Tasks Changed!!!
+// TaskService.TasksChanged += new EventHandler(SetErrors);
textEditor.FileNameChanged += new EventHandler(SetErrors);
}
diff --git a/src/SharpDevelop.sln b/src/SharpDevelop.sln
index 80976231a0..c65e35a0d0 100644
--- a/src/SharpDevelop.sln
+++ b/src/SharpDevelop.sln
@@ -1,31 +1,5 @@
Microsoft Visual Studio Solution File, Format Version 9.00
# SharpDevelop 2.0.0.1
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{5A3EBEBA-0560-41C1-966B-23F7D03A5486}"
- ProjectSection(SolutionItems) = postProject
- EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{9421EDF4-9769-4BE9-B5A6-C87DE221D73C}"
- ProjectSection(SolutionItems) = postProject
- EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.extensions.dll", "Tools\NUnit\src\NUnitFramework\extensions\nunit.extensions.dll.csproj", "{98B10E98-003C-45A0-9587-119142E39986}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor", "Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj", "{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinFormsUI", "Libraries\DockPanel_Src\WinFormsUI\WinFormsUI.csproj", "{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.core.dll", "Tools\NUnit\src\NUnitFramework\core\nunit.core.dll.csproj", "{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.framework.dll", "Tools\NUnit\src\NUnitFramework\framework\nunit.framework.dll.csproj", "{83DD7E12-A705-4DBA-9D71-09C8973D9382}"
-EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{14A277EE-7DF1-4529-B639-7D1EF334C1C5}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
@@ -60,6 +34,32 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Backends", "Backends", "{FE
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{9421EDF4-9769-4BE9-B5A6-C87DE221D73C}"
+ ProjectSection(SolutionItems) = postProject
+ EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.extensions.dll", "Tools\NUnit\src\NUnitFramework\extensions\nunit.extensions.dll.csproj", "{98B10E98-003C-45A0-9587-119142E39986}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor", "Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj", "{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinFormsUI", "Libraries\DockPanel_Src\WinFormsUI\WinFormsUI.csproj", "{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.core.dll", "Tools\NUnit\src\NUnitFramework\core\nunit.core.dll.csproj", "{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.framework.dll", "Tools\NUnit\src\NUnitFramework\framework\nunit.framework.dll.csproj", "{83DD7E12-A705-4DBA-9D71-09C8973D9382}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{5A3EBEBA-0560-41C1-966B-23F7D03A5486}"
+ ProjectSection(SolutionItems) = postProject
+ EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -133,15 +133,6 @@ Global
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
- {2748AD25-9C63-4E12-877B-4DCE96FBED54} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
- {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
- {1152B71B-3C05-4598-B20D-823B5D40559E} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
- {83DD7E12-A705-4DBA-9D71-09C8973D9382} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
- {EBD43A7F-AFCA-4281-BB53-5CDD91F966A3} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
- {D3C782BA-178E-4235-A3BA-8C11DEBB6BEE} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
- {2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
- {3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
- {98B10E98-003C-45A0-9587-119142E39986} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
@@ -154,5 +145,14 @@ Global
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{CBC6C247-747B-4908-B09A-4D2E0F640B6B} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
+ {83DD7E12-A705-4DBA-9D71-09C8973D9382} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
+ {EBD43A7F-AFCA-4281-BB53-5CDD91F966A3} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
+ {D3C782BA-178E-4235-A3BA-8C11DEBB6BEE} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
+ {2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
+ {3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
+ {98B10E98-003C-45A0-9587-119142E39986} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
+ {2748AD25-9C63-4E12-877B-4DCE96FBED54} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {1152B71B-3C05-4598-B20D-823B5D40559E} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
EndGlobalSection
EndGlobal