Browse Source

overworked task subsystem a bit.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@21 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Mike Krüger 21 years ago
parent
commit
77802490a8
  1. 10
      src/AddIns/Misc/NUnitPad/Project/Src/Gui/TestTreeView.cs
  2. 2
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaMouseHandler.cs
  3. 1
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  4. 8
      src/Main/Base/Project/Src/Commands/BuildCommands.cs
  5. 6
      src/Main/Base/Project/Src/Commands/CustomStringTagProvider.cs
  6. 141
      src/Main/Base/Project/Src/Gui/Pads/ErrorList/ErrorList.cs
  7. 110
      src/Main/Base/Project/Src/Gui/Pads/OpenTaskView.cs
  8. 11
      src/Main/Base/Project/Src/Services/ParserService/CaseSensitiveProjectContent.cs
  9. 1
      src/Main/Base/Project/Src/Services/Tasks/Task.cs
  10. 22
      src/Main/Base/Project/Src/Services/Tasks/TaskEventHandler.cs
  11. 224
      src/Main/Base/Project/Src/Services/Tasks/TaskService.cs
  12. 4
      src/Main/Base/Project/Src/TextEditor/Gui/Editor/ErrorDrawer.cs
  13. 70
      src/SharpDevelop.sln

10
src/AddIns/Misc/NUnitPad/Project/Src/Gui/TestTreeView.cs

@ -198,7 +198,7 @@ namespace ICSharpCode.NUnitPad
testRunnerCategory.ClearText(); testRunnerCategory.ClearText();
} }
TaskService.Tasks.Clear(); TaskService.Clear();
TreeNode selectedNode = treeView.SelectedNode; TreeNode selectedNode = treeView.SelectedNode;
@ -221,7 +221,7 @@ namespace ICSharpCode.NUnitPad
} }
// If any tasks bring task view to front. // If any tasks bring task view to front.
if (TaskService.Tasks.Count > 0) { if (TaskService.TaskCount > 0) {
IWorkbench Workbench = ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.Workbench; IWorkbench Workbench = ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.Workbench;
PadDescriptor padDescriptor = Workbench.GetPad(typeof(OpenTaskView)); PadDescriptor padDescriptor = Workbench.GetPad(typeof(OpenTaskView));
@ -339,8 +339,7 @@ namespace ICSharpCode.NUnitPad
LineRef.Line, LineRef.Line,
TaskType.Error); TaskType.Error);
TaskService.Tasks.Add(Task); TaskService.Add(Task);
TaskService.NotifyTaskChange();
} }
} else if (!result.Executed) { } else if (!result.Executed) {
@ -370,8 +369,7 @@ namespace ICSharpCode.NUnitPad
LineRef.Line, LineRef.Line,
TaskType.Warning); TaskType.Warning);
TaskService.Tasks.Add(Task); TaskService.Add(Task);
TaskService.NotifyTaskChange();
} }
} }

2
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaMouseHandler.cs

