Пример #1
0
 protected internal bool GetEventObject()
 {
     try
     {
         if (((Element)_element).IsDisposed)
         {
             return(false);
         }
         // native event object
         _eventobj = window.@event;
         if (_eventobj != null && _eventobj.srcElement != null)
         {
             // check suppressed events
             EventType type = (EventType)Enum.Parse(typeof(EventType), _eventobj.type, true);
             if (_element.HtmlEditor.EventManager.GetEnabled(type))
             {
                 //System.Diagnostics.Debug.WriteLine(_eventobj.type, _element.TagName);
                 return(true);
             }
         }
     }
     catch (Exception ex)
     {
         Debug.WriteLine(ex.Message, "GetEvent::Exception");
     }
     return(false);
 }
Пример #2
0
 private void HandlePostEvents(int dispId, Interop.IHTMLEventObj e)
 {
     // For spellchecker and other late bound event sinks
     htmlEditor.InvokePostEditorEvent(new PostEditorEventArgs(e));
     if (e.srcElement != null)
     {
         if (dispId == DispId.KEYDOWN || dispId == DispId.MOUSEUP)
         {
             // We check the current scope only if the caret is visible for the user
             if (dispId == DispId.KEYDOWN)
             {
                 //Application.DoEvents();
                 IElement currentElement = this.htmlEditor.Window.GetElementFromCaret() as IElement;
                 if (currentElement != null)
                 {
                     this.htmlEditor.InvokeHtmlElementChanged(currentElement.GetBaseElement(), HtmlElementChangedType.Key);
                 }
                 else
                 {
                     this.htmlEditor.InvokeHtmlElementChanged(htmlEditor.GetBodyElement().GetBaseElement(), HtmlElementChangedType.Key);
                 }
             }
             // if a mouse click was handled the event source has the element
             if (dispId == DispId.MOUSEUP)
             {
                 this.htmlEditor.InvokeHtmlElementChanged(e.srcElement, HtmlElementChangedType.Mouse);
             }
         }
     }
 }
