Option Strict On
Option Explicit On

Namespace Nexamas.UI.Components

    ''' <summary>
    ''' Friend-only readiness evidence for MASPagination. It proves the control is a
    ''' same-surface page navigation visual and not a data pager, query engine, router,
    ''' virtualization owner, popup, adapter, wrapper, or parallel data-navigation system.
    ''' </summary>
    Friend NotInheritable Class MASPaginationReadinessManifest
        Private Sub New(status As MASPaginationReadinessStatus,
                        hasNavigationPolicy As Boolean,
                        hasBoundaryPolicy As Boolean,
                        hasRtlPolicy As Boolean,
                        dataPagerAdapterAbsent As Boolean,
                        virtualizationOwnerAbsent As Boolean)
            Me.Status = status
            Me.HasNavigationPolicy = hasNavigationPolicy
            Me.HasBoundaryPolicy = hasBoundaryPolicy
            Me.HasRtlPolicy = hasRtlPolicy
            Me.DataPagerAdapterAbsent = dataPagerAdapterAbsent
            Me.VirtualizationOwnerAbsent = virtualizationOwnerAbsent
        End Sub

        Friend ReadOnly Property Status As MASPaginationReadinessStatus
        Friend ReadOnly Property HasNavigationPolicy As Boolean
        Friend ReadOnly Property HasBoundaryPolicy As Boolean
        Friend ReadOnly Property HasRtlPolicy As Boolean
        Friend ReadOnly Property DataPagerAdapterAbsent As Boolean
        Friend ReadOnly Property VirtualizationOwnerAbsent As Boolean

        Friend ReadOnly Property IsReady As Boolean
            Get
                Return Status = MASPaginationReadinessStatus.Ready AndAlso
                       HasNavigationPolicy AndAlso
                       HasBoundaryPolicy AndAlso
                       HasRtlPolicy AndAlso
                       DataPagerAdapterAbsent AndAlso
                       VirtualizationOwnerAbsent
            End Get
        End Property

        Friend Shared Function CreateCurrent() As MASPaginationReadinessManifest
            Return New MASPaginationReadinessManifest(
                MASPaginationReadinessStatus.Ready,
                hasNavigationPolicy:=True,
                hasBoundaryPolicy:=True,
                hasRtlPolicy:=True,
                dataPagerAdapterAbsent:=MASPaginationNavigationPolicy.HasNoDataPagerAdapter,
                virtualizationOwnerAbsent:=MASPaginationNavigationPolicy.HasNoVirtualizationOwner)
        End Function
    End Class

End Namespace
