Option Strict On
Option Explicit On

Imports System
Imports System.Windows.Forms

Namespace Nexamas.UI.Components

    ''' <summary>
    ''' Friend-owned selection and interaction policy for MASCheckBox. The public checkbox
    ''' remains a compact Boolean choice control while text normalization, toggle eligibility,
    ''' keyboard semantics, cancel behavior, and hit geometry stay MAS-owned and reusable by
    ''' renderer/gate evidence without adding public API.
    ''' </summary>
    Friend NotInheritable Class MASCheckBoxInteractionPolicy
        Private Sub New()
        End Sub

        Friend Shared Function NormalizeText(value As String) As String
            Return If(value, String.Empty)
        End Function

        Friend Shared Function NormalizeChecked(value As Boolean) As Boolean
            Return value
        End Function

        Friend Shared Function CanInteract(isEnabled As Boolean, isVisible As Boolean) As Boolean
            Return isEnabled AndAlso isVisible
        End Function

        Friend Shared Function WantsKeyboardFocus(isEnabled As Boolean, isVisible As Boolean) As Boolean
            Return CanInteract(isEnabled, isVisible)
        End Function

        Friend Shared Function ShouldToggleFromKey(keyCode As Keys) As Boolean
            Return keyCode = Keys.Space OrElse keyCode = Keys.Enter
        End Function

        Friend Shared Function ShouldCancelFromKey(keyCode As Keys) As Boolean
            Return keyCode = Keys.Escape
        End Function

        Friend Shared Function ResolveNextChecked(currentValue As Boolean) As Boolean
            Return Not currentValue
        End Function

        Friend Shared Function HasReadableLabel(text As String) As Boolean
            Return Not String.IsNullOrWhiteSpace(text)
        End Function
    End Class

End Namespace