Пример #3
0
        //void Interop.IHTMLElementEvents.Invoke(int dispid, ref Guid g, int lcid, int dwFlags, ref Interop.DISPPARAMS pdp, object pvarRes, ref Interop.EXCEPINFO pei, out int nArgError)
        void Interop.IHTMLGenericEvents.Invoke(int dispid, ref Guid g, int lcid, int dwFlags, Interop.DISPPARAMS pdp, object[] pvarRes, Interop.EXCEPINFO pei, int[] nArgError)
        {
            nArgError = new int[] { Interop.S_FALSE };
            if (!EventsEnabled)
            {
                return;
            }
            if (_element == null)
            {
                return;
            }
            _eventobj = this.GetEventObject();
            //System.Diagnostics.Debug.WriteLine(_eventobj.type, _eventobj.srcElement.GetTagName());
            if (_eventobj == null)
            {
                return;
            }
            if (_eventobj.srcElement != null)
            {
                // refire on document level to support global events in NetRix main
                if (docEvents.Contains(_eventobj.type))
                {
                    Interop.IHTMLDocument4 doc4   = (Interop.IHTMLDocument4)_element.GetDocument();
                    Interop.IHTMLEventObj  newObj = doc4.createEventObject(_eventobj);
                    doc4.fireEvent(String.Concat("on", _eventobj.type), newObj);
                }
            }
            _editor.SetMousePointer(false);

            if (ElementEvent != null)
            {
                ElementEvent(this, _eventobj);
            }
            # region Event Type Switch Block
Пример #4
0
 int Interop.IHTMLEditDesigner.PostHandleEvent(int dispId, Interop.IHTMLEventObj eventObj)
 {
     if (PostHandleEvent != null)
     {
         PostHandleEvent(htmlEditor, eventObj);
     }
     return(Interop.S_FALSE);
 }
Пример #5
0
 int Interop.IHTMLEditDesigner.PostHandleEvent(int dispId, Interop.IHTMLEventObj eventObj)
 {
     if (PostHandleEvent != null)
     {
         PostHandleEvent(htmlEditor, eventObj);
         //if (eventObj.cancelBubble) return Interop.S_OK;
     }
     return(Interop.S_FALSE);
 }
Пример #6
0
 void Invoke()
 {
     //nArgError = new int[] { Interop.S_FALSE };
     _eventobj = this.GetEventObject();
     if (_eventobj != null && _eventobj.srcElement != null)
     {
         System.Diagnostics.Debug.WriteLineIf(_eventobj.srcElement != null, _eventobj.type, _eventobj.srcElement.GetTagName());
         _eventobj.cancelBubble = true;
     }
 }
Пример #7
0
 private void SetKey(Interop.IHTMLEventObj e, bool pressed)
 {
     key = MapKeyLayout(e);
     if (key != Keys.ShiftKey && key != Keys.ControlKey)
     {
         key |= e.ctrlKey ? Keys.Control : Keys.None; //
         key |= e.shiftKey ? Keys.Shift : Keys.None;  //
         key |= e.altKey ? Keys.Alt : Keys.None;      //
     }
 }
Пример #8
0
 private static Interop.IHTMLElement GetElement(Interop.IHTMLEventObj e, IHtmlEditor htmlEditor)
 {
     if (htmlEditor.GetCurrentScopeElement() == null)
     {
         return(e.srcElement);
     }
     else
     {
         return(htmlEditor.GetCurrentScopeElement().GetBaseElement());
     }
 }
Пример #9
0
        /// <summary>
        /// Internally used ctor.
        /// </summary>
        /// <param name="e"></param>
        /// <param name="sourceElement"></param>
        public DocumentEventArgs(Interop.IHTMLEventObj e, IElement sourceElement)
        {
            //System.Diagnostics.Debug.Assert(e != null, "NULL Event E");
            //System.Diagnostics.Debug.Assert(sourceElement != null, "NULL Event SRC");
            referenceObject    = e;
            this.sourceElement = sourceElement;
            if (e != null)
            {
                clientXY = new Point(e.clientX, e.clientY);
                screenXY = new Point(e.screenX, e.screenY);
                switch (e.button)
                {
                default:
                case 0:
                    button = Control.MouseButtons;
                    break;

                case 1:
                    button = MouseButtons.Left;
                    break;

                case 2:
                    button = MouseButtons.Right;
                    break;

                case 3:
                    button = MouseButtons.Left | MouseButtons.Right;
                    break;

                case 4:
                    button = MouseButtons.Middle;
                    break;

                case 5:
                    button = MouseButtons.Left | MouseButtons.Middle;
                    break;

                case 6:
                    button = MouseButtons.Right | MouseButtons.Middle;
                    break;

                case 7:
                    button = MouseButtons.Left | MouseButtons.Middle | MouseButtons.Right;
                    break;
                }
                ctrlKey = e.ctrlKey;
                shftKey = e.shiftKey;
                altKey  = e.altKey;
                keyCode = ((Keys)e.keyCode) | ((altKey) ? Keys.Alt : Keys.None) | ((ctrlKey) ? Keys.Control : Keys.None) | ((shftKey) ? Keys.Shift : Keys.None);
                type    = e.type.ToLower();
            }
        }
Пример #10
0
        private Keys MapKeyLayout(Interop.IHTMLEventObj e)
        {
            int  hkl = Win32.GetKeyboardLayout(0);
            char m   = (char)Win32.MapVirtualKeyEx(((e.keyCode >= 97 && e.keyCode <= 122 && e.type.IndexOf("pressed") != -1) ? e.keyCode - 32 : e.keyCode), 2, hkl);

            if (keys.Contains(m.ToString()))
            {
                Keys k = (Keys)Enum.Parse(typeof(Keys), m.ToString(), true);
                return(k);
            }
            else
            {
                switch (m)
                {
                case '.':
                    return(Keys.OemPeriod);

                case '+':
                    return(Keys.Oemplus);

                case '-':
                    return(Keys.OemMinus);

                case '\\':
                    return(Keys.OemBackslash);

                case ',':
                    return(Keys.Oemcomma);

                case '?':
                    return(Keys.OemQuestion);

                case '"':
                    return(Keys.OemQuotes);

                case '~':
                    return(Keys.Oemtilde);

                case ';':
                    return(Keys.OemSemicolon);

                case '[':
                    return(Keys.OemOpenBrackets);

                case ']':
                    return(Keys.OemCloseBrackets);
                }
            }
            return(Keys.NoName);
        }
Пример #11
0
 protected bool GetEventObject()
 {
     try
     {
         // native event object
         _eventobj = window.@event;
         if (_eventobj != null && _eventobj.srcElement != null && (((ViewElement)_element).IsDisposed) == false)
         {
             System.Diagnostics.Debug.WriteLine(_eventobj.srcElement.GetTagName(), _eventobj.type);
             _eventobj.cancelBubble = true;
             return(true);
         }
     }
     catch (Exception ex)
     {
         System.Diagnostics.Debug.WriteLine(ex.Message, "GetEvent::Exception");
     }
     return(false);
 }
Пример #12
0
        public int PreHandleEvent(int dispId, Interop.IHTMLEventObj e)
        {
            returnCode = Interop.S_FALSE;
            Interop.IHTMLElement el = e.srcElement;
            if (e.srcElement != null)
            {
                lastEventType = e.type;
                Control element = htmlEditor.GenericElementFactory.CreateElement(el);
                returnCode = this.htmlEditor.InvokeHtmlEvent(e, element);
                if (returnCode == Interop.S_OK || (element is IElement && !htmlEditor.DesignModeEnabled))
                {
                    e.cancelBubble = true;
                    e.returnValue  = Interop.S_OK;
                }
                else
                {
                    if (returnCode == Interop.S_FALSE && dispId == DispId.KEYDOWN && htmlEditor.DesignModeEnabled)
                    {
                        switch (e.keyCode)
                        {
                        case DEL:
                            if (this.htmlEditor.InternalShortcutKeys)
                            {
                                try {
                                    this.htmlEditor.Exec(Interop.IDM.DELETE);
                                }
                                finally {
                                    returnCode = Interop.S_OK;
                                }
                            }
                            break;

                        default:

                            break;
                        }
                    }
                }
            }
            return(returnCode);
        }
Пример #13
0
        /// <summary>
        /// Ctor
        /// </summary>
        /// <param name="eventObject"></param>
        /// <param name="htmlEditor"></param>
        public HtmlKeyEventArgs(Interop.IHTMLEventObj eventObject, IHtmlEditor htmlEditor)
        {
            try
            {
                if (eventObject.srcElement != null)
                {
                    switch (eventObject.type)
                    {
                    case "keypress":
                        SetKey(eventObject, true);
                        if (GetElement(eventObject, htmlEditor) != null)
                        {
                            element = htmlEditor.GenericElementFactory.CreateElement(GetElement(eventObject, htmlEditor)) as IElement;
                            if (element != null)
                            {
                                htmlEditor.Document.SetActiveElement(element);
                            }
                        }
                        eventType = KeyEventType.KeyPress;
                        break;

                    case "keydown":
                        SetKey(eventObject, false);
                        if (GetElement(eventObject, htmlEditor) != null)
                        {
                            element = htmlEditor.GenericElementFactory.CreateElement(GetElement(eventObject, htmlEditor)) as IElement;
                            if (element != null)
                            {
                                htmlEditor.Document.SetActiveElement(element);
                            }
                        }
                        eventType = KeyEventType.KeyDown;
                        break;
                    }
                }
            }
            catch
            {
            }
        }
Пример #14
0
        /// <summary>
        /// Handles Mouse events and fill the event arguments with the values form the last event.
        /// </summary>
        /// <remarks>
        /// This constructor set the current element in the selection to, which forces the SelectionChanged event if the mouse click
        /// operation has changed the element. This constructor needs access to the Interop namespace is for internal
        /// use only.
        /// </remarks>
        /// <param name="element"></param>
        /// <param name="eventObject"></param>
        /// <param name="htmlEditor"></param>
        public HtmlMouseEventArgs(System.Web.UI.Control element, Interop.IHTMLEventObj eventObject, IHtmlEditor htmlEditor)
        {
            try
            {
                this.element = element;
                x            = eventObject.x;
                y            = eventObject.y;
                docx         = eventObject.offsetX;
                docy         = eventObject.offsetY;
                switch (eventObject.type)
                {
                case "mousemove":
                    eventType = MouseEventType.MouseMove;
                    break;

                case "mouseup":
                    // using "up" in absence of a "click" event here
                    eventType = MouseEventType.MouseUp;
                    if (element != null)
                    {
                        htmlEditor.Document.SetActiveElement(element as IElement);
                    }
                    break;

                case "mousedown":
                    eventType = MouseEventType.MouseDown;
                    break;

                default:
                    return;
                }
                buttons = (MouseButtons)eventObject.button;
                outside = (x < 0 || y < 0) ? true : false;
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.StackTrace, ex.Message);
            }
        }
Пример #15
0
 private void eventHandler(object sender, Interop.IHTMLEventObj eventObj)
 {
     if ((eventObj.type != "resizeend") || (0 != 0))
     {
         if (eventObj.type != "resizestart")
         {
             while (eventObj.type == "mousedown")
             {
                 eventObj.returnValue = true;
                 return;
             }
         }
         else
         {
             this._isResizing = true;
         }
     }
     else
     {
         this._isResizing = false;
     }
 }
Пример #16
0
        void _eventSink_ElementEvent(object sender, Interop.IHTMLEventObj e)
        {
            if (!EventsEnabled)
            {
                return;
            }
            //System.Diagnostics.Debug.WriteLine(e.type, e.srcElement.GetTagName());
            switch (e.type)
            {
            case "controlselect":
                break;

            case "dragstart":
                isDragging = true;
                break;

            case "dragend":
                isDragging = false;
                break;
            }
            // cancelling the bubble prevents us from getting this for the parent too.
            //e.cancelBubble = true;
        }
Пример #17
0
 public int TranslateAccelerator(int dispId, Interop.IHTMLEventObj e)
 {
     return(Interop.S_FALSE);
 }
Пример #18
0
 internal ElementEventArgs(Interop.IHTMLEventObj e)
 {
     this.e = e;
 }
Пример #19
0
 int Interop.IHTMLEditDesigner.PostEditorEventNotify(int dispId, Interop.IHTMLEventObj eventObj)
 {
     return(Interop.S_FALSE);
 }
Пример #20
0
 /// <summary>
 /// Internally used public ctor.
 /// </summary>
 /// <param name="e"></param>
 public EventObject(Interop.IHTMLEventObj e)
 {
     this.e = e;
 }
Пример #21
0
 int Interop.IHTMLEditDesigner.TranslateAccelerator(int dispId, Interop.IHTMLEventObj eventObj)
 {
     return(Interop.S_FALSE);
 }
Пример #22
0
 /// <summary>
 /// Internally used ctor. DO NOT USE IN USER CODE.
 /// </summary>
 /// <param name="e"></param>
 public PostEditorEventArgs(Interop.IHTMLEventObj e)
 {
     this.e = e;
 }
Пример #23
0
        void Interop.IHTMLGenericEvents.Invoke(int dispid, ref Guid g, int lcid, int dwFlags, Interop.DISPPARAMS pdp, object[] pvarRes, Interop.EXCEPINFO pei, int[] nArgError)
        {
            nArgError = new int[] { Interop.S_FALSE };
            _eventobj = this.GetEventObject();
            if (_eventobj != null && _eventobj.srcElement != null)
            {
                //System.Diagnostics.Debug.WriteLineIf(_eventobj.srcElement != null, _eventobj.type, " EVENTSINK " + _eventobj.srcElement.GetTagName());

                if (ElementEvent != null)
                {
                    ElementEvent(this, _eventobj);
                }
                switch (_eventobj.type)
                {
                case "help":
                    break;

                case "click":
                    _control.InvokeClick(_eventobj);
                    break;

                case "dblclick":
                    _control.InvokeDblClick(_eventobj);
                    break;

                case "keypress":
                    _control.InvokeKeyPress(_eventobj);
                    break;

                case "keydown":
                    break;

                case "keyup":
                    break;

                case "mouseout":
                    _control.InvokeMouseOut(_eventobj);
                    break;

                case "mouseover":
                    _control.InvokeMouseOver(_eventobj);
                    break;

                case "mousemove":
                    _control.InvokeMouseMove(_eventobj);
                    break;

                case "mousedown":
                    _control.InvokeMouseDown(_eventobj);
                    break;

                case "mouseup":
                    _control.InvokeMouseUp(_eventobj);
                    break;

                case "selectstart":
                    _control.InvokeSelectStart(_eventobj);
                    break;

                case "filterchange":
                    _control.InvokeFilterChange(_eventobj);
                    break;

                case "dragstart":
                    _control.InvokeDragStart(_eventobj);
                    break;

                case "beforeupdate":
                    break;

                case "afterupdate":
                    break;

                case "errorupdate":
                    break;

                case "rowexit":
                    break;

                case "rowenter":
                    break;

                case "datasetchanged":
                    break;

                case "dataavailable":
                    break;

                case "datasetcomplete":
                    break;

                case "losecapture":
                    _control.InvokeLoseCapture(_eventobj);
                    break;

                case "propertychange":
                    _control.InvokePropertyChange(_eventobj);
                    break;

                case "scroll":
                    _control.InvokeScroll(_eventobj);
                    break;

                case "focus":
                    _control.InvokeFocus(_eventobj);
                    break;

                case "blur":
                    _control.InvokeBlur(_eventobj);
                    break;

                case "resize":
                    _control.InvokeResize(_eventobj);
                    OnResize();
                    break;

                case "drag":
                    _control.InvokeDrag(_eventobj);
                    break;

                case "dragend":
                    _control.InvokeDragEnd(_eventobj);
                    break;

                case "dragenter":
                    _control.InvokeDragEnter(_eventobj);
                    break;

                case "dragover":
                    _control.InvokeDragOver(_eventobj);
                    break;

                case "dragleave":
                    _control.InvokeDragLeave(_eventobj);
                    break;

                case "drop":
                    _control.InvokeDrop(_eventobj);
                    break;

                case "beforecut":
                    _control.InvokeBeforeCut(_eventobj);
                    break;

                case "cut":
                    _control.InvokeCut(_eventobj);
                    break;

                case "beforecopy":
                    _control.InvokeBeforeCopy(_eventobj);
                    break;

                case "copy":
                    _control.InvokeCopy(_eventobj);
                    break;

                case "beforepaste":
                    _control.InvokeBeforePaste(_eventobj);
                    break;

                case "paste":
                    _control.InvokePaste(_eventobj);
                    break;

                case "contextmenu":
                    _control.InvokeContextMenu(_eventobj);
                    break;


                case "rowsdelete":
                    break;

                case "rowsinserted":
                    break;

                case "cellchange":
                    break;

                case "readystatechange":
                    break;

                case "beforeeditfocus":
                    _control.InvokeEditFocus(_eventobj);
                    break;

                case "layoutcomplete":
                    _control.InvokeLayoutComplete(_eventobj);
                    break;

                case "page":
                    _control.InvokePage(_eventobj);
                    break;

                case "beforedeactivate":
                    _control.InvokeBeforeDeactivate(_eventobj);
                    break;

                case "beforeactivate":
                    _control.InvokeBeforeActivate(_eventobj);
                    break;

                case "move":
                    _control.InvokeMove(_eventobj);
                    break;

                case "controlselect":
                    _control.InvokeControlSelect(_eventobj);
                    break;

                case "movestart":
                    _control.InvokeMoveStart(_eventobj);
                    OnMoveStart();
                    break;

                case "moveend":
                    _control.InvokeMoveEnd(_eventobj);
                    OnMoveEnd();
                    break;

                case "resizestart":
                    _control.InvokeResizeStart(_eventobj);
                    OnResizeStart();
                    break;

                case "resizeend":
                    _control.InvokeResizeEnd(_eventobj);
                    break;

                case "mouseenter":
                    _control.InvokeMouseEnter(_eventobj);
                    break;

                case "mouseleave":
                    _control.InvokeMouseLeave(_eventobj);
                    break;

                case "mousewheel":
                    _control.InvokeMouseWheel(_eventobj);
                    break;

                case "activate":
                    _control.InvokeActivate(_eventobj);
                    break;

                case "deactivate":
                    _control.InvokeDeactivate(_eventobj);
                    break;

                case "focusin":
                    _control.InvokeFocusIn(_eventobj);
                    break;

                case "focusout":
                    _control.InvokeFocusOut(_eventobj);
                    break;

                case "load":
                    _control.InvokeLoad(_eventobj);
                    break;

                case "error":
                    _control.InvokeError(_eventobj);
                    break;

                case "change":
                    _control.InvokeChange(_eventobj);
                    break;

                case "abort":
                    _control.InvokeAbort(_eventobj);
                    break;

                case "select":
                    _control.InvokeSelect(_eventobj);
                    break;

                case "selectionchange":
                    _control.InvokeSelectionChange(_eventobj);
                    break;

                case "stop":
                    _control.InvokeStop(_eventobj);
                    break;

                case "reset":
                    break;

                case "submit":
                    break;
                }
            }
        }
Пример #24
0
 public int PostHandleEvent(int dispId, Interop.IHTMLEventObj e)
 {
     return(returnCode);
 }
Пример #25
0
 public int PostEditorEventNotify(int dispId, Interop.IHTMLEventObj e)
 {
     HandlePostEvents(dispId, e);
     return(Interop.S_FALSE);
 }