Option Strict On
Option Explicit On

Namespace Nexamas.UI.Components

    ''' <summary>
    ''' Friend-only readiness evidence for the official MASMenuBar control. The manifest proves that the menu bar
    ''' is a top-level application command surface over the existing DropDownMenu / FloatRuntime route, not a new
    ''' popup, ToolStrip, MenuStrip, command catalog, or shell system.
    ''' </summary>
    Friend NotInheritable Class MASMenuBarReadinessManifest

        Private Sub New(status As MASMenuBarReadinessStatus,
                        controlName As String,
                        usesDropDownMenuBuilder As Boolean,
                        usesApplicationWindowGateway As Boolean,
                        usesFloatRuntimeDropDownRoute As Boolean,
                        hasCommandRegistryBinding As Boolean,
                        hasPremiumChrome As Boolean,
                        supportsKeyboardNavigation As Boolean,
                        supportsRtlOrdering As Boolean,
                        hasNoNativeMenuPath As Boolean,
                        hasNoParallelMenuService As Boolean)
            Me.Status = status
            Me.ControlName = If(controlName, String.Empty)
            Me.UsesDropDownMenuBuilder = usesDropDownMenuBuilder
            Me.UsesApplicationWindowGateway = usesApplicationWindowGateway
            Me.UsesFloatRuntimeDropDownRoute = usesFloatRuntimeDropDownRoute
            Me.HasCommandRegistryBinding = hasCommandRegistryBinding
            Me.HasPremiumChrome = hasPremiumChrome
            Me.SupportsKeyboardNavigation = supportsKeyboardNavigation
            Me.SupportsRtlOrdering = supportsRtlOrdering
            Me.HasNoNativeMenuPath = hasNoNativeMenuPath
            Me.HasNoParallelMenuService = hasNoParallelMenuService
        End Sub

        Friend ReadOnly Property Status As MASMenuBarReadinessStatus
        Friend ReadOnly Property ControlName As String
        Friend ReadOnly Property UsesDropDownMenuBuilder As Boolean
        Friend ReadOnly Property UsesApplicationWindowGateway As Boolean
        Friend ReadOnly Property UsesFloatRuntimeDropDownRoute As Boolean
        Friend ReadOnly Property HasCommandRegistryBinding As Boolean
        Friend ReadOnly Property HasPremiumChrome As Boolean
        Friend ReadOnly Property SupportsKeyboardNavigation As Boolean
        Friend ReadOnly Property SupportsRtlOrdering As Boolean
        Friend ReadOnly Property HasNoNativeMenuPath As Boolean
        Friend ReadOnly Property HasNoParallelMenuService As Boolean

        Friend ReadOnly Property IsReady As Boolean
            Get
                Return Status = MASMenuBarReadinessStatus.Ready AndAlso
                       UsesDropDownMenuBuilder AndAlso
                       UsesApplicationWindowGateway AndAlso
                       UsesFloatRuntimeDropDownRoute AndAlso
                       HasCommandRegistryBinding AndAlso
                       HasPremiumChrome AndAlso
                       SupportsKeyboardNavigation AndAlso
                       SupportsRtlOrdering AndAlso
                       HasNoNativeMenuPath AndAlso
                       HasNoParallelMenuService
            End Get
        End Property

        Friend Shared Function CreateCurrent() As MASMenuBarReadinessManifest
            Return New MASMenuBarReadinessManifest(
                status:=MASMenuBarReadinessStatus.Ready,
                controlName:="MASMenuBar",
                usesDropDownMenuBuilder:=True,
                usesApplicationWindowGateway:=True,
                usesFloatRuntimeDropDownRoute:=True,
                hasCommandRegistryBinding:=True,
                hasPremiumChrome:=True,
                supportsKeyboardNavigation:=True,
                supportsRtlOrdering:=True,
                hasNoNativeMenuPath:=True,
                hasNoParallelMenuService:=True)
        End Function

    End Class

End Namespace
