public static void MouseMoveHelper(
            IPresentationDataAccess presentationDataAccess,
            DrawContext drawContext,
            Rectangle clientRectangle,
            IViewEvents viewEvents,
            Point pt,
            bool isLeftDrag,
            out CursorType newCursor
            )
        {
            newCursor = CursorType.Arrow;

            if (presentationDataAccess != null)
            {
                foreach (var i in DrawingUtils.GetVisibleMessagesIterator(drawContext, presentationDataAccess, clientRectangle))
                {
                    DrawingUtils.Metrics mtx = DrawingUtils.GetMetrics(i, drawContext);

                    if (pt.Y >= mtx.MessageRect.Top && pt.Y < mtx.MessageRect.Bottom)
                    {
                        if (isLeftDrag)
                        {
                            var hitTester = new HitTestingVisitor(drawContext, mtx, pt.X, i.TextLineIndex);
                            i.Message.Visit(hitTester);
                            MessageMouseEventFlag flags = MessageMouseEventFlag.ShiftIsHeld
                                                          | MessageMouseEventFlag.CapturedMouseMove;
                            if (pt.X < drawContext.CollapseBoxesAreaSize)
                            {
                                flags |= MessageMouseEventFlag.OulineBoxesArea;
                            }
                            viewEvents.OnMessageMouseEvent(i, hitTester.LineTextPosition, flags, pt);
                        }
                        if (i.Message.IsStartFrame() && mtx.OulineBox.Contains(pt))
                        {
                            newCursor = CursorType.Arrow;
                        }
                        else if (pt.X < drawContext.CollapseBoxesAreaSize)
                        {
                            newCursor = CursorType.RightToLeftArrow;
                        }
                        else if (pt.X >= drawContext.GetTextOffset(0, 0).X)
                        {
                            newCursor = CursorType.IBeam;
                        }
                        else
                        {
                            newCursor = CursorType.Arrow;
                        }
                    }
                }
            }
        }
        public static void MouseDownHelper(
            IPresentationDataAccess presentationDataAccess,
            DrawContext drawContext,
            Rectangle clientRectangle,
            IViewEvents viewEvents,
            Point pt,
            MessageMouseEventFlag flags,
            out bool captureTheMouse
            )
        {
            captureTheMouse = true;

            if (presentationDataAccess != null)
            {
                foreach (var i in DrawingUtils.GetVisibleMessagesIterator(drawContext, presentationDataAccess, clientRectangle))
                {
                    DrawingUtils.Metrics mtx = DrawingUtils.GetMetrics(i, drawContext);

                    // if user clicked line's outline box (collapse/expand cross)
                    if (i.Message.IsStartFrame() && mtx.OulineBox.Contains(pt.X, pt.Y) && i.TextLineIndex == 0)
                    //if (viewEvents.OnOulineBoxClicked(i.Message, (flags & MessageMouseEventFlag.CtrlIsHeld) != 0))
                    {
                        captureTheMouse = false;
                        break;
                    }

                    // if user clicked line area
                    if (mtx.MessageRect.Contains(pt.X, pt.Y))
                    {
                        var hitTester = new HitTestingVisitor(drawContext, mtx, pt.X, i.TextLineIndex);
                        i.Message.Visit(hitTester);
                        if ((flags & MessageMouseEventFlag.DblClick) != 0)
                        {
                            captureTheMouse = false;
                        }
                        if (pt.X < drawContext.CollapseBoxesAreaSize)
                        {
                            flags |= MessageMouseEventFlag.OulineBoxesArea;
                        }
                        viewEvents.OnMessageMouseEvent(i, hitTester.LineTextPosition, flags, pt);
                        break;
                    }
                }
            }
        }
        internal void OnMouseDown(NSEvent e)
        {
            MessageMouseEventFlag flags = MessageMouseEventFlag.None;

            if (e.Type == NSEventType.RightMouseDown)
            {
                flags |= MessageMouseEventFlag.RightMouseButton;
            }
            if ((e.ModifierFlags & NSEventModifierMask.ShiftKeyMask) != 0)
            {
                flags |= MessageMouseEventFlag.ShiftIsHeld;
            }
            if ((e.ModifierFlags & NSEventModifierMask.AlternateKeyMask) != 0)
            {
                flags |= MessageMouseEventFlag.AltIsHeld;
            }
            if ((e.ModifierFlags & NSEventModifierMask.ControlKeyMask) != 0)
            {
                flags |= MessageMouseEventFlag.CtrlIsHeld;
            }
            if (e.ClickCount == 2)
            {
                flags |= MessageMouseEventFlag.DblClick;
            }
            else
            {
                flags |= MessageMouseEventFlag.SingleClick;
            }

            bool captureTheMouse;

            DrawingUtils.MouseDownHelper(
                presentationDataAccess,
                drawContext,
                ClientRectangle,
                viewEvents,
                InnerView.ConvertPointFromView(e.LocationInWindow, null).ToPoint(),
                flags,
                out captureTheMouse
                );
        }
示例#4
0
        protected override void OnMouseDown(MouseEventArgs e)
        {
            this.Focus();

            bool captureTheMouse = true;

            MessageMouseEventFlag flags = MessageMouseEventFlag.None;

            if (e.Button == MouseButtons.Right)
            {
                flags |= MessageMouseEventFlag.RightMouseButton;
            }
            if (Control.ModifierKeys == Keys.Shift)
            {
                flags |= MessageMouseEventFlag.ShiftIsHeld;
            }
            if (Control.ModifierKeys == Keys.Alt)
            {
                flags |= MessageMouseEventFlag.AltIsHeld;
            }
            if (Control.ModifierKeys == Keys.Control)
            {
                flags |= MessageMouseEventFlag.CtrlIsHeld;
            }
            if (e.Clicks == 2)
            {
                flags |= MessageMouseEventFlag.DblClick;
            }
            else
            {
                flags |= MessageMouseEventFlag.SingleClick;
            }

            viewDrawing.HandleMouseDown(LJD.PrimitivesExtensions.ToRectangle(ClientRectangle), LJD.PrimitivesExtensions.ToPoint(e.Location), flags, out captureTheMouse);

            base.OnMouseDown(e);

            this.Capture = captureTheMouse;
        }
示例#5
0
        protected override void OnMouseDown(MouseEventArgs e)
        {
            this.Focus();
            bool captureTheMouse = true;

            MessageMouseEventFlag flags = MessageMouseEventFlag.None;

            if (e.Button == MouseButtons.Right)
            {
                flags |= MessageMouseEventFlag.RightMouseButton;
            }
            if (Control.ModifierKeys == Keys.Shift)
            {
                flags |= MessageMouseEventFlag.ShiftIsHeld;
            }
            if (Control.ModifierKeys == Keys.Alt)
            {
                flags |= MessageMouseEventFlag.AltIsHeld;
            }
            if (Control.ModifierKeys == Keys.Control)
            {
                flags |= MessageMouseEventFlag.CtrlIsHeld;
            }
            if (e.Clicks == 2)
            {
                flags |= MessageMouseEventFlag.DblClick;
            }
            else
            {
                flags |= MessageMouseEventFlag.SingleClick;
            }

            DrawingUtils.MouseDownHelper(presentationDataAccess, drawContext, ClientRectangle, viewEvents, e.Location, flags, out captureTheMouse);

            base.OnMouseDown(e);

            this.Capture = captureTheMouse;
        }
示例#6
0
        internal void OnMouseDown(NSEvent e)
        {
            MessageMouseEventFlag flags = MessageMouseEventFlag.None;

            if (e.Type == NSEventType.RightMouseDown)
            {
                flags |= MessageMouseEventFlag.RightMouseButton;
            }
            if ((e.ModifierFlags & NSEventModifierMask.ShiftKeyMask) != 0)
            {
                flags |= MessageMouseEventFlag.ShiftIsHeld;
            }
            if ((e.ModifierFlags & NSEventModifierMask.AlternateKeyMask) != 0)
            {
                flags |= MessageMouseEventFlag.AltIsHeld;
            }
            if ((e.ModifierFlags & NSEventModifierMask.ControlKeyMask) != 0)
            {
                flags |= MessageMouseEventFlag.CtrlIsHeld;
            }
            if (e.ClickCount == 2)
            {
                flags |= MessageMouseEventFlag.DblClick;
            }
            else
            {
                flags |= MessageMouseEventFlag.SingleClick;
            }

            viewDrawing?.HandleMouseDown(
                ClientRectangle,
                InnerView.ConvertPointFromView(e.LocationInWindow, null).ToPoint(),
                flags,
                out var _
                );
        }