@ -185,7 +185,7 @@ namespace ICSharpCode.TextEditor
return; return;
} }
textArea.Caret.Position = realmousepos; textArea.Caret.Position = realmousepos;
if (minSelection != nilPoint) { if (minSelection != nilPoint && textArea.SelectionManager.SelectionCollection.Count > 0) {
ISelection selection = textArea.SelectionManager.SelectionCollection[0]; ISelection selection = textArea.SelectionManager.SelectionCollection[0];
Point min = textArea.SelectionManager.GreaterEqPos(minSelection, maxSelection) ? maxSelection : minSelection; Point min = textArea.SelectionManager.GreaterEqPos(minSelection, maxSelection) ? maxSelection : minSelection;
Point max = textArea.SelectionManager.GreaterEqPos(minSelection, maxSelection) ? minSelection : maxSelection; Point max = textArea.SelectionManager.GreaterEqPos(minSelection, maxSelection) ? minSelection : maxSelection;

1
src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj

@ -617,6 +617,7 @@
<Compile Include="Src\TextEditor\Actions.cs" /> <Compile Include="Src\TextEditor\Actions.cs" />
<Compile Include="Src\TextEditor\CharacterEncodings.cs" /> <Compile Include="Src\TextEditor\CharacterEncodings.cs" />
<Compile Include="Src\TextEditor\XmlFormattingStrategy.cs" /> <Compile Include="Src\TextEditor\XmlFormattingStrategy.cs" />
<Compile Include="Src\Services\Tasks\TaskEventHandler.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\Libraries\DockPanel_Src\WinFormsUI\WinFormsUI.csproj"> <ProjectReference Include="..\..\..\Libraries\DockPanel_Src\WinFormsUI\WinFormsUI.csproj">

8
src/Main/Base/Project/Src/Commands/BuildCommands.cs

@ -20,19 +20,18 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
public static void ClearTasks() public static void ClearTasks()
{ {
TaskService.BuildMessageViewCategory.ClearText(); TaskService.BuildMessageViewCategory.ClearText();
TaskService.Tasks.Clear(); TaskService.Clear();
} }
public static void ShowResults(CompilerResults results) public static void ShowResults(CompilerResults results)
{ {
if (results != null) { if (results != null) {
foreach (CompilerError error in results.Errors) { foreach (CompilerError error in results.Errors) {
TaskService.Tasks.Add(new Task(error)); TaskService.Add(new Task(error));
} }
if (results.Errors.Count > 0) { if (results.Errors.Count > 0) {
WorkbenchSingleton.Workbench.GetPad(typeof(ErrorList)).BringPadToFront(); WorkbenchSingleton.Workbench.GetPad(typeof(ErrorList)).BringPadToFront();
} }
TaskService.NotifyTaskChange();
} }
} }
@ -87,12 +86,11 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
{ {
if (results != null) { if (results != null) {
foreach (CompilerError error in results.Errors) { foreach (CompilerError error in results.Errors) {
TaskService.Tasks.Add(new Task(error)); TaskService.Add(new Task(error));
} }
if (results.Errors.Count > 0) { if (results.Errors.Count > 0) {
WorkbenchSingleton.Workbench.GetPad(typeof(ErrorList)).BringPadToFront(); WorkbenchSingleton.Workbench.GetPad(typeof(ErrorList)).BringPadToFront();
} }
TaskService.NotifyTaskChange();
} }
} }

6
src/Main/Base/Project/Src/Commands/CustomStringTagProvider.cs

@ -66,11 +66,11 @@ namespace ICSharpCode.SharpDevelop.Commands
{ {
switch (tag) { switch (tag) {
case "TaskService.Warnings": case "TaskService.Warnings":
return TaskService.Warnings.ToString(); return TaskService.GetCount(TaskType.Warning).ToString();
case "TaskService.Errors": case "TaskService.Errors":
return TaskService.Errors.ToString(); return TaskService.GetCount(TaskType.Error).ToString();
case "TaskService.Messages": case "TaskService.Messages":
return TaskService.Messages.ToString(); return TaskService.GetCount(TaskType.Message).ToString();
} }
switch (tag.ToUpper()) { switch (tag.ToUpper()) {

141
src/Main/Base/Project/Src/Gui/Pads/ErrorList/ErrorList.cs

@ -98,7 +98,9 @@ namespace ICSharpCode.SharpDevelop.Gui
listView.Activation = ItemActivation.OneClick; listView.Activation = ItemActivation.OneClick;
ListViewResize(this, EventArgs.Empty); 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); ProjectService.EndBuild += new EventHandler(ProjectServiceEndBuild);
@ -156,7 +158,7 @@ namespace ICSharpCode.SharpDevelop.Gui
void ProjectServiceEndBuild(object sender, EventArgs e) void ProjectServiceEndBuild(object sender, EventArgs e)
{ {
if (TaskService.Tasks.Count > 0) { if (TaskService.TaskCount > 0) {
WorkbenchSingleton.Workbench.WorkbenchLayout.ActivatePad(this.GetType().FullName); WorkbenchSingleton.Workbench.WorkbenchLayout.ActivatePad(this.GetType().FullName);
} }
} }
@ -203,61 +205,81 @@ namespace ICSharpCode.SharpDevelop.Gui
public CompilerResults CompilerResults = null; public CompilerResults CompilerResults = null;
void AddTasks(ICollection col) void AddTask(Task task)
{ {
foreach (Task task in col) { int imageIndex = 0;
int imageIndex = 0; switch (task.TaskType) {
switch (task.TaskType) { case TaskType.Warning:
case TaskType.Warning: imageIndex = 1;
imageIndex = 1; if (!ShowWarnings) {
if (!ShowWarnings) { return;
continue; }
} break;
break; case TaskType.Error:
case TaskType.Error: imageIndex = 0;
imageIndex = 0; if (!ShowErrors) {
if (!ShowErrors) { return;
continue; }
} break;
break; case TaskType.Message:
case TaskType.Message: imageIndex = 3;
imageIndex = 3; if (!ShowMessages) {
if (!ShowMessages) { return;
continue; }
} break;
break; default:
default: return;
continue; }
}
string tmpPath;
string tmpPath; if (task.Project != null && task.FileName != null) {
if (task.Project != null && task.FileName != null) { tmpPath = FileUtility.GetRelativePath(task.Project.Directory, task.FileName);
tmpPath = FileUtility.GetRelativePath(task.Project.Directory, task.FileName); } else {
} else { tmpPath = task.FileName;
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.BeginUpdate();
listView.Items.Clear(); listView.Items.Clear();
AddTasks(TaskService.Tasks); foreach (Task task in TaskService.Tasks) {
AddTask(task);
}
listView.EndUpdate(); listView.EndUpdate();
} }
public void ShowResults(object sender, EventArgs e)
{
WorkbenchSingleton.SafeThreadCall(this, "InternalShowResults");
}
} }
} }

110
src/Main/Base/Project/Src/Gui/Pads/OpenTaskView.cs

@ -55,7 +55,9 @@ namespace ICSharpCode.SharpDevelop.Gui
listView.Activation = ItemActivation.OneClick; listView.Activation = ItemActivation.OneClick;
ListViewResize(this, EventArgs.Empty); 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); ProjectService.EndBuild += new EventHandler(SelectTaskView);
@ -109,7 +111,7 @@ namespace ICSharpCode.SharpDevelop.Gui
void SelectTaskView(object sender, EventArgs e) void SelectTaskView(object sender, EventArgs e)
{ {
if (TaskService.Tasks.Count > 0) { if (TaskService.TaskCount > 0) {
WorkbenchSingleton.SafeThreadCall(this, "SelectTaskView2"); WorkbenchSingleton.SafeThreadCall(this, "SelectTaskView2");
} }
} }
@ -117,13 +119,6 @@ namespace ICSharpCode.SharpDevelop.Gui
void SelectTaskView2() void SelectTaskView2()
{ {
WorkbenchSingleton.Workbench.WorkbenchLayout.ActivatePad(this.GetType().FullName); 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) void ListViewItemActivate(object sender, EventArgs e)
@ -168,49 +163,65 @@ namespace ICSharpCode.SharpDevelop.Gui
public CompilerResults CompilerResults = null; public CompilerResults CompilerResults = null;
void AddTasks(ICollection col) void AddTask(Task task)
{ {
foreach (Task task in col) { int imageIndex = 3;
int imageIndex = 0;
switch (task.TaskType) { string tmpPath;
case TaskType.Comment: if (task.Project != null && task.FileName != null) {
imageIndex = 3; tmpPath = FileUtility.GetRelativePath(task.Project.Directory, task.FileName);
break; } else {
default: tmpPath = task.FileName;
continue; }
}
string fileName = tmpPath;
string tmpPath; string path = tmpPath;
if (task.Project != null && task.FileName != null) {
tmpPath = FileUtility.GetRelativePath(task.Project.Directory, task.FileName); try {
} else { fileName = Path.GetFileName(tmpPath);
tmpPath = task.FileName; } 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);
} }
} }
/// <summary> /// <summary>
/// Removes new lines, carriage returns and tab characters from /// Removes new lines, carriage returns and tab characters from
/// the list view task description and replaces them with a space. /// the list view task description and replaces them with a space.
@ -234,8 +245,9 @@ namespace ICSharpCode.SharpDevelop.Gui
listView.Items.Clear(); listView.Items.Clear();
AddTasks(TaskService.Tasks); foreach (Task task in TaskService.CommentTasks) {
AddTasks(TaskService.CommentTasks); AddTask(task);
}
listView.EndUpdate(); listView.EndUpdate();
} }

11
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) public void UpdateCompilationUnit(ICompilationUnit oldUnit, ICompilationUnit parserOutput, string fileName, bool updateCommentTags)
{ {
if (updateCommentTags) { if (updateCommentTags) {
TaskService.RemoveCommentTasks(fileName); TaskService.UpdateCommentTags(fileName, parserOutput.TagComments);
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();
}
} }
if (oldUnit != null) { if (oldUnit != null) {
@ -462,7 +457,7 @@ namespace ICSharpCode.Core
return false; 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. // 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 // 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 // compare the names instead of the FullyQualifiedNames

1
src/Main/Base/Project/Src/Services/Tasks/Task.cs

@ -18,6 +18,7 @@ namespace ICSharpCode.Core
Error, Error,
Warning, Warning,
Message, Message,
Comment, Comment,
} }

22
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;
}
}
}

