Option Strict On
Option Explicit On

Imports Nexamas.UI.FloatRuntime

Namespace Nexamas.UI.Application

    Friend NotInheritable Class MASApplicationSurfaceContractMapper

        Private Sub New()
        End Sub

        Friend Shared Function ToApplicationCloseReason(reason As MASFloatCloseReason) As MASApplicationCloseReason
            Select Case reason
                Case MASFloatCloseReason.Accepted
                    Return MASApplicationCloseReason.Accepted
                Case MASFloatCloseReason.Cancelled
                    Return MASApplicationCloseReason.Cancelled
                Case MASFloatCloseReason.EscapeKey
                    Return MASApplicationCloseReason.EscapeKey
                Case MASFloatCloseReason.OutsidePointer
                    Return MASApplicationCloseReason.OutsidePointer
                Case MASFloatCloseReason.Replaced
                    Return MASApplicationCloseReason.Replaced
                Case MASFloatCloseReason.OwnerDisposed
                    Return MASApplicationCloseReason.OwnerDisposed
                Case MASFloatCloseReason.CloseAll
                    Return MASApplicationCloseReason.CloseAll
                Case MASFloatCloseReason.SystemShutdown
                    Return MASApplicationCloseReason.SystemShutdown
                Case MASFloatCloseReason.Failed
                    Return MASApplicationCloseReason.Failed
                Case Else
                    Return MASApplicationCloseReason.Programmatic
            End Select
        End Function

        Friend Shared Function ToFloatCloseReason(reason As MASApplicationCloseReason) As MASFloatCloseReason
            Select Case reason
                Case MASApplicationCloseReason.Accepted
                    Return MASFloatCloseReason.Accepted
                Case MASApplicationCloseReason.Cancelled
                    Return MASFloatCloseReason.Cancelled
                Case MASApplicationCloseReason.EscapeKey
                    Return MASFloatCloseReason.EscapeKey
                Case MASApplicationCloseReason.OutsidePointer
                    Return MASFloatCloseReason.OutsidePointer
                Case MASApplicationCloseReason.Replaced
                    Return MASFloatCloseReason.Replaced
                Case MASApplicationCloseReason.OwnerDisposed
                    Return MASFloatCloseReason.OwnerDisposed
                Case MASApplicationCloseReason.CloseAll
                    Return MASFloatCloseReason.CloseAll
                Case MASApplicationCloseReason.SystemShutdown
                    Return MASFloatCloseReason.SystemShutdown
                Case MASApplicationCloseReason.Failed
                    Return MASFloatCloseReason.Failed
                Case Else
                    Return MASFloatCloseReason.Programmatic
            End Select
        End Function

        Friend Shared Function ToApplicationSurfaceState(state As MASFloatState) As MASApplicationSurfaceState
            Select Case state
                Case MASFloatState.Requested
                    Return MASApplicationSurfaceState.Requested
                Case MASFloatState.Opening
                    Return MASApplicationSurfaceState.Opening
                Case MASFloatState.Open
                    Return MASApplicationSurfaceState.Open
                Case MASFloatState.Closing
                    Return MASApplicationSurfaceState.Closing
                Case MASFloatState.Disposed
                    Return MASApplicationSurfaceState.Disposed
                Case Else
                    Return MASApplicationSurfaceState.Closed
            End Select
        End Function

        Friend Shared Function ToApplicationResultStatus(status As MASFloatResultStatus) As MASApplicationResultStatus
            Select Case status
                Case MASFloatResultStatus.Accepted
                    Return MASApplicationResultStatus.Accepted
                Case MASFloatResultStatus.Cancelled
                    Return MASApplicationResultStatus.Cancelled
                Case MASFloatResultStatus.Dismissed
                    Return MASApplicationResultStatus.Dismissed
                Case MASFloatResultStatus.Failed
                    Return MASApplicationResultStatus.Failed
                Case Else
                    Return MASApplicationResultStatus.None
            End Select
        End Function

        Friend Shared Function ToFloatResultStatus(status As MASApplicationResultStatus) As MASFloatResultStatus
            Select Case status
                Case MASApplicationResultStatus.Accepted
                    Return MASFloatResultStatus.Accepted
                Case MASApplicationResultStatus.Cancelled
                    Return MASFloatResultStatus.Cancelled
                Case MASApplicationResultStatus.Dismissed
                    Return MASFloatResultStatus.Dismissed
                Case MASApplicationResultStatus.Failed
                    Return MASFloatResultStatus.Failed
                Case Else
                    Return MASFloatResultStatus.None
            End Select
        End Function

    End Class

End Namespace
