Option Strict On
Option Explicit On

Imports System.Collections.Generic
Imports Nexamas.UI.Theming

Namespace Nexamas.UI.Components

    Friend NotInheritable Class MessageBoxPresets

        Private Sub New()
        End Sub

        Private Shared Function MakeTalButton(text As String,
                                              intent As MASButtonIntent,
                                              isDefault As Boolean,
                                              isEnabled As Boolean) As MASButtonSpec

            Return New MASButtonSpec(
                text:=text,
                personality:=MASButtonPersonality.Tal,
                intent:=intent,
                isDefault:=isDefault,
                isSelected:=False,
                isEnabled:=isEnabled
            )
        End Function

        Friend Shared Function [OK]() As IReadOnlyList(Of MASButtonSpec)
            Return New List(Of MASButtonSpec) From {
                MakeTalButton(
                    text:="OK",
                    intent:=MASButtonIntent.Primary,
                    isDefault:=True,
                    isEnabled:=True)
            }
        End Function

        Friend Shared Function OKCancel() As IReadOnlyList(Of MASButtonSpec)
            Return New List(Of MASButtonSpec) From {
                MakeTalButton(
                    text:="OK",
                    intent:=MASButtonIntent.Primary,
                    isDefault:=True,
                    isEnabled:=True),
                MakeTalButton(
                    text:="Cancel",
                    intent:=MASButtonIntent.Subtle,
                    isDefault:=False,
                    isEnabled:=True)
            }
        End Function

        Friend Shared Function YesNo() As IReadOnlyList(Of MASButtonSpec)
            Return New List(Of MASButtonSpec) From {
                MakeTalButton(
                    text:="Yes",
                    intent:=MASButtonIntent.Primary,
                    isDefault:=True,
                    isEnabled:=True),
                MakeTalButton(
                    text:="No",
                    intent:=MASButtonIntent.Subtle,
                    isDefault:=False,
                    isEnabled:=True)
            }
        End Function

        Friend Shared Function YesNoCancel() As IReadOnlyList(Of MASButtonSpec)
            Return New List(Of MASButtonSpec) From {
                MakeTalButton(
                    text:="Yes",
                    intent:=MASButtonIntent.Primary,
                    isDefault:=True,
                    isEnabled:=True),
                MakeTalButton(
                    text:="No",
                    intent:=MASButtonIntent.Subtle,
                    isDefault:=False,
                    isEnabled:=True),
                MakeTalButton(
                    text:="Cancel",
                    intent:=MASButtonIntent.Subtle,
                    isDefault:=False,
                    isEnabled:=True)
            }
        End Function

        Friend Shared Function RetryCancel() As IReadOnlyList(Of MASButtonSpec)
            Return New List(Of MASButtonSpec) From {
                MakeTalButton(
                    text:="Retry",
                    intent:=MASButtonIntent.Primary,
                    isDefault:=True,
                    isEnabled:=True),
                MakeTalButton(
                    text:="Cancel",
                    intent:=MASButtonIntent.Subtle,
                    isDefault:=False,
                    isEnabled:=True)
            }
        End Function

        Friend Shared Function DeleteCancel() As IReadOnlyList(Of MASButtonSpec)
            Return New List(Of MASButtonSpec) From {
                MakeTalButton(
                    text:="Delete",
                    intent:=MASButtonIntent.Danger,
                    isDefault:=True,
                    isEnabled:=True),
                MakeTalButton(
                    text:="Cancel",
                    intent:=MASButtonIntent.Subtle,
                    isDefault:=False,
                    isEnabled:=True)
            }
        End Function

    End Class

End Namespace