Exemple #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);
 }
Exemple #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);
             }
         }
     }
 }
Exemple #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
Exemple #4
0
 int Interop.IHTMLEditDesigner.PostHandleEvent(int dispId, Interop.IHTMLEventObj eventObj)
 {
     if (PostHandleEvent != null)
     {
         PostHandleEvent(htmlEditor, eventObj);
     }
     return(Interop.S_FALSE);
 }
Exemple #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);
 }
Exemple #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;
     }
 }
 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;      //
     }
 }
 private static Interop.IHTMLElement GetElement(Interop.IHTMLEventObj e, IHtmlEditor htmlEditor)
 {
     if (htmlEditor.GetCurrentScopeElement() == null)
     {
         return(e.srcElement);
     }
     else
     {
         return(htmlEditor.GetCurrentScopeElement().GetBaseElement());
     }
 }
        /// <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();
            }
        }
        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);
        }
 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);
 }
Exemple #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);
        }
        /// <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
            {
            }
        }
        /// <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);
            }
        }
Exemple #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;
     }
 }
Exemple #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;
        }
Exemple #17
0
 public int TranslateAccelerator(int dispId, Interop.IHTMLEventObj e)
 {
     return(Interop.S_FALSE);
 }
 internal ElementEventArgs(Interop.IHTMLEventObj e)
 {
     this.e = e;
 }
Exemple #19
0
 int Interop.IHTMLEditDesigner.PostEditorEventNotify(int dispId, Interop.IHTMLEventObj eventObj)
 {
     return(Interop.S_FALSE);
 }
Exemple #20
0
 /// <summary>
 /// Internally used public ctor.
 /// </summary>
 /// <param name="e"></param>
 public EventObject(Interop.IHTMLEventObj e)
 {
     this.e = e;
 }
Exemple #21
0
 int Interop.IHTMLEditDesigner.TranslateAccelerator(int dispId, Interop.IHTMLEventObj eventObj)
 {
     return(Interop.S_FALSE);
 }
Exemple #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;
 }
Exemple #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;
                }
            }
        }
Exemple #24
0
 public int PostHandleEvent(int dispId, Interop.IHTMLEventObj e)
 {
     return(returnCode);
 }
Exemple #25
0
 public int PostEditorEventNotify(int dispId, Interop.IHTMLEventObj e)
 {
     HandlePostEvents(dispId, e);
     return(Interop.S_FALSE);
 }