예제 #1
0
        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();
            }
        }