예제 #1
0
파일: SelectionModel.cs 프로젝트: mo5h/omeo
        internal MouseHandleResult HandleMouseDown(IViewNode itemNode, Keys modifiers)
        {
            MouseHandleResult result = 0;

            _processedMouseDown = false;
            if (itemNode == null)
            {
                return(result);
            }

            if ((modifiers & Keys.Shift) != 0)
            {
                ProcessShiftClick(itemNode, ((modifiers & Keys.Control) != 0));
            }
            else if ((modifiers & Keys.Control) != 0)
            {
                ProcessControlClick(itemNode);
            }
            else
            {
                if (IsSingleNodeSelected(itemNode) && FocusNode == itemNode)
                {
                    result |= MouseHandleResult.MayInPlaceEdit;
                }
                ProcessClick(itemNode);
            }

            if (itemNode != null)
            {
                SetFocusNode(itemNode);
            }
            return(result);
        }
예제 #2
0
        public MouseHandleResult HandleMouseDown(int x, int y, MouseButtons button, Keys modifiers)
        {
            MouseHandleResult rrResult = 0;

            int       deltaY;
            IViewNode row = GetRowAndDelta(y, out deltaY);

            if (row is JetListViewNode)
            {
                rrResult = _rowRenderer.HandleMouseDown(row as JetListViewNode, x, deltaY, button, modifiers);
                if ((rrResult & MouseHandleResult.Handled) != 0)
                {
                    return(rrResult);
                }
            }
            else if (row is GroupHeaderNode)
            {
                if (_groupRenderer.HandleMouseDown(row as GroupHeaderNode, x, deltaY, button, modifiers))
                {
                    return(MouseHandleResult.Handled);
                }
            }

            if (button == MouseButtons.Left && row != null)
            {
                MouseHandleResult selResult = _selection.HandleMouseDown(row, modifiers);
                if ((rrResult & MouseHandleResult.MayInPlaceEdit) == 0)
                {
                    selResult = rrResult & ~MouseHandleResult.MayInPlaceEdit;
                }
                return(selResult);
            }
            return(0);
        }
예제 #3
0
        private bool handleItem(MeasuredLayout item, MouseEvent motionEvent)
        {
            if (isPointInBounds(motionEvent.coordinates, item.getBounds().rect))// Give a chance to handle and alter the motion event before passing on to children
            {
                if (item.reactiveView != null && item.reactiveView != latchedView)
                {
                    currentMouseOverViews.Add(item.reactiveView);
                    if (item.reactiveView.handleMouseEvent != null)
                    {
                        MouseHandleResult motionResult = item.reactiveView.handleMouseEvent(motionEvent);

                        if (motionResult.shouldLatch == true)
                        {
                            latchedView = item.reactiveView;
                        }
                        if (motionResult.shouldLatch == false)
                        {
                            if (latchedView == item.reactiveView)
                            {
                                latchedView = null;
                            }
                        }

                        if (motionResult.handled == HandledStatus.HANDLED)
                        {
                            return(true);
                        }
                    }
                }
            }
            else
            {
                return(false);
            }

            MouseEvent motionEventClone = motionEvent.clone();

            motionEventClone.coordinates.X -= item.getBounds().rect.Left;
            motionEventClone.coordinates.Y -= item.getBounds().rect.Top;

            foreach (MeasuredLayout childItem in item.getCalculatedChildren())
            {
                bool thisHandledIt = handleItem(childItem, motionEventClone);
                if (thisHandledIt == true)
                {
                    return(true);
                }
            }

            return(false);
        }
예제 #4
0
        protected internal virtual MouseHandleResult HandleMouseDown(JetListViewNode node, int x, int y)
        {
            MouseHandleResult result = 0;

            if (MouseDown != null)
            {
                ItemMouseEventArgs args = new ItemMouseEventArgs(node.Data, x, y);
                MouseDown(this, args);
                if (args.Handled)
                {
                    result |= MouseHandleResult.Handled;
                }
            }
            return(result);
        }
예제 #5
0
        public MouseHandleResult HandleMouseDown(JetListViewNode node, int x, int y, MouseButtons button, Keys modifiers)
        {
            MouseHandleResult result = 0;

            if (button == MouseButtons.Left)
            {
                int deltaX, deltaY;
                JetListViewColumn col = GetClickColumn(node, x, y, out deltaX, out deltaY);
                if (col != null)
                {
                    result = col.HandleMouseDown(node, deltaX, deltaY);
                    if (col == GetInPlaceEditColumn(node))
                    {
                        result |= MouseHandleResult.MayInPlaceEdit;
                    }
                }
            }
            return(result);
        }
예제 #6
0
        private bool handleLatchedLayout(MeasuredLayout item, MouseEvent motionEvent)
        {
            if (item.reactiveView == latchedView)
            {
                MouseHandleResult res = item.reactiveView.handleMouseEvent(motionEvent);
                return(res.handled == HandledStatus.HANDLED);
            }

            MouseEvent motionEventClone = motionEvent.clone();

            motionEventClone.coordinates.X -= item.getBounds().rect.Left;
            motionEventClone.coordinates.Y -= item.getBounds().rect.Top;

            bool childHandledIt = false;

            foreach (MeasuredLayout childItem in item.getCalculatedChildren())
            {
                if (handleLatchedLayout(childItem, motionEventClone))
                {
                    childHandledIt = true;
                }
            }
            return(childHandledIt);
        }