Protogame.FileSelect.HandleEvent C# (CSharp) Method

HandleEvent() public method

public HandleEvent ( ISkinLayout skinLayout, Rectangle layout, IGameContext context, Event @event ) : bool
skinLayout ISkinLayout
layout Microsoft.Xna.Framework.Rectangle
context IGameContext
@event Event
return bool
        public bool HandleEvent(ISkinLayout skinLayout, Rectangle layout, IGameContext context, Event @event)
        {
            var mouseEvent = @event as MouseEvent;
            var mousePressEvent = @event as MousePressEvent;
            var mouseReleaseEvent = @event as MouseReleaseEvent;
            var mouseMoveEvent = @event as MouseMoveEvent;

            if (mouseEvent == null)
            {
                return false;
            }

            if (layout.Contains(mouseEvent.MouseState.X, mouseEvent.MouseState.Y))
            {
                if (mouseMoveEvent != null)
                {
                    State = ButtonUIState.Hover;
                }
                else if (mousePressEvent != null && mousePressEvent.Button == MouseButton.Left)
                {
                    State = ButtonUIState.Clicked;
                    this.Focus();

#if PLATFORM_WINDOWS || PLATFORM_MACOS || PLATFORM_LINUX
                    using (var openFileDialog = new OpenFileDialog())
                    {
                        if (openFileDialog.ShowDialog() == DialogResult.OK)
                        {
                            Path = openFileDialog.FileName;
                            if (Changed != null)
                            {
                                Changed(this, new EventArgs());
                            }
                        }

                        Application.DoEvents();
                    }
#endif

                    return true;
                }
            }
            else
            {
                State = ButtonUIState.None;
            }

            if (mouseReleaseEvent != null && mouseReleaseEvent.Button == MouseButton.Left)
            {
                State = ButtonUIState.None;
            }

            return false;
        }
    }