#develop (short for SharpDevelop) is a free IDE for .NET programming languages.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

131 lines
4.4 KiB

// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <author name="Daniel Grunwald"/>
// <version>$Revision$</version>
// </file>
using System;
using Microsoft.Build.Framework;
namespace ICSharpCode.SharpDevelop.BuildWorker
{
[Flags]
public enum EventTypes
{
None = 0,
Message = 0x0001,
Error = 0x0002,
Warning = 0x0004,
BuildStarted = 0x0008,
BuildFinished = 0x0010,
ProjectStarted = 0x0020,
ProjectFinished = 0x0040,
TargetStarted = 0x0080,
TargetFinished = 0x0100,
TaskStarted = 0x0200,
TaskFinished = 0x0400,
Custom = 0x0800,
Unknown = 0x1000,
All = 0x1fff
}
class EventSource : IEventSource
{
public event BuildMessageEventHandler MessageRaised;
public event BuildErrorEventHandler ErrorRaised;
public event BuildWarningEventHandler WarningRaised;
public event BuildStartedEventHandler BuildStarted;
public event BuildFinishedEventHandler BuildFinished;
public event ProjectStartedEventHandler ProjectStarted;
public event ProjectFinishedEventHandler ProjectFinished;
public event TargetStartedEventHandler TargetStarted;
public event TargetFinishedEventHandler TargetFinished;
public event TaskStartedEventHandler TaskStarted;
public event TaskFinishedEventHandler TaskFinished;
public event CustomBuildEventHandler CustomEventRaised;
public event BuildStatusEventHandler StatusEventRaised;
public event AnyEventHandler AnyEventRaised;
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
public void RaiseEvent(BuildEventArgs e)
{
if (e is BuildStatusEventArgs) {
if (e is TaskStartedEventArgs) {
if (TaskStarted != null)
TaskStarted(this, (TaskStartedEventArgs)e);
} else if (e is TaskFinishedEventArgs) {
if (TaskFinished != null)
TaskFinished(this, (TaskFinishedEventArgs)e);
} else if (e is TargetStartedEventArgs) {
if (TargetStarted != null)
TargetStarted(this, (TargetStartedEventArgs)e);
} else if (e is TargetFinishedEventArgs) {
if (TargetFinished != null)
TargetFinished(this, (TargetFinishedEventArgs)e);
} else if (e is ProjectStartedEventArgs) {
if (ProjectStarted != null)
ProjectStarted(this, (ProjectStartedEventArgs)e);
} else if (e is ProjectFinishedEventArgs) {
if (ProjectFinished != null)
ProjectFinished(this, (ProjectFinishedEventArgs)e);
} else if (e is BuildStartedEventArgs) {
if (BuildStarted != null)
BuildStarted(this, (BuildStartedEventArgs)e);
} else if (e is BuildFinishedEventArgs) {
if (BuildFinished != null)
BuildFinished(this, (BuildFinishedEventArgs)e);
}
if (StatusEventRaised != null)
StatusEventRaised(this, (BuildStatusEventArgs)e);
} else if (e is BuildMessageEventArgs) {
if (MessageRaised != null)
MessageRaised(this, (BuildMessageEventArgs)e);
} else if (e is BuildWarningEventArgs) {
if (WarningRaised != null)
WarningRaised(this, (BuildWarningEventArgs)e);
} else if (e is BuildErrorEventArgs) {
if (ErrorRaised != null)
ErrorRaised(this, (BuildErrorEventArgs)e);
} else if (e is CustomBuildEventArgs) {
if (CustomEventRaised != null)
CustomEventRaised(this, (CustomBuildEventArgs)e);
}
if (AnyEventRaised != null)
AnyEventRaised(this, e);
}
public static EventTypes GetEventType(BuildEventArgs e)
{
if (e is TaskStartedEventArgs) {
return EventTypes.TaskStarted;
} else if (e is TaskFinishedEventArgs) {
return EventTypes.TaskFinished;
} else if (e is TargetStartedEventArgs) {
return EventTypes.TargetStarted;
} else if (e is TargetFinishedEventArgs) {
return EventTypes.TargetFinished;
} else if (e is BuildMessageEventArgs) {
return EventTypes.Message;
} else if (e is BuildWarningEventArgs) {
return EventTypes.Warning;
} else if (e is BuildErrorEventArgs) {
return EventTypes.Error;
} else if (e is ProjectStartedEventArgs) {
return EventTypes.ProjectStarted;
} else if (e is ProjectFinishedEventArgs) {
return EventTypes.ProjectFinished;
} else if (e is BuildStartedEventArgs) {
return EventTypes.BuildStarted;
} else if (e is BuildFinishedEventArgs) {
return EventTypes.BuildFinished;
} else if (e is CustomBuildEventArgs) {
return EventTypes.Custom;
} else {
return EventTypes.Unknown;
}
}
}
}