Esempio n. 1
0
        /// <summary>
        /// Processes the mouse. If allowed, will move the console around with the mouse.
        /// </summary>
        /// <param name="info">The mouse state.</param>
        /// <returns></returns>
        public override bool ProcessMouse(Input.MouseInfo info)
        {
            if (_titleWidth != 0 && _isVisible)
            {
                info.Fill(this);

                if (_isDragging && info.LeftButtonDown)
                {
                    if (base.UseAbsolutePositioning)
                    {
                        Position = new Point(info.ScreenLocation.X - (_previousMouseInfo.ScreenLocation.X - _consoleAtDragAbsPos.X), info.ScreenLocation.Y - (_previousMouseInfo.ScreenLocation.Y - _consoleAtDragAbsPos.Y));
                    }
                    else
                    {
                        Position = new Point(info.WorldLocation.X - _previousMouseInfo.ConsoleLocation.X, info.WorldLocation.Y - _previousMouseInfo.ConsoleLocation.Y);
                    }

                    return(true);
                }

                // Stopped dragging
                if (_isDragging && !info.LeftButtonDown)
                {
                    _isDragging    = false;
                    ExclusiveFocus = _prevousMouseExclusiveDrag;
                    return(true);
                }

                // Left button freshly down and we're not already dragging, check to see if in title
                if (!_isDragging && !_previousMouseInfo.LeftButtonDown && info.LeftButtonDown)
                {
                    if (info.ConsoleLocation.Y == 0 && info.ConsoleLocation.X >= _titleLocationX && info.ConsoleLocation.X < _titleLocationX + _titleWidth)
                    {
                        _prevousMouseExclusiveDrag = ExclusiveFocus;

                        // Mouse is in the title bar
                        ExclusiveFocus       = true;
                        _isDragging          = true;
                        _consoleAtDragAbsPos = base.Position;

                        if (this.MouseCanFocus)
                        {
                            if (Engine.ActiveConsole != this)
                            {
                                Engine.ActiveConsole = this;
                            }

                            if (this.Parent != null && this.Parent.IndexOf(this) != this.Parent.Count - 1)
                            {
                                this.Parent.MoveToTop(this);
                            }
                        }
                    }
                }

                _previousMouseInfo = info.Clone();
            }

            return(base.ProcessMouse(info));
        }
        /// <summary>
        /// Processes the mouse for the console.
        /// </summary>
        /// <param name="info">Mouse information sent by the engine.</param>
        /// <returns>True when the mouse is over this console and it is the active console; otherwise false.</returns>
        public override bool ProcessMouse(Input.MouseInfo info)
        {
            if (base.ProcessMouse(info) && info.Console == this && (Engine.ActiveConsole == this || ProcessMouseWithoutFocus))
            {
                if (_capturedControl != null)
                {
                    _capturedControl.ProcessMouse(info);
                }

                else
                {
                    for (int i = 0; i < _controls.Count; i++)
                    {
                        if (_controls[i].IsVisible && _controls[i].ProcessMouse(info))
                        {
                            break;
                        }
                    }
                }

                return(true);
            }

            return(false);
        }
Esempio n. 3
0
        public virtual bool ProcessMouse(Input.MouseInfo info)
        {
            info.Console = null;

            if (IsVisible)
            {
                var copyList = new List <IConsole>(_consoles);

                for (int i = copyList.Count - 1; i >= 0; i--)
                {
                    if (copyList[i].ProcessMouse(info))
                    {
                        //var console = this[i];
                        // TODO: Update this to only move console to front if either setting says to, and\or when console is clicked.
                        // TODO: Console that was true with process mouse should be set as active console. (info.Console)
                        //if (i != Count - 1)
                        //{
                        //    this.Remove(console);
                        //    this.Add(console);
                        //}
                        return(true);
                    }
                }
            }

            return(false);
        }
Esempio n. 4
0
        /// <summary>
        /// Called when the left-mouse button is clicked.
        /// </summary>
        /// <param name="info">The mouse state.</param>
        protected override void OnLeftMouseClicked(Input.MouseInfo info)
        {
            base.OnLeftMouseClicked(info);

            if (isEnabled)
            {
                DoClick();
            }
        }
Esempio n. 5
0
        /// <summary>
        /// Called when the right mouse button is clicked. Raises the MouseButtonClicked event and calls the <see cref="DetermineAppearance"/> method.
        /// </summary>
        /// <param name="info">The current mouse data</param>
        protected virtual void OnRightMouseClicked(Input.MouseInfo info)
        {
            if (MouseButtonClicked != null)
            {
                MouseButtonClicked(this, new MouseEventArgs(info));
            }

            DetermineAppearance();
        }
Esempio n. 6
0
        /// <summary>
        /// Called as the mouse moves around the control area. Raises the MouseMove event and calls the <see cref="DetermineAppearance"/> method.
        /// </summary>
        /// <param name="info">The current mouse data</param>
        protected virtual void OnMouseIn(Input.MouseInfo info)
        {
            if (MouseMove != null)
            {
                MouseMove(this, new MouseEventArgs(info));
            }

            DetermineAppearance();
        }
Esempio n. 7
0
        protected override void OnLeftMouseClicked(Input.MouseInfo info)
        {
            base.OnLeftMouseClicked(info);

            if (isEnabled)
            {
                IsSelected = true;
            }
        }
Esempio n. 8
0
        /// <summary>
        /// Called when the left mouse button is clicked. Raises the MouseButtonClicked event and calls the <see cref="DetermineAppearance"/> method.
        /// </summary>
        /// <param name="info">The current mouse data</param>
        protected virtual void OnLeftMouseClicked(Input.MouseInfo info)
        {
            if (MouseButtonClicked != null)
            {
                MouseButtonClicked(this, new MouseEventArgs(info));
            }

            if (FocusOnClick)
            {
                this.IsFocused = true;
            }

            DetermineAppearance();
        }
        protected override void OnMouseExit(Input.MouseInfo info)
        {
            base.OnMouseExit(info);

            for (int i = 0; i < _controls.Count; i++)
            {
                if (_controls[i].IsVisible && _controls[i].ProcessMouse(info))
                {
                    break;
                }
            }

            //if (_focusedControl != null)
            //_focusedControl.ProcessMouse(info);
        }
Esempio n. 10
0
        /// <summary>
        /// Checks if the mouse is the control and calls the appropriate mouse methods.
        /// </summary>
        /// <param name="info">Mouse information.</param>
        /// <returns>Always returns false.</returns>
        public virtual bool ProcessMouse(Input.MouseInfo info)
        {
            if (IsEnabled && CanUseMouse)
            {
                if (info.ConsoleLocation.X >= Position.X && info.ConsoleLocation.X < Position.X + Width &&
                    info.ConsoleLocation.Y >= Position.Y && info.ConsoleLocation.Y < Position.Y + Height)
                {
                    if (_isMouseOver != true)
                    {
                        _isMouseOver = true;
                        OnMouseEnter(info);
                    }

                    OnMouseIn(info);

                    if (info.LeftClicked)
                    {
                        OnLeftMouseClicked(info);
                    }

                    if (info.RightClicked)
                    {
                        OnRightMouseClicked(info);
                    }
                }
                else
                {
                    if (_isMouseOver)
                    {
                        _isMouseOver = false;
                        OnMouseExit(info);
                    }
                }
            }

            return(false);
        }
Esempio n. 11
0
        /// <summary>
        /// Called when the mouse leaves the control area.
        /// </summary>
        /// <param name="info">The mouse state.</param>
        protected override void OnMouseExit(Input.MouseInfo info)
        {
            isMouseDown = false;

            base.OnMouseExit(info);
        }
Esempio n. 12
0
        /// <summary>
        /// Called when the mouse is in the control area.
        /// </summary>
        /// <param name="info">The mouse state.</param>
        protected override void OnMouseIn(Input.MouseInfo info)
        {
            isMouseDown = info.LeftButtonDown;

            base.OnMouseIn(info);
        }
Esempio n. 13
0
 /// <summary>
 /// Helper method that returns the mouse x,y position for the control.
 /// </summary>
 /// <param name="info">The mouse information as used by a mouse event.</param>
 /// <returns>The x,y position of the mouse over the control.</returns>
 protected Point TransformConsolePositionByControlPosition(Input.MouseInfo info)
 {
     return(new Point(info.ConsoleLocation.X - this.Position.X, info.ConsoleLocation.Y - this.Position.Y));
 }
Esempio n. 14
0
 public virtual bool ProcessMouse(Input.MouseInfo info)
 {
     return(false);
 }
Esempio n. 15
0
        protected override void OnMouseIn(Input.MouseInfo info)
        {
            isMouseOver = true;

            base.OnMouseIn(info);
        }
Esempio n. 16
0
        // Locking the mouse to this control is actually locking the parent console to the engine, and then
        // letting the controls console know that this control wants exclusive focus until mouse is unclicked.

        public override bool ProcessMouse(Input.MouseInfo info)
        {
            if (IsEnabled)
            {
                base.ProcessMouse(info);


                var mouseControlPosition = new Point(info.ConsoleLocation.X - this.Position.X, info.ConsoleLocation.Y - this.Position.Y);

                // This becomes the active mouse subject when the bar is being dragged.
                if (Parent.CapturedControl == null)
                {
                    if (info.ConsoleLocation.X >= this.Position.X && info.ConsoleLocation.X < this.Position.X + textSurface.Width &&
                        info.ConsoleLocation.Y >= this.Position.Y && info.ConsoleLocation.Y < this.Position.Y + textSurface.Height)
                    {
                        if (info.LeftClicked)
                        {
                            if (_barOrientation == System.Windows.Controls.Orientation.Horizontal)
                            {
                                if (mouseControlPosition.X == 0)
                                {
                                    Value -= Step;
                                }
                                if (mouseControlPosition.X == textSurface.Width - 1)
                                {
                                    Value += Step;
                                }
                            }
                            else
                            {
                                if (mouseControlPosition.Y == 0)
                                {
                                    Value -= Step;
                                }
                                if (mouseControlPosition.Y == textSurface.Height - 1)
                                {
                                    Value += Step;
                                }
                            }

                            Parent.FocusedControl = this;
                        }

                        // Need to set a flag signalling that we've locked in a drag.
                        // When the mouse button is let go, clear the flag.
                        if (info.LeftButtonDown)
                        {
                            if (_barOrientation == System.Windows.Controls.Orientation.Horizontal)
                            {
                                if (mouseControlPosition.Y == 0)
                                {
                                    if (mouseControlPosition.X == _currentSliderPosition + 1)
                                    {
                                        Parent.CaptureControl(this);
                                    }
                                }
                            }
                            else
                            {
                                if (mouseControlPosition.X == 0)
                                {
                                    if (mouseControlPosition.Y == _currentSliderPosition + 1)
                                    {
                                        Parent.CaptureControl(this);
                                    }
                                }
                            }

                            Parent.FocusedControl = this;
                        }

                        return(true);
                    }
                }
                else if (Parent.CapturedControl == this)
                {
                    if (info.ConsoleLocation.X >= this.Position.X - 2 && info.ConsoleLocation.X < this.Position.X + textSurface.Width + 2 &&
                        info.ConsoleLocation.Y >= this.Position.Y - 3 && info.ConsoleLocation.Y < this.Position.Y + textSurface.Height + 3)
                    {
                        if (info.LeftButtonDown)
                        {
                            if (_barOrientation == System.Windows.Controls.Orientation.Horizontal)
                            {
                                //if (mouseControlPosition.Y == 0)
                                //{
                                //    if (mouseControlPosition.X == _currentSliderPosition + 1)
                                //        Value -= Step;
                                //}


                                if (mouseControlPosition.X >= 1 && mouseControlPosition.X <= _sliderBarSize)
                                {
                                    _currentSliderPosition = mouseControlPosition.X - 1;

                                    if (_sliderPositionValues[_currentSliderPosition] != -1)
                                    {
                                        _value = _sliderPositionValues[_currentSliderPosition];
                                        if (ValueChanged != null)
                                        {
                                            ValueChanged.Invoke(this, EventArgs.Empty);
                                        }

                                        this.IsDirty = true;
                                    }
                                }
                            }
                            else
                            {
                                if (mouseControlPosition.Y >= 1 && mouseControlPosition.Y <= _sliderBarSize)
                                {
                                    _currentSliderPosition = mouseControlPosition.Y - 1;

                                    if (_sliderPositionValues[_currentSliderPosition] != -1)
                                    {
                                        _value = _sliderPositionValues[_currentSliderPosition];
                                        if (ValueChanged != null)
                                        {
                                            ValueChanged.Invoke(this, EventArgs.Empty);
                                        }

                                        this.IsDirty = true;
                                    }
                                }
                            }

                            return(true);
                        }
                        else
                        {
                            Parent.ReleaseControl();
                        }

                        return(false);
                    }
                }

                //else if(Parent.CapturedControl == this && !info.LeftButtonDown)
                //{
                //    Parent.ReleaseControl();
                //}
            }

            return(false);
        }