Option Strict On
Option Explicit On

Imports System
Imports System.Collections.Generic
Imports System.Globalization
Imports System.Windows.Forms
Imports Nexamas.UI.Architecture
Imports Nexamas.UI.Composition
Imports Nexamas.UI.Controls
Imports Nexamas.UI.General
Imports Nexamas.UI.Layout
Imports Nexamas.UI.Rendering
Imports Nexamas.UI.TextRendering
Imports Nexamas.UI.Theming
Imports Nexamas.UI.Values
Imports SkiaSharp

Namespace Nexamas.UI.Components

    Partial Public NotInheritable Class MASDataForm

#Region "Input"

        Protected Overrides Function OnMouseDown(ctx As MASThemeContext,
                                                 ptPx As SKPoint,
                                                 button As Integer) As Boolean
            If button <> CInt(MouseButtons.Left) Then Return False
            If Not Enabled Then Return False
            RequestFocus()
            SetFocusedFieldInternal(HitFieldIndex(ptPx), True)
            Return True
        End Function

        Protected Overrides Function OnKeyDown(ctx As MASThemeContext,
                                               keyCode As Keys) As Boolean
            If Not Enabled OrElse _fields.Count = 0 Then Return False

            Select Case keyCode
                Case Keys.Up, Keys.Left
                    MoveFocusedField(-1)
                    Return True
                Case Keys.Down, Keys.Right
                    MoveFocusedField(1)
                    Return True
                Case Keys.PageUp
                    MoveFocusedField(-5)
                    Return True
                Case Keys.PageDown
                    MoveFocusedField(5)
                    Return True
                Case Keys.Home
                    SetFocusedFieldInternal(0, True)
                    Return True
                Case Keys.End
                    SetFocusedFieldInternal(_fields.Count - 1, True)
                    Return True
                Case Keys.Escape
                    SetFocusedFieldInternal(-1, True)
                    Return True
            End Select

            Return False
        End Function

        Protected Overrides Function WantsKeyboardFocus() As Boolean
            Return Visible AndAlso Enabled
        End Function

        Protected Overrides Function WantsPointerFocus() As Boolean
            Return WantsKeyboardFocus()
        End Function

#End Region

    End Class

End Namespace
