Option Strict On
Option Explicit On

Imports Nexamas.UI.Theming

Namespace Nexamas.UI.Components

    ''' <summary>
    ''' Internal immutable button rendering/action specification used by MAS-owned
    ''' composite surfaces such as MessageBox and PanelShell command rows.
    ''' Consumer applications configure buttons through MASButton or application
    ''' facades; they should not construct renderer/layout specs directly.
    ''' </summary>
    Friend NotInheritable Class MASButtonSpec

        Friend ReadOnly Property Text As String
        Friend ReadOnly Property Personality As MASButtonPersonality
        Friend ReadOnly Property Intent As MASButtonIntent

        Friend ReadOnly Property IsDefault As Boolean
        Friend ReadOnly Property IsSelected As Boolean
        Friend ReadOnly Property IsEnabled As Boolean

        Friend Sub New(
            text As String,
            personality As MASButtonPersonality,
            intent As MASButtonIntent,
            Optional isDefault As Boolean = False,
            Optional isSelected As Boolean = False,
            Optional isEnabled As Boolean = True)

            Me.Text = If(text, String.Empty)
            Me.Personality = personality
            Me.Intent = intent
            Me.IsDefault = isDefault
            Me.IsSelected = isSelected
            Me.IsEnabled = isEnabled
        End Sub

    End Class

End Namespace
