From: Jeff R. <jef...@us...> - 2005-11-19 03:13:37
|
Update of /cvsroot/svgdomcsharp/SharpVectorGraphics/src/SharpVectorDom/SharpVectors/Dom/Events In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12283/src/SharpVectorDom/SharpVectors/Dom/Events Modified Files: Event.cs EventListenerMap.cs EventListenerMapEntry.cs EventTarget.cs Log Message: Library wide changes for scripting support and automated re-rendering Index: Event.cs =================================================================== RCS file: /cvsroot/svgdomcsharp/SharpVectorGraphics/src/SharpVectorDom/SharpVectors/Dom/Events/Event.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- Event.cs 23 Oct 2005 23:39:29 -0000 1.3 +++ Event.cs 19 Nov 2005 03:13:23 -0000 1.4 @@ -205,32 +205,33 @@ [TestFixture] public class EventTests { - public class EventMonitor - { - public int AtEvents = 0; - public int BubbledEvents = 0; - public int CapturedEvents = 0; - public int Events = 0; + public class EventMonitor + { + public int AtEvents = 0; + public int BubbledEvents = 0; + public int CapturedEvents = 0; + public int Events = 0; - public void EventHandler( - IEvent @event) - { - switch (@event.EventPhase) - { - case EventPhase.AtTarget: - AtEvents++; - break; - case EventPhase.BubblingPhase: - BubbledEvents++; - break; - case EventPhase.CapturingPhase: - CapturedEvents++; - break; - } + public void EventHandler( + IEvent @event) + { + switch (@event.EventPhase) + { + case EventPhase.AtTarget: + AtEvents++; + break; + case EventPhase.BubblingPhase: + BubbledEvents++; + break; + case EventPhase.CapturingPhase: + CapturedEvents++; + break; + } - Events++; - } - } + Events++; + } + } + public class ListenerRemover { @@ -273,32 +274,32 @@ public void TestConstructor() { Event e = new Event("mousemove", true, false); - Assertion.AssertEquals(null, e.NamespaceUri); - Assertion.AssertEquals("mousemove", e.Type); - Assertion.AssertEquals(true, e.Bubbles); - Assertion.AssertEquals(false, e.Cancelable); + Assert.AreEqual(null, e.NamespaceUri); + Assert.AreEqual("mousemove", e.Type); + Assert.AreEqual(true, e.Bubbles); + Assert.AreEqual(false, e.Cancelable); e = new Event("dummy", false, true); - Assertion.AssertEquals(null, e.NamespaceUri); - Assertion.AssertEquals("dummy", e.Type); - Assertion.AssertEquals(false, e.Bubbles); - Assertion.AssertEquals(true, e.Cancelable); + Assert.AreEqual(null, e.NamespaceUri); + Assert.AreEqual("dummy", e.Type); + Assert.AreEqual(false, e.Bubbles); + Assert.AreEqual(true, e.Cancelable); } [Test] public void TestConstructorNs() { Event e = new Event("uievents", "mousemove", true, false); - Assertion.AssertEquals("uievents", e.NamespaceUri); - Assertion.AssertEquals("mousemove", e.Type); - Assertion.AssertEquals(true, e.Bubbles); - Assertion.AssertEquals(false, e.Cancelable); + Assert.AreEqual("uievents", e.NamespaceUri); + Assert.AreEqual("mousemove", e.Type); + Assert.AreEqual(true, e.Bubbles); + Assert.AreEqual(false, e.Cancelable); e = new Event("namespace", "dummy", false, true); - Assertion.AssertEquals("namespace", e.NamespaceUri); - Assertion.AssertEquals("dummy", e.Type); - Assertion.AssertEquals(false, e.Bubbles); - Assertion.AssertEquals(true, e.Cancelable); + Assert.AreEqual("namespace", e.NamespaceUri); + Assert.AreEqual("dummy", e.Type); + Assert.AreEqual(false, e.Bubbles); + Assert.AreEqual(true, e.Cancelable); } [Test] @@ -306,10 +307,10 @@ { Event e = new Event("", true, false); - Assertion.AssertEquals(null, e.NamespaceUri); - Assertion.AssertEquals("", e.Type); - Assertion.AssertEquals(true, e.Bubbles); - Assertion.AssertEquals(false, e.Cancelable); + Assert.AreEqual(null, e.NamespaceUri); + Assert.AreEqual("", e.Type); + Assert.AreEqual(true, e.Bubbles); + Assert.AreEqual(false, e.Cancelable); } [Test] @@ -317,10 +318,10 @@ { Event e = new Event("namespaceUri", "", true, false); - Assertion.AssertEquals("namespaceUri", e.NamespaceUri); - Assertion.AssertEquals("", e.Type); - Assertion.AssertEquals(true, e.Bubbles); - Assertion.AssertEquals(false, e.Cancelable); + Assert.AreEqual("namespaceUri", e.NamespaceUri); + Assert.AreEqual("", e.Type); + Assert.AreEqual(true, e.Bubbles); + Assert.AreEqual(false, e.Cancelable); } [Test] @@ -328,10 +329,10 @@ { Event e = new Event("namespaceUri", null, true, false); - Assertion.AssertEquals("namespaceUri", e.NamespaceUri); - Assertion.AssertEquals(null, e.Type); - Assertion.AssertEquals(true, e.Bubbles); - Assertion.AssertEquals(false, e.Cancelable); + Assert.AreEqual("namespaceUri", e.NamespaceUri); + Assert.AreEqual(null, e.Type); + Assert.AreEqual(true, e.Bubbles); + Assert.AreEqual(false, e.Cancelable); } /// <test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-2" name="createEvent01"> @@ -344,7 +345,7 @@ { IDocument document = LoadDocument("hc_staff.xml"); IEvent @event = ((IDocumentEvent)document).CreateEvent("MutationEvents"); - Assertion.AssertNotNull(@event); + Assert.IsNotNull(@event); } /// <test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-2" name="createEvent02"> @@ -358,7 +359,7 @@ { IDocument document = LoadDocument("hc_staff.xml"); IEvent @event = ((IDocumentEvent)document).CreateEvent("Events"); - Assertion.AssertNotNull(@event); + Assert.IsNotNull(@event); } /// <test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-2" name="createEvent03"> @@ -371,8 +372,8 @@ public void W3CTS_CreateEvent03() { IDocument document = LoadDocument("hc_staff.xml"); - IEvent @event = ((IDocumentEvent)document).CreateEvent("UIEvent"); - Assertion.AssertNotNull(@event); + IEvent @event = ((IDocumentEvent)document).CreateEvent("UIEvent"); + Assert.IsNotNull(@event); } /// <test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-2" name="createEvent04"> @@ -386,7 +387,7 @@ { IDocument document = LoadDocument("hc_staff.xml"); IEvent @event = ((IDocumentEvent)document).CreateEvent("MouseEvent"); - Assertion.AssertNotNull(@event); + Assert.IsNotNull(@event); } /// <test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-2" name="createEvent05"> @@ -400,7 +401,7 @@ { IDocument document = LoadDocument("hc_staff.xml"); IEvent @event = ((IDocumentEvent)document).CreateEvent("HTMLEvents"); - Assertion.AssertNotNull(@event); + Assert.IsNotNull(@event); } /// <test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-2" name="DocumentEventCast01"> @@ -624,9 +625,9 @@ ((IEventTarget)document).AddEventListener("foo", new EventListener(eventMonitor.EventHandler), false); ((IEventTarget)document).DispatchEvent(@event); - Assertion.AssertEquals(1, eventMonitor.AtEvents); - Assertion.AssertEquals(0, eventMonitor.BubbledEvents); - Assertion.AssertEquals(0, eventMonitor.CapturedEvents); + Assert.AreEqual(1, eventMonitor.AtEvents); + Assert.AreEqual(0, eventMonitor.BubbledEvents); + Assert.AreEqual(0, eventMonitor.CapturedEvents); } /// <test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-2" name="dispatchEvent09"> @@ -646,9 +647,9 @@ ((IEventTarget)document).AddEventListener("foo", new EventListener(eventMonitor.EventHandler), true); ((IEventTarget)document).DispatchEvent(@event); - Assertion.AssertEquals(eventMonitor.AtEvents, 0); - Assertion.AssertEquals(eventMonitor.BubbledEvents, 0); - Assertion.AssertEquals(eventMonitor.CapturedEvents, 0); + Assert.AreEqual(eventMonitor.AtEvents, 0); + Assert.AreEqual(eventMonitor.BubbledEvents, 0); + Assert.AreEqual(eventMonitor.CapturedEvents, 0); } /// <test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-2" name="dispatchEvent10"> @@ -668,9 +669,9 @@ ((IEventTarget)document).AddEventListener("foo", new EventListener(eventMonitor.EventHandler), false); ((IEventTarget)document).AddEventListener("foo", new EventListener(eventMonitor.EventHandler), false); ((IEventTarget)document).DispatchEvent(@event); - Assertion.AssertEquals(eventMonitor.AtEvents, 1); - Assertion.AssertEquals(eventMonitor.BubbledEvents, 0); - Assertion.AssertEquals(eventMonitor.CapturedEvents, 0); + Assert.AreEqual(eventMonitor.AtEvents, 1); + Assert.AreEqual(eventMonitor.BubbledEvents, 0); + Assert.AreEqual(eventMonitor.CapturedEvents, 0); } /// <test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-2" name="dispatchEvent11"> @@ -691,9 +692,9 @@ ((IEventTarget)document).AddEventListener("foo", new EventListener(eventMonitor.EventHandler), false); ((IEventTarget)document).RemoveEventListener("foo", new EventListener(eventMonitor.EventHandler), false); ((IEventTarget)document).DispatchEvent(@event); - Assertion.AssertEquals(eventMonitor.AtEvents, 0); - Assertion.AssertEquals(eventMonitor.BubbledEvents, 0); - Assertion.AssertEquals(eventMonitor.CapturedEvents, 0); + Assert.AreEqual(eventMonitor.AtEvents, 0); + Assert.AreEqual(eventMonitor.BubbledEvents, 0); + Assert.AreEqual(eventMonitor.CapturedEvents, 0); } /// <test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-2" name="dispatchEvent12"> @@ -717,7 +718,7 @@ ((IEventTarget)document).RemoveEventListener("food", new EventListener(eventMonitor.EventHandler), false); ((IEventTarget)document).RemoveEventListener("foo", new EventListener(otherMonitor.EventHandler), true); ((IEventTarget)document).DispatchEvent(@event); - Assertion.AssertEquals(eventMonitor.Events, 1); + Assert.AreEqual(eventMonitor.Events, 1); } /// <test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-2" name="dispatchEvent13"> @@ -748,7 +749,7 @@ ((IEventTarget)document).AddEventListener("foo", new EventListener(listenerRemover2.EventHandler), false); ((IEventTarget)document).DispatchEvent(@event); - Assertion.AssertEquals(events.Count, 1); + Assert.AreEqual(events.Count, 1); } /// <test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-2" name="initEvent01"> @@ -763,9 +764,9 @@ IEvent @event = ((IDocumentEvent)document).CreateEvent("Events"); Assertion.Assert(@event != null); @event.InitEvent("rotate", true, false); - Assertion.AssertEquals("rotate", @event.Type); - Assertion.AssertEquals(true, @event.Bubbles); - Assertion.AssertEquals(false, @event.Cancelable); + Assert.AreEqual("rotate", @event.Type); + Assert.AreEqual(true, @event.Bubbles); + Assert.AreEqual(false, @event.Cancelable); } /// <test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-2" name="initEvent02"> @@ -780,8 +781,8 @@ IEvent @event = ((IDocumentEvent)document).CreateEvent("Events"); Assertion.Assert(@event != null); @event.InitEvent("rotate", false, true); - Assertion.AssertEquals(false, @event.Bubbles); - Assertion.AssertEquals(true, @event.Cancelable); + Assert.AreEqual(false, @event.Bubbles); + Assert.AreEqual(true, @event.Cancelable); } /// <test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-2" name="initEvent03"> @@ -797,13 +798,13 @@ IEvent @event = ((IDocumentEvent)document).CreateEvent("Events"); Assertion.Assert(@event != null); @event.InitEvent("rotate", true, true); - Assertion.AssertEquals("rotate", @event.Type); - Assertion.AssertEquals(true, @event.Bubbles); - Assertion.AssertEquals(true, @event.Cancelable); + Assert.AreEqual("rotate", @event.Type); + Assert.AreEqual(true, @event.Bubbles); + Assert.AreEqual(true, @event.Cancelable); @event.InitEvent("shear", false, false); - Assertion.AssertEquals("shear", @event.Type); - Assertion.AssertEquals(false, @event.Bubbles); - Assertion.AssertEquals(false, @event.Cancelable); + Assert.AreEqual("shear", @event.Type); + Assert.AreEqual(false, @event.Bubbles); + Assert.AreEqual(false, @event.Cancelable); } /// <test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-2" name="initEvent04"> @@ -819,9 +820,9 @@ IEvent @event = ((IDocumentEvent)document).CreateEvent("MutationEvents"); Assertion.Assert(@event != null); @event.InitEvent("rotate", true, false); - Assertion.AssertEquals("rotate", @event.Type); - Assertion.AssertEquals(true, @event.Bubbles); - Assertion.AssertEquals(false, @event.Cancelable); + Assert.AreEqual("rotate", @event.Type); + Assert.AreEqual(true, @event.Bubbles); + Assert.AreEqual(false, @event.Cancelable); } /// <test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-2" name="initEvent05"> @@ -837,9 +838,9 @@ IEvent @event = ((IDocumentEvent)document).CreateEvent("MutationEvents"); Assertion.Assert(@event != null); @event.InitEvent("rotate", false, true); - Assertion.AssertEquals("rotate", @event.Type); - Assertion.AssertEquals(false, @event.Bubbles); - Assertion.AssertEquals(true, @event.Cancelable); + Assert.AreEqual("rotate", @event.Type); + Assert.AreEqual(false, @event.Bubbles); + Assert.AreEqual(true, @event.Cancelable); } /// <test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-2" name="initEvent06"> @@ -856,13 +857,13 @@ IEvent @event = ((IDocumentEvent)document).CreateEvent("MutationEvents"); Assertion.Assert(@event != null); @event.InitEvent("rotate", true, true); - Assertion.AssertEquals("rotate", @event.Type); - Assertion.AssertEquals(true, @event.Bubbles); - Assertion.AssertEquals(true, @event.Cancelable); + Assert.AreEqual("rotate", @event.Type); + Assert.AreEqual(true, @event.Bubbles); + Assert.AreEqual(true, @event.Cancelable); @event.InitEvent("shear", false, false); - Assertion.AssertEquals("shear", @event.Type); - Assertion.AssertEquals(false, @event.Bubbles); - Assertion.AssertEquals(false, @event.Cancelable); + Assert.AreEqual("shear", @event.Type); + Assert.AreEqual(false, @event.Bubbles); + Assert.AreEqual(false, @event.Cancelable); } } Index: EventListenerMap.cs =================================================================== RCS file: /cvsroot/svgdomcsharp/SharpVectorGraphics/src/SharpVectorDom/SharpVectors/Dom/Events/EventListenerMap.cs,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- EventListenerMap.cs 23 Oct 2005 23:39:29 -0000 1.2 +++ EventListenerMap.cs 19 Nov 2005 03:13:23 -0000 1.3 @@ -20,7 +20,8 @@ private EventListenerMapEntry[] entries; private int count; - + private bool locked; + #endregion #region Private Helpers @@ -34,6 +35,7 @@ growth * GrowthFactor + GrowthBuffer]; this.count = 0; + this.locked = false; return entries; } @@ -86,7 +88,7 @@ } entries[count] = new EventListenerMapEntry( - namespaceUri, eventType, eventGroup, listener); + namespaceUri, eventType, eventGroup, listener, locked); count++; } @@ -131,9 +133,13 @@ string eventType = @event.Type; for (int i = 0; i < count; i++) { + // Check if the entry was added during this phase + if (entries[i].Locked) + continue; + string entryNamespaceUri = entries[i].NamespaceUri; - string entryEventType = entries[i].Type; - + string entryEventType = entries[i].Type; + if (entryNamespaceUri != null && namespaceUri != null) { if (entryNamespaceUri != namespaceUri) @@ -178,6 +184,22 @@ return false; } + public void Lock() + { + locked = true; + } + + public void Unlock() + { + // Unlock the map + locked = false; + + // Unlock pending entries + for (int i = 0; i < count; i++) + { + entries[i].Locked = false; + } + } #endregion } } Index: EventListenerMapEntry.cs =================================================================== RCS file: /cvsroot/svgdomcsharp/SharpVectorGraphics/src/SharpVectorDom/SharpVectors/Dom/Events/EventListenerMapEntry.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- EventListenerMapEntry.cs 14 Aug 2003 13:40:50 -0000 1.1 +++ EventListenerMapEntry.cs 19 Nov 2005 03:13:23 -0000 1.2 @@ -17,17 +17,20 @@ public string Type; public object Group; public EventListener Listener; + public bool Locked; public EventListenerMapEntry( string namespaceUri, string type, object group, - EventListener listener) + EventListener listener, + bool locked) { NamespaceUri = namespaceUri; Type = type; Group = group; Listener = listener; + Locked = locked; } } } Index: EventTarget.cs =================================================================== RCS file: /cvsroot/svgdomcsharp/SharpVectorGraphics/src/SharpVectorDom/SharpVectors/Dom/Events/EventTarget.cs,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- EventTarget.cs 23 Oct 2005 23:39:29 -0000 1.5 +++ EventTarget.cs 19 Nov 2005 03:13:23 -0000 1.6 @@ -261,12 +261,14 @@ { case EventPhase.AtTarget: case EventPhase.BubblingPhase: + bubbleMap.Lock(); bubbleMap.FireEvent(@event); - + bubbleMap.Unlock(); break; case EventPhase.CapturingPhase: + captureMap.Lock(); captureMap.FireEvent(@event); - + captureMap.Unlock(); break; } } |