Option Strict On
Option Explicit On

Namespace Nexamas.UI.Components

    ''' <summary>
    ''' Friend-only evidence for MASTimePicker round-01 refinement. The manifest records that
    ''' time selection stays on the official trigger + Friend clock view + FloatRuntime route,
    ''' with culture-aware 12/24-hour formatting/parsing and keyboard/step/range policy owned
    ''' by the TimePicker itself.
    ''' </summary>
    Friend NotInheritable Class MASTimePickerReadinessManifest
        Private Sub New(status As MASTimePickerReadinessStatus,
                        controlName As String,
                        hasOfficialFloatPopup As Boolean,
                        hasFriendClockContent As Boolean,
                        hasCultureDisplayAndParse As Boolean,
                        hasKeyboardTimeTraversal As Boolean,
                        hasStepAndRangeClampPolicy As Boolean,
                        hasInlineManualEditSurface As Boolean,
                        hasManualEditCommitValidation As Boolean,
                        hasPreciseNowAction As Boolean,
                        hasConstrainedDigitManualEdit As Boolean,
                        hasCultureClockFormatPolicy As Boolean,
                        hasCommitClosePolicy As Boolean,
                        hasCompletedDigitAutoCommitPolicy As Boolean,
                        hasNoParallelClockOrNativeWrapper As Boolean)
            Me.Status = status
            Me.ControlName = If(controlName, String.Empty)
            Me.HasOfficialFloatPopup = hasOfficialFloatPopup
            Me.HasFriendClockContent = hasFriendClockContent
            Me.HasCultureDisplayAndParse = hasCultureDisplayAndParse
            Me.HasKeyboardTimeTraversal = hasKeyboardTimeTraversal
            Me.HasStepAndRangeClampPolicy = hasStepAndRangeClampPolicy
            Me.HasInlineManualEditSurface = hasInlineManualEditSurface
            Me.HasManualEditCommitValidation = hasManualEditCommitValidation
            Me.HasPreciseNowAction = hasPreciseNowAction
            Me.HasConstrainedDigitManualEdit = hasConstrainedDigitManualEdit
            Me.HasCultureClockFormatPolicy = hasCultureClockFormatPolicy
            Me.HasCommitClosePolicy = hasCommitClosePolicy
            Me.HasCompletedDigitAutoCommitPolicy = hasCompletedDigitAutoCommitPolicy
            Me.HasNoParallelClockOrNativeWrapper = hasNoParallelClockOrNativeWrapper
        End Sub

        Friend ReadOnly Property Status As MASTimePickerReadinessStatus
        Friend ReadOnly Property ControlName As String
        Friend ReadOnly Property HasOfficialFloatPopup As Boolean
        Friend ReadOnly Property HasFriendClockContent As Boolean
        Friend ReadOnly Property HasCultureDisplayAndParse As Boolean
        Friend ReadOnly Property HasKeyboardTimeTraversal As Boolean
        Friend ReadOnly Property HasStepAndRangeClampPolicy As Boolean
        Friend ReadOnly Property HasInlineManualEditSurface As Boolean
        Friend ReadOnly Property HasManualEditCommitValidation As Boolean
        Friend ReadOnly Property HasPreciseNowAction As Boolean
        Friend ReadOnly Property HasConstrainedDigitManualEdit As Boolean
        Friend ReadOnly Property HasCultureClockFormatPolicy As Boolean
        Friend ReadOnly Property HasCommitClosePolicy As Boolean
        Friend ReadOnly Property HasCompletedDigitAutoCommitPolicy As Boolean
        Friend ReadOnly Property HasNoParallelClockOrNativeWrapper As Boolean

        Friend ReadOnly Property IsReady As Boolean
            Get
                Return Status = MASTimePickerReadinessStatus.Ready AndAlso
                       HasOfficialFloatPopup AndAlso
                       HasFriendClockContent AndAlso
                       HasCultureDisplayAndParse AndAlso
                       HasKeyboardTimeTraversal AndAlso
                       HasStepAndRangeClampPolicy AndAlso
                       HasInlineManualEditSurface AndAlso
                       HasManualEditCommitValidation AndAlso
                       HasPreciseNowAction AndAlso
                       HasConstrainedDigitManualEdit AndAlso
                       HasCultureClockFormatPolicy AndAlso
                       HasCommitClosePolicy AndAlso
                       HasCompletedDigitAutoCommitPolicy AndAlso
                       HasNoParallelClockOrNativeWrapper
            End Get
        End Property

        Friend Shared Function CreateCurrent() As MASTimePickerReadinessManifest
            Return New MASTimePickerReadinessManifest(
                status:=MASTimePickerReadinessStatus.Ready,
                controlName:="MASTimePicker",
                hasOfficialFloatPopup:=True,
                hasFriendClockContent:=True,
                hasCultureDisplayAndParse:=True,
                hasKeyboardTimeTraversal:=True,
                hasStepAndRangeClampPolicy:=True,
                hasInlineManualEditSurface:=True,
                hasManualEditCommitValidation:=True,
                hasPreciseNowAction:=True,
                hasConstrainedDigitManualEdit:=True,
                hasCultureClockFormatPolicy:=True,
                hasCommitClosePolicy:=True,
                hasCompletedDigitAutoCommitPolicy:=True,
                hasNoParallelClockOrNativeWrapper:=True)
        End Function
    End Class

End Namespace
