Option Strict On
Option Explicit On

Namespace Nexamas.UI.Components.DropDownMenu

    ''' <summary>
    ''' Friend-only evidence that the legacy menu/context-menu family has been premium-aligned
    ''' without replacing the established public menu DSL or Application facade routes.
    ''' </summary>
    Friend NotInheritable Class MASMenuContextFlyoutPremiumAlignmentManifest

        Private Sub New(name As String,
                        status As MASMenuContextFlyoutPremiumAlignmentStatus,
                        preservesPublicMenuApi As Boolean,
                        usesDropDownMenuBuilder As Boolean,
                        contextMenusUseFloatRuntime As Boolean,
                        dropDownMenusUseFloatRuntime As Boolean,
                        menuButtonKeepsToolboxContract As Boolean,
                        menuButtonUsesPremiumChrome As Boolean,
                        hasNoParallelMenuService As Boolean,
                        hasNoNativeContextMenuPath As Boolean)

            Me.Name = If(name, String.Empty)
            Me.Status = status
            Me.PreservesPublicMenuApi = preservesPublicMenuApi
            Me.UsesDropDownMenuBuilder = usesDropDownMenuBuilder
            Me.ContextMenusUseFloatRuntime = contextMenusUseFloatRuntime
            Me.DropDownMenusUseFloatRuntime = dropDownMenusUseFloatRuntime
            Me.MenuButtonKeepsToolboxContract = menuButtonKeepsToolboxContract
            Me.MenuButtonUsesPremiumChrome = menuButtonUsesPremiumChrome
            Me.HasNoParallelMenuService = hasNoParallelMenuService
            Me.HasNoNativeContextMenuPath = hasNoNativeContextMenuPath
        End Sub

        Friend ReadOnly Property Name As String
        Friend ReadOnly Property Status As MASMenuContextFlyoutPremiumAlignmentStatus
        Friend ReadOnly Property PreservesPublicMenuApi As Boolean
        Friend ReadOnly Property UsesDropDownMenuBuilder As Boolean
        Friend ReadOnly Property ContextMenusUseFloatRuntime As Boolean
        Friend ReadOnly Property DropDownMenusUseFloatRuntime As Boolean
        Friend ReadOnly Property MenuButtonKeepsToolboxContract As Boolean
        Friend ReadOnly Property MenuButtonUsesPremiumChrome As Boolean
        Friend ReadOnly Property HasNoParallelMenuService As Boolean
        Friend ReadOnly Property HasNoNativeContextMenuPath As Boolean

        Friend ReadOnly Property IsPremiumAligned As Boolean
            Get
                Return Status = MASMenuContextFlyoutPremiumAlignmentStatus.PremiumAligned AndAlso
                       PreservesPublicMenuApi AndAlso
                       UsesDropDownMenuBuilder AndAlso
                       ContextMenusUseFloatRuntime AndAlso
                       DropDownMenusUseFloatRuntime AndAlso
                       MenuButtonKeepsToolboxContract AndAlso
                       MenuButtonUsesPremiumChrome AndAlso
                       HasNoParallelMenuService AndAlso
                       HasNoNativeContextMenuPath
            End Get
        End Property

        Friend Shared Function CreateCurrent() As MASMenuContextFlyoutPremiumAlignmentManifest
            Return New MASMenuContextFlyoutPremiumAlignmentManifest(
                name:="MAS Menu / ContextMenu / Flyout Premium Alignment",
                status:=MASMenuContextFlyoutPremiumAlignmentStatus.PremiumAligned,
                preservesPublicMenuApi:=True,
                usesDropDownMenuBuilder:=True,
                contextMenusUseFloatRuntime:=True,
                dropDownMenusUseFloatRuntime:=True,
                menuButtonKeepsToolboxContract:=True,
                menuButtonUsesPremiumChrome:=True,
                hasNoParallelMenuService:=True,
                hasNoNativeContextMenuPath:=True)
        End Function

    End Class

End Namespace
