Option Strict On
Option Explicit On

Imports Nexamas.UI.Controls
Imports SkiaSharp

Namespace Nexamas.UI.Components

    Partial Public NotInheritable Class MASSplitView

#Region "Friend real host adoption sample proof"

        Friend Function CreateRealHostAdoptionSampleSnapshot() As MASRouteShellHostAdoptionSampleSnapshot
            Dim boundary As MASRouteShellBoundarySnapshot = CreateShellIntegrationBoundarySnapshot()
            Dim adoption As MASRouteShellHostAdoptionSnapshot = CreateHostAdoptionProofSnapshot()
            Return MASRouteShellHostAdoptionSamplePolicy.CreateSplitViewSample(boundary,
                                                                               adoption,
                                                                               CreateLayoutSnapshot(),
                                                                               CreateHostedPaneContentSnapshot(),
                                                                               CreateKeyboardSplitterSnapshot(),
                                                                               focusScenarioVerified:=True,
                                                                               announcementScenarioVerified:=True)
        End Function

        Friend Function HasRealHostAdoptionSampleForTests() As Boolean
            ResetPaneLayout()
            Dim left As MASControlBase = MASButton.Create("Host sample left")
            Dim content As MASControlBase = MASButton.Create("Host sample content")
            Dim right As MASControlBase = MASButton.Create("Host sample right")
            If Not HostPaneContent("left", left) Then Return False
            If Not HostPaneContent("content", content) Then Return False
            If Not HostPaneContent("right", right) Then Return False
            PlaceSplitViewHostedContent("left", New SKRect(0.0F, 0.0F, 176.0F, 320.0F), 1.0F, True)
            PlaceSplitViewHostedContent("content", New SKRect(184.0F, 0.0F, 560.0F, 320.0F), 1.0F, True)
            PlaceSplitViewHostedContent("right", New SKRect(568.0F, 0.0F, 760.0F, 320.0F), 1.0F, True)

            If Not ApplyKeyboardSplitterCommand(MASSplitViewKeyboardSplitterCommand.FocusLeftDivider) Then Return False
            If Not ApplyKeyboardSplitterCommand(MASSplitViewKeyboardSplitterCommand.MovePositiveSmall) Then Return False
            Dim focusSnapshot As MASRouteShellHostAdoptionSampleSnapshot = CreateRealHostAdoptionSampleSnapshot()
            Dim focusOk As Boolean = MASRouteShellHostAdoptionSamplePolicy.IsSafeRealHostAdoptionSample(focusSnapshot,
                                                                                                         "splitview",
                                                                                                         "SplitView.RealHostAdoptionSample",
                                                                                                         MASRouteShellBoundaryKind.SplitViewShellIntegrationBoundary) AndAlso
                                 focusSnapshot.ChecksFocusHandoff AndAlso
                                 focusSnapshot.KeepsNativeShellExternal

            If Not ApplyKeyboardSplitterCommand(MASSplitViewKeyboardSplitterCommand.FocusRightDivider) Then Return False
            If Not ApplyKeyboardSplitterCommand(MASSplitViewKeyboardSplitterCommand.CollapseFocusedPane) Then Return False
            If Not ApplyKeyboardSplitterCommand(MASSplitViewKeyboardSplitterCommand.ExpandFocusedPane) Then Return False
            Dim announcementSnapshot As MASRouteShellHostAdoptionSampleSnapshot = CreateRealHostAdoptionSampleSnapshot()
            Dim announcementOk As Boolean = MASRouteShellHostAdoptionSamplePolicy.IsSafeRealHostAdoptionSample(announcementSnapshot,
                                                                                                                "splitview",
                                                                                                                "SplitView.RealHostAdoptionSample",
                                                                                                                MASRouteShellBoundaryKind.SplitViewShellIntegrationBoundary) AndAlso
                                            announcementSnapshot.ChecksAnnouncementIntent AndAlso
                                            announcementSnapshot.HostScenarioCount >= 2

            Dim removed As Boolean = UnhostPaneContent("left", disposeChild:=True)
            removed = UnhostPaneContent("content", disposeChild:=True) AndAlso removed
            removed = UnhostPaneContent("right", disposeChild:=True) AndAlso removed
            Return focusOk AndAlso announcementOk AndAlso removed
        End Function

#End Region

    End Class

End Namespace