224
src/Main/Base/Project/Src/Services/Tasks/TaskService.cs

@ -7,18 +7,17 @@
using System; using System;
using System.IO; using System.IO;
using System.Collections; using System.Collections.Generic;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project; using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Dom;
namespace ICSharpCode.Core namespace ICSharpCode.Core
{ {
public class TaskService public class TaskService
{ {
static ArrayList tasks = new ArrayList(); static List<Task> tasks = new List<Task>();
static ArrayList commentTasks = new ArrayList();
static MessageViewCategory buildMessageViewCategory = new MessageViewCategory("Build", "${res:MainWindow.Windows.OutputWindow.BuildCategory}"); static MessageViewCategory buildMessageViewCategory = new MessageViewCategory("Build", "${res:MainWindow.Windows.OutputWindow.BuildCategory}");
public static MessageViewCategory BuildMessageViewCategory { public static MessageViewCategory BuildMessageViewCategory {
@ -27,66 +26,66 @@ namespace ICSharpCode.Core
} }
} }
public static ArrayList Tasks { public class TaskEnumerator {
get { public IEnumerator<Task> GetEnumerator()
return tasks; {
foreach (Task task in tasks) {
if (task.TaskType != TaskType.Comment) {
yield return task;
}
}
} }
} }
public static ArrayList CommentTasks { public static int TaskCount {
get { get {
return commentTasks; return tasks.Count - GetCount(TaskType.Comment);
} }
} }
public static TaskEnumerator Tasks {
static int warnings = 0;
static int errors = 0;
static int messages = 0;
static int comments = 0;
public static int Warnings {
get { get {
return warnings; return new TaskEnumerator();
} }
} }
public static int Errors { public class CommentTaskEnumerator {
get { public IEnumerator<Task> GetEnumerator()
return errors; {
foreach (Task task in tasks) {
if (task.TaskType == TaskType.Comment) {
yield return task;
}
}
} }
} }
public static CommentTaskEnumerator CommentTasks {
public static int Messages {
get { get {
return messages; return new CommentTaskEnumerator();
} }
} }
public static int Comments { static Dictionary<TaskType, int> taskCount = new Dictionary<TaskType, int>();
get {
return comments; public static int GetCount(TaskType type)
{
if (!taskCount.ContainsKey(type)) {
return 0;
} }
return taskCount[type];
} }
public static bool SomethingWentWrong { public static bool SomethingWentWrong {
get { get {
return errors + warnings > 0; return GetCount(TaskType.Error) + GetCount(TaskType.Warning) > 0;
} }
} }
public static bool HasCriticalErrors(bool treatWarningsAsErrors) public static bool HasCriticalErrors(bool treatWarningsAsErrors)
{ {
if (treatWarningsAsErrors) { if (treatWarningsAsErrors) {
return errors + warnings > 0; return SomethingWentWrong;
} else { } else {
return errors > 0; return GetCount(TaskType.Error) > 0;
}
}
static void OnTasksChanged(EventArgs e)
{
if (TasksChanged != null) {
TasksChanged(null, e);
} }
} }
@ -100,93 +99,134 @@ namespace ICSharpCode.Core
static void ProjectServiceSolutionClosed(object sender, EventArgs e) static void ProjectServiceSolutionClosed(object sender, EventArgs e)
{ {
tasks.Clear(); Clear();
commentTasks.Clear();
NotifyTaskChange();
} }
static void CheckFileRemove(object sender, FileEventArgs e) static void CheckFileRemove(object sender, FileEventArgs e)
{ {
bool somethingChanged = false;
for (int i = 0; i < tasks.Count; ++i) { for (int i = 0; i < tasks.Count; ++i) {
Task curTask = (Task)tasks[i]; Task curTask = tasks[i];
bool doRemoveTask = false; if (FileUtility.IsEqualFile(curTask.FileName, e.FileName)) {
try { Remove(curTask);
doRemoveTask = Path.GetFullPath(curTask.FileName) == Path.GetFullPath(e.FileName);
} catch {
doRemoveTask = curTask.FileName == e.FileName;
}
if (doRemoveTask) {
tasks.RemoveAt(i);
--i; --i;
somethingChanged = true;
} }
} }
if (somethingChanged) {
NotifyTaskChange();
}
} }
static void CheckFileRename(object sender, FileRenameEventArgs e) static void CheckFileRename(object sender, FileRenameEventArgs e)
{ {
bool somethingChanged = false; for (int i = 0; i < tasks.Count; ++i) {
foreach (Task curTask in tasks) { Task curTask = tasks[i];
if (Path.GetFullPath(curTask.FileName) == Path.GetFullPath(e.SourceFile)) { if (FileUtility.IsEqualFile(curTask.FileName, e.SourceFile)) {
Remove(curTask);
curTask.FileName = Path.GetFullPath(e.TargetFile); 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<Tag> tagComments)
{
if (fileName == null || tagComments == null) {
return;
}
List<Task> newTasks = new List<Task>();
foreach (Tag tag in tagComments) {
newTasks.Add(new Task(fileName,
tag.Key + tag.CommentString,
tag.Region.BeginColumn,
tag.Region.BeginLine,
TaskType.Comment));
}
List<Task> oldTasks = new List<Task>();
foreach (Task task in CommentTasks) {
if (FileUtility.IsEqualFile(task.FileName, fileName)) {
oldTasks.Add(task);
} }
} }
foreach (Task curTask in commentTasks) { for (int i = 0; i < newTasks.Count; ++i) {
if (Path.GetFullPath(curTask.FileName) == Path.GetFullPath(e.SourceFile)) { for (int j = 0; j < oldTasks.Count; ++j) {
curTask.FileName = Path.GetFullPath(e.TargetFile); if (newTasks[i].Line == oldTasks[j].Line &&
somethingChanged = true; 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) { foreach (Task task in oldTasks) {
NotifyTaskChange(); if (task != null) {
Remove(task);
}
} }
} }
public static void RemoveCommentTasks(string fileName) static void OnCleared(EventArgs e)
{ {
bool removed = false; if (Cleared != null) {
for (int i = 0; i < commentTasks.Count; ++i) { Cleared(null, e);
Task task = (Task)commentTasks[i];
if (Path.GetFullPath(task.FileName) == Path.GetFullPath(fileName)) {
commentTasks.RemoveAt(i);
removed = true;
--i;
}
} }
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; if (Removed != null) {
foreach (Task task in tasks) { Removed(null, e);
switch (task.TaskType) {
case TaskType.Warning:
++warnings;
break;
case TaskType.Error:
++errors;
break;
default:
++comments;
break;
}
} }
OnTasksChanged(null);
} }
public static event EventHandler TasksChanged; public static event TaskEventHandler Added;
public static event TaskEventHandler Removed;
public static event EventHandler Cleared;
} }
} }

4
src/Main/Base/Project/Src/TextEditor/Gui/Editor/ErrorDrawer.cs

@ -42,8 +42,8 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
{ {
this.textEditor = textEditor; this.textEditor = textEditor;
// TODO: Tasks Changed!!!
TaskService.TasksChanged += new EventHandler(SetErrors); // TaskService.TasksChanged += new EventHandler(SetErrors);
textEditor.FileNameChanged += new EventHandler(SetErrors); textEditor.FileNameChanged += new EventHandler(SetErrors);
} }

70
src/SharpDevelop.sln

@ -1,31 +1,5 @@
Microsoft Visual Studio Solution File, Format Version 9.00 Microsoft Visual Studio Solution File, Format Version 9.00
# SharpDevelop 2.0.0.1 # 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}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{14A277EE-7DF1-4529-B639-7D1EF334C1C5}"
ProjectSection(SolutionItems) = postProject ProjectSection(SolutionItems) = postProject
EndProjectSection EndProjectSection
@ -60,6 +34,32 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Backends", "Backends", "{FE
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}"
EndProject 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 Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@ -133,15 +133,6 @@ Global
HideSolutionNode = FALSE HideSolutionNode = FALSE
EndGlobalSection EndGlobalSection
GlobalSection(NestedProjects) = preSolution 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} {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} = {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} {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} {7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{CBC6C247-747B-4908-B09A-4D2E0F640B6B} = {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} {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 EndGlobalSection
EndGlobal EndGlobal

Loading…
Cancel
Save