public static DomEventArgs Create(nsIDOMEvent ev) { var type = nsString.Get(ev.GetTypeAttribute).ToLowerInvariant(); // search by name and create child class wrappers switch (type) { case "keydown": case "keyup": case "keypress": return(DomKeyEventArgs.Create((nsIDOMKeyEvent)ev)); case "mousedown": case "mouseup": case "mousemove": case "mouseover": case "mouseout": case "contextmenu": return(DomMouseEventArgs.Create((nsIDOMMouseEvent)ev)); case "dommousescroll": return(DomMouseScrollEventArgs.Create((nsIDOMMouseScrollEvent)ev)); case "dragstart": case "dragenter": case "dragover": case "dragleave": case "drag": case "drop": case "dragend": return(DomDragEventArgs.Create((nsIDOMDragEvent)ev)); case "hashchange": return(DomHashChangeEventArgs.Create(( nsIDOMHashChangeEvent )ev)); } // search by type if (ev is nsIDOMUIEvent) { return(DomUIEventArgs.Create((nsIDOMUIEvent)ev)); } if (ev is nsIDOMMessageEvent) { return(DomMessageEventArgs.Create((nsIDOMMessageEvent)ev)); } if (ev is nsIDOMSVGEvent) { return(DomSvgEvent.Create(( nsIDOMSVGEvent )ev)); } return(new DomEventArgs(ev)); }
protected virtual void OnHandleDomEvent(DomEventArgs e) { switch (e.Type) { case "keydown": OnDomKeyDown((DomKeyEventArgs)e); break; case "keyup": OnDomKeyUp((DomKeyEventArgs)e); break; case "keypress": OnDomKeyPress((DomKeyEventArgs)e); break; case "mousedown": OnDomMouseDown((DomMouseEventArgs)e); break; case "mouseup": OnDomMouseUp((DomMouseEventArgs)e); break; case "mousemove": OnDomMouseMove((DomMouseEventArgs)e); break; case "mouseover": OnDomMouseOver((DomMouseEventArgs)e); break; case "mouseout": OnDomMouseOut((DomMouseEventArgs)e); break; case "click": OnDomClick((DomMouseEventArgs)e); break; case "dblclick": OnDomDoubleClick((DomMouseEventArgs)e); break; case "submit": OnDomSubmit(e); break; case "compositionstart": OnDomCompositionStart(e); break; case "compositionend": OnDomCompositionEnd(e); break; case "contextmenu": OnDomContextMenu((DomMouseEventArgs)e); break; case "DOMMouseScroll": OnDomMouseScroll((DomMouseEventArgs)e); break; case "focus": OnDomFocus(e); break; case "blur": OnDomBlur(e); break; case "load": OnLoad(e); break; case "DOMContentLoaded": OnDOMContentLoaded(e); break; case "readystatechange": OnReadyStateChange(e); break; case "change": OnDomContentChanged(e); break; case "hashchange": OnHashChange((DomHashChangeEventArgs)e); break; case "dragstart": OnDomDragStart((DomDragEventArgs)e); break; case "dragenter": OnDomDragEnter((DomDragEventArgs)e); break; case "dragover": OnDomDragOver((DomDragEventArgs)e); break; case "dragleave": OnDomDragLeave((DomDragEventArgs)e); break; case "drag": OnDomDrag((DomDragEventArgs)e); break; case "drop": OnDomDrop((DomDragEventArgs)e); break; case "dragend": OnDomDragEnd((DomDragEventArgs)e); break; case "mozfullscreenchange": //TODO: change to "fullscreenchange" after prefix removed OnFullscreenChange(e); break; } if (e is DomMessageEventArgs) { Action <string> action; DomMessageEventArgs mea = (DomMessageEventArgs)e; if (_messageEventListeners.TryGetValue(e.Type, out action)) { action.Invoke(mea.Message); } } if (e != null && e.Cancelable && e.Handled) { e.PreventDefault(); } }