Option Strict On
Option Explicit On

Imports System
Imports System.Collections.Generic
Imports Nexamas.UI.Controls
Imports Nexamas.UI.Composition
Imports Nexamas.UI.General
Imports Nexamas.UI.Icons
Imports Nexamas.UI.Layout
Imports Nexamas.UI.Rendering
Imports Nexamas.UI.Theming
Imports Nexamas.UI.Values
Imports SkiaSharp
Imports Nexamas.UI.Architecture

Namespace Nexamas.UI.Components

    Partial Public Class MASToolbar
        Inherits MASControlBase
        Implements IMASLayoutParticipant
        Implements IMASIntrinsicSizeContract


        Private Shared ReadOnly _contract As MASResolvedComponentContract =
    MASArchitectureRuntime.ResolveContractOrThrow(GetType(MASToolbar))
#Region "Nested"

        Private NotInheritable Class ToolbarEntry
            Friend Id As String = ""
            Friend Kind As MASToolbarItemKind = MASToolbarItemKind.Control
            Friend Control As MASControlBase
            Friend WidthDip As Single
            Friend Sizing As MASToolbarItemSizing = MASToolbarItemSizing.Fixed
            Friend Alignment As MASToolbarItemAlignment = MASToolbarItemAlignment.Left
            Friend MinWidthDip As Single = 0.0F
            Friend MaxWidthDip As Single = 0.0F
        End Class

#End Region

#Region "Fields"

        Private ReadOnly _items As New List(Of ToolbarEntry)()
        Private ReadOnly _layoutLeftItems As New List(Of ToolbarEntry)()
        Private ReadOnly _layoutRightItems As New List(Of ToolbarEntry)()
        Private ReadOnly _layoutFillItems As New List(Of ToolbarEntry)()
        Private _layout As MASToolbarLayout
        Private _lastLayoutPlan As MASToolbarLayoutPlan

        Private _horizontalPaddingDip As Single = ToolbarTokens.HorizontalPadding
        Private _verticalInsetDip As Single = ToolbarTokens.VerticalInset
        Private _gapDip As Single = ToolbarTokens.Gap
        Private _itemHeightDip As Single = ToolbarTokens.ItemHeight
        Private _defaultButtonWidthDip As Single = ToolbarTokens.DefaultButtonWidth
        Private _defaultSeparatorWidthDip As Single = ToolbarTokens.DefaultSeparatorWidth
        Private _surfaceMaterialKey As String = MASSurfaceMaterialIds.Auto

#End Region

#Region "Events"

        Public Event ButtonClicked As EventHandler(Of MASToolbarButtonClickedEventArgs)

#End Region


#Region "Events"


#End Region


    End Class

    Public NotInheritable Class MASToolbarButtonClickedEventArgs
        Inherits EventArgs

        Friend Sub New(id As String, control As MASControlBase)
            Me.Id = If(id, String.Empty)
            Me.Control = control
        End Sub

        Public ReadOnly Property Id As String
        Public ReadOnly Property Control As MASControlBase

    End Class

End Namespace
