StephaneLenclud@210: //
StephaneLenclud@210:
StephaneLenclud@210:
StephaneLenclud@210: using System;
StephaneLenclud@210: using System.Collections.Generic;
StephaneLenclud@253: using System.Diagnostics;
StephaneLenclud@265: using System.Linq;
StephaneLenclud@210: using System.Runtime.Serialization;
StephaneLenclud@258: using System.Threading.Tasks;
StephaneLenclud@210:
StephaneLenclud@210: namespace SharpLib.Ear
StephaneLenclud@210: {
StephaneLenclud@210: [DataContract]
StephaneLenclud@260: [AttributeObject(Id = "Event", Name = "User Event", Description = "An event that can be triggered by users.")]
StephaneLenclud@260: public class Event : Object
StephaneLenclud@210: {
StephaneLenclud@231: [DataMember]
StephaneLenclud@231: [AttributeObjectProperty
StephaneLenclud@231: (
StephaneLenclud@231: Id = "Event.Enabled",
StephaneLenclud@231: Name = "Enabled",
StephaneLenclud@231: Description = "When enabled an event instance can be triggered."
StephaneLenclud@231: )
StephaneLenclud@231: ]
Stephane@243: public bool Enabled { get; set; } = true;
StephaneLenclud@210:
StephaneLenclud@262:
StephaneLenclud@210:
StephaneLenclud@231:
StephaneLenclud@231: ///
StephaneLenclud@231: /// Allows testing from generic edit dialog.
StephaneLenclud@231: ///
StephaneLenclud@260: public async void Test()
StephaneLenclud@231: {
StephaneLenclud@253: Trace.WriteLine("Event test");
StephaneLenclud@260: await Trigger();
StephaneLenclud@231: }
StephaneLenclud@231:
StephaneLenclud@231:
StephaneLenclud@258: public async Task Trigger()
StephaneLenclud@210: {
StephaneLenclud@260: Trace.WriteLine("Event triggered: " + AttributeName);
StephaneLenclud@265: foreach (Action action in Objects.OfType())
StephaneLenclud@210: {
StephaneLenclud@258: await action.Execute();
StephaneLenclud@210: }
StephaneLenclud@210: }
StephaneLenclud@231:
StephaneLenclud@237: //
StephaneLenclud@237: public override bool Equals(object obj)
StephaneLenclud@237: {
StephaneLenclud@237: //Default implementation assumes event are the same if types are the same
StephaneLenclud@237: bool res= obj.GetType() == GetType();
StephaneLenclud@237: return res;
StephaneLenclud@237: }
StephaneLenclud@231: };
StephaneLenclud@210:
StephaneLenclud@210: }