Example #1
0
        // Constructor
        public Widget(IWidgetContainer container)
        {
            _focused = false;
            _enabled = true;

            _currentMouse = Core.Components.Require<Mouse>();
            _lastMouse = new MouseEventArgs(_currentMouse);

            Visible = true;
            Opacity = 1.0f;

            Tag = string.Empty;
            Name = GetType().Name + GetHashCode();

            Position = new Vector2(0, 0);

            Container = container;
            Container.Widgets.Add(this);
            Widgets = new List<Widget>();

            OnLoad();
        }
Example #2
0
 // Constructor
 public MouseEventArgs(Mouse mouse)
 {
     Position = new Vector2(mouse.X, mouse.Y);
     PressedButton = mouse.PressedButton;
 }
Example #3
0
        public void Update(float elapsed)
        {
            if (Enabled)
            {
                // create widgnet if dirty
                if (_dirty)
                {
                    OnCreateWidget();
                    _dirty = false;
                }

                // get current device info
                #region Update Mouse Events
                _currentMouse = Core.Components.Require<Mouse>();

                var mouseEvent = new MouseEventArgs(_currentMouse);
                var mouseIn = Bounds.Contains(new Vector2(_currentMouse.Position.X, _currentMouse.Position.Y));

                // mouse enter / leave
                if (!_containsMouse && mouseIn)
                {
                    OnMouseEnter(mouseEvent);
                }
                else if (_containsMouse && !mouseIn)
                {
                    OnMouseLeave(mouseEvent);

                    _mouseDown = false;
                    _mouseUp = false;
                }

                _containsMouse = mouseIn;

                if (_containsMouse && _currentMouse.PressedButton == MouseButton.Left)
                {
                    OnMouseDown(mouseEvent);
                    State = WidgetState.Clicked;
                }
                else if (_containsMouse && _currentMouse.PressedButton != MouseButton.Left)
                {
                    if (_lastMouse.PressedButton == MouseButton.Left)
                    {
                        OnClick(mouseEvent);
                        OnMouseUp(mouseEvent);
                    }
                    State = WidgetState.Hover;
                }
                else if (Focused)
                {
                    State = WidgetState.Focused;
                }
                else if (Enabled)
                {
                    State = WidgetState.Normal;
                }
                else
                {
                    State = WidgetState.Disabled;
                }

                if (_mouseDown && _mouseUp)
                {
                    //OnClick(mouseEvent);

                    Focused = true;

                    _mouseDown = false;
                    _mouseUp = false;
                }
                #endregion

                _gotFocus = false;
                _lastMouse = new MouseEventArgs(_currentMouse);

                Widgets.ForEach(widget => widget.Update(elapsed));
            }
            else
            {
                State = WidgetState.Disabled;
            }
            OnUpdate();
        }