public virtual int HitTest(MouseControllerEventArgs mouseEventArgs, IMouseController controller)
        {
            Point point = mouseEventArgs.Location;

            GridRangeInfo range = grid.Model.SelectedCells;

            if (range == null || range.IsEmpty)
            {
                return(0);
            }

            RowColumnIndex pos = grid.PointToCellRowColumnIndex(point, true);

            if (pos != RowColumnIndex.Empty && MoveDir != MovingDirection.None)
            {
                return(1);
            }

            VisibleLineInfo hitRow = HitRowTest(point);

            if (hitRow != null && !this.IsNotNested(hitRow) && range.Bottom == hitRow.LineIndex)
            {
                VisibleLineInfo column = HitColTest(point);
                if (column != null && range.Right == column.LineIndex)
                {
                    return(1);
                }
            }

            return(0);
        }
예제 #2
0
        public int HitTest(MouseEventArgs e, IMouseController controller)
        {
            lastHitTestCode = GridHitTestContext.None;
            if (e.Button == MouseButtons.Left)
            {
                GridRangeInfo range = grid.Selections.Ranges.ActiveRange;
                if (!range.IsEmpty)
                {
                    Point point = new Point(e.X, e.Y);
                    point.Offset(-delta, -delta);
                    int rowIndex, colIndex;
                    grid.PointToRowCol(point, out rowIndex, out colIndex);

                    if (rowIndex == range.Bottom && colIndex == range.Right)
                    {
                        point.Offset(delta * 2 + 1, delta * 2 + 1);
                        int rowIndex2, colIndex2;
                        grid.PointToRowCol(point, out rowIndex2, out colIndex2);
                        if (rowIndex2 != rowIndex && colIndex2 != colIndex)
                        {
                            lastHitTestCode = HitExcelMarker;
                        }
                    }
                }
            }
            return(lastHitTestCode);
        }
        public int HitTest(MouseControllerEventArgs mouseEventArgs, IMouseController controller)
        {
            Point point = mouseEventArgs.Location;

            GridRangeInfo range = Grid.Model.SelectedCells;

            if (range == null || range.IsEmpty)
            {
                return(0);
            }

            RowColumnIndex  pos    = Grid.PointToCellRowColumnIndex(point, true);
            VisibleLineInfo hitRow = HitRowTest(point);

            if (hitRow != null && !this.IsNotNested(hitRow) && range.Bottom == hitRow.LineIndex)
            {
                VisibleLineInfo column = HitColTest(point);//Grid.ScrollColumns.GetVisibleLineAtPoint(point.X);

                if (column != null && range.Right == column.LineIndex)
                {
                    //  Grid.InvalidateCells();
                    return(1);
                }
            }
            return(0);
        }
예제 #4
0
        private MouseController GetControllerMock(IMouseController imcon)
        {
            var mcon = Substitute.For <MouseController> ();

            imcon.MouseTranslation().Returns(0);
            imcon.MouseRotation().Returns(0);
            mcon.SetMouseController(imcon);
            return(mcon);
        }
예제 #5
0
        /// <summary>
        /// Initialize a new instance of the ButtonSpecViewControllers class.
        /// </summary>
        /// <param name="mouseController">Mouse controller.</param>
        /// <param name="sourceController">Source controller.</param>
        /// <param name="keyController">Key controller.</param>
        public ButtonSpecViewControllers(IMouseController mouseController,
                                         ISourceController sourceController,
                                         IKeyController keyController)
        {
            Debug.Assert(mouseController != null);
            Debug.Assert(sourceController != null);
            Debug.Assert(keyController != null);

            _mouseController  = mouseController;
            _sourceController = sourceController;
            _keyController    = keyController;
        }
예제 #6
0
        /// <summary>
        /// Initialize an instance of the TooltipController class.
        /// </summary>
        /// <param name="manager">Reference to manager of all tooltip functionality.</param>
        /// <param name="targetElement">Target element that controller is for.</param>
        /// <param name="targetController">Target controller that we are snooping.</param>
        public ToolTipController(ToolTipManager manager,
                                 ViewBase targetElement,
                                 IMouseController targetController)
        {
            Debug.Assert(manager != null);
            Debug.Assert(targetElement != null);

            // Remember incoming references
            _manager          = manager;
            _targetElement    = targetElement;
            _targetController = targetController;
        }
예제 #7
0
        /// <summary>
        /// Initialize a new instance of the ButtonSpecViewControllers class.
        /// </summary>
        /// <param name="mouseController">Mouse controller.</param>
        /// <param name="sourceController">Source controller.</param>
        /// <param name="keyController">Key controller.</param>
        public ButtonSpecViewControllers(IMouseController mouseController,
            ISourceController sourceController,
            IKeyController keyController)
        {
            Debug.Assert(mouseController != null);
            Debug.Assert(sourceController != null);
            Debug.Assert(keyController != null);

            _mouseController = mouseController;
            _sourceController = sourceController;
            _keyController = keyController;
        }
예제 #8
0
        /// <summary>
        /// Initialize an instance of the TooltipController class.
        /// </summary>
        /// <param name="manager">Reference to manager of all tooltip functionality.</param>
        /// <param name="targetElement">Target element that controller is for.</param>
        /// <param name="targetController">Target controller that we are snooping.</param>
        public ToolTipController(ToolTipManager manager,
                                 ViewBase targetElement,
                                 IMouseController targetController)
        {
            Debug.Assert(manager != null);
            Debug.Assert(targetElement != null);

            // Remember incoming references
            _manager = manager;
            _targetElement = targetElement;
            _targetController = targetController;
        }
예제 #9
0
        /// <summary>
        /// Create a button controller for the view.
        /// </summary>
        /// <param name="viewButton">View to be controlled.</param>
        /// <param name="needPaint">Paint delegate.</param>
        /// <param name="clickHandler">Reference to click handler.</param>
        /// <returns>Controller instance.</returns>
        public virtual ButtonSpecViewControllers CreateController(ViewDrawButton viewButton,
                                                                  NeedPaintHandler needPaint,
                                                                  MouseEventHandler clickHandler)
        {
            // Create a standard button controller
            _controller = new ButtonController(viewButton, needPaint);
            _controller.BecomesFixed = true;
            _controller.Click       += clickHandler;

            // If associated with a tooltip manager then pass mouse messages onto tooltip manager
            IMouseController mouseController = (IMouseController)_controller;

            if (Manager.ToolTipManager != null)
            {
                mouseController = new ToolTipController(Manager.ToolTipManager, viewButton, _controller);
            }

            // Return a collection of controllers
            return(new ButtonSpecViewControllers(mouseController, _controller, _controller));
        }
        /// <override/>
        public override int HitTest(MouseEventArgs e, IMouseController controller)
        {
            // This HitTest code has higher priority than "SelectCells"
            Point pt = new Point(e.X, e.Y);

            hitTestInfo = null;


            if (CheckMouseButtons(e)
                //&& e.Clicks < 2
                && (controller == null || controller.Name != "ResizeCells")
                )
            {
                hitTestInfo = new DragFieldHitTestInfo(grid, pt);
                if (hitTestInfo.hitTestResult == GridHitTestContext.None)
                {
                    hitTestInfo = null;
                }
                else if (!IsOverCheckBox(hitTestInfo.rowIndex, hitTestInfo.colIndex, e))
                {
                    this._rowIndex    = hitTestInfo.rowIndex;
                    this._colIndex    = hitTestInfo.colIndex;
                    this._cellRange   = hitTestInfo.cellRange;
                    this.originBounds = grid.GridRectangleToScreen(grid.RangeInfoToRectangle(_cellRange));
                    this.origin       = this.grid.GetGridWindow().LastMousePosition;
                    this.fieldIndex   = hitTestInfo.rowIndex;
                    wasDragged        = false;
                }
                else
                {
                    hitTestInfo = null;
                }
            }

            if (hitTestInfo != null)
            {
                base.HitTest(e, controller);
                return(hitTestInfo.hitTestResult);
            }
            return(0);
        }
예제 #11
0
        /// <summary>
        /// Create a button controller for the view.
        /// </summary>
        /// <param name="viewButton">View to be controlled.</param>
        /// <param name="needPaint">Paint delegate.</param>
        /// <param name="clickHandler">Reference to click handler.</param>
        /// <returns>Controller instance.</returns>
        public override ButtonSpecViewControllers CreateController(ViewDrawButton viewButton,
                                                                   NeedPaintHandler needPaint,
                                                                   MouseEventHandler clickHandler)
        {
            // Create a ribbon specific button controller
            ButtonSpecManagerLayoutAppButton managerAppButton = (ButtonSpecManagerLayoutAppButton)Manager;

            _controller = new ButtonSpecAppButtonController(managerAppButton.ViewManager, viewButton, needPaint);
            _controller.BecomesFixed = true;
            _controller.Click       += clickHandler;

            // If associated with a tooltip manager then pass mouse messages onto tooltip manager
            IMouseController mouseController = (IMouseController)_controller;

            if (Manager.ToolTipManager != null)
            {
                mouseController = new ToolTipController(Manager.ToolTipManager, viewButton, _controller);
            }

            // Return a collection of controllers
            return(new ButtonSpecViewControllers(mouseController, _controller, _controller));
        }
예제 #12
0
        public void Load()
        {
            mouse    = new MouseController(this);
            keyboard = new KeyboardController(this);

            Initialize();

            this.EventSubscribe <TimePreUpdateEvent>(e =>
            {
                foreach (var player in players)
                {
                    var actions = (List <IInputAction>)player.Actions;

                    foreach (InputAction action in actions)
                    {
                        action.Update(e.DeltaTime);
                    }
                }

                Update();
            });
        }
예제 #13
0
 /// <summary>Initializes a new instance of the <see cref="T:System.Object" /> class.</summary>
 public FluentInvoker(IMouseController mouseController, IExtendedKeyboardController keyboardController)
 {
     MouseController    = mouseController;
     KeyboardController = keyboardController;
 }
예제 #14
0
 protected override int OnHitTest(int rowIndex, int colIndex, MouseEventArgs e, IMouseController controller)
 {
     if (e.Button != MouseButtons.None)
     {
         //return a cell hit so OnMouseDown will be called later
         return(GridHitTestContext.Cell);
     }
     else
     {
         return(0);
     }
 }
예제 #15
0
        /// <summary>
        /// Initialize a new instance of the ViewDrawNavCheckButtonBase class.
        /// </summary>
        /// <param name="navigator">Owning navigator instance.</param>
        /// <param name="page">Page this check button represents.</param>
        /// <param name="orientation">Orientation for the check button.</param>
        /// <param name="stateDisabled">Source for disabled state values.</param>
        /// <param name="stateNormal">Source for normal state values.</param>
        /// <param name="stateTracking">Source for tracking state values.</param>
        /// <param name="statePressed">Source for pressed state values.</param>
        /// <param name="stateSelected">Source for selected state values.</param>
        /// <param name="stateFocused">Source for focused state values.</param>
        public ViewDrawNavCheckButtonBase(KryptonNavigator navigator,
                                          KryptonPage page,
                                          VisualOrientation orientation,
                                          IPaletteTriple stateDisabled,
                                          IPaletteTriple stateNormal,
                                          IPaletteTriple stateTracking,
                                          IPaletteTriple statePressed,
                                          IPaletteTriple stateSelected,
                                          IPaletteTriple stateFocused)
            : base(stateDisabled, stateNormal, stateTracking,
                   statePressed, null, null, orientation, true)
        {
            Debug.Assert(navigator != null);

            Navigator  = navigator;
            _page      = page;
            _lastClick = DateTime.Now.AddDays(-1);

            // Associate the page component with this view element
            Component = page;

            // Prevent user from unchecking the selected check button
            AllowUncheck = false;

            // Set the source for values to ourself
            ButtonValues = this;

            // Create a controller for managing button behavior
            IMouseController controller = CreateMouseController();

            MouseController = controller;

            // Create overrides for getting the focus values
            _overrideDisabled = new PaletteTripleOverride(stateFocused, stateDisabled, PaletteState.FocusOverride);
            _overrideNormal   = new PaletteTripleOverride(stateFocused, stateNormal, PaletteState.FocusOverride);
            _overrideTracking = new PaletteTripleOverride(stateFocused, stateTracking, PaletteState.FocusOverride);
            _overridePressed  = new PaletteTripleOverride(stateFocused, statePressed, PaletteState.FocusOverride);
            _overrideSelected = new PaletteTripleOverride(stateFocused, stateSelected, PaletteState.FocusOverride);

            // Push values into the base class
            SetPalettes(_overrideDisabled, _overrideNormal, _overrideTracking, _overridePressed);
            SetCheckedPalettes(_overrideSelected, _overrideSelected, _overrideSelected);

            // Are we allowed to add button specs to the button?
            if (AllowButtonSpecs)
            {
                // Create button specification collection manager
                ButtonSpecManager = new ButtonSpecNavManagerLayoutBar(Navigator, Navigator.InternalRedirector, Page.ButtonSpecs, null,
                                                                      new ViewLayoutDocker[] { LayoutDocker },
                                                                      new IPaletteMetric[] { Navigator.StateCommon },
                                                                      new PaletteMetricInt[] { PaletteMetricInt.PageButtonInset },
                                                                      new PaletteMetricInt[] { PaletteMetricInt.PageButtonInset },
                                                                      new PaletteMetricPadding[] { PaletteMetricPadding.PageButtonPadding },
                                                                      Navigator.CreateToolStripRenderer,
                                                                      null)
                {
                    // Hook up the tooltip manager so that tooltips can be generated
                    ToolTipManager = Navigator.ToolTipManager
                };

                // Allow derived classes to update the remapping with different values
                UpdateButtonSpecMapping();
            }
        }
예제 #16
0
    public static Vector2Int GetPosition(this IMouseController mouseController)
    {
        mouseController.GetPosition(out int mouseX, out int mouseY);

        return(new Vector2Int(mouseX, mouseY));
    }
예제 #17
0
        protected override int OnHitTest(int rowIndex, int colIndex, MouseEventArgs e, IMouseController controller)
        {
            //return a nonzero so the mouse messages will be forwarded to the cell render
            //but don't include the cell borders so D&D can be handled
            if (controller != null && controller.Name == "OleDataSource")
            {
                // other controllers have higher priority than me
                return(0);
            }

            return(1);
        }
예제 #18
0
    public static Vector2 GetPositionDelta(this IMouseController mouseController)
    {
        mouseController.GetPositionDelta(out float mouseX, out float mouseY);

        return(new Vector2(mouseX, mouseY));
    }
예제 #19
0
 [SetUp] public void Init()
 {
     this.imcon = GetEffectMock();
     this.mcon  = GetControllerMock(imcon);
 }
 /// <implement/>
 public virtual int HitTest(MouseEventArgs e, IMouseController controller)
 {
     clickCellsControllerHitTest = clickCellsController.HitTest(e, controller);
     return(clickCellsControllerHitTest);
 }
예제 #21
0
 public void SetMouseController(IMouseController imcon)
 {
     this.imcon = imcon;
 }