Option Strict On
Option Explicit On

Imports System.Collections.Generic
Imports Nexamas.UI.Architecture
Imports Nexamas.UI.Components.DropDownMenu
Imports Nexamas.UI.Components.ListPopup
Imports Nexamas.UI.Components.ListRendering
Imports Nexamas.UI.Controls
Imports Nexamas.UI.FloatRuntime
Imports Nexamas.UI.Rendering
Imports Nexamas.UI.Values

Namespace Nexamas.UI.Components

    Partial Friend NotInheritable Class MASComponentControlsArchitectureProvider

        Private Shared Sub RegisterFilesLists(list As List(Of MASComponentDescriptor))
            list.Add(MASComponentDescriptor.Create(Of MASFileBrowser)(
                category:=MASComponentCategory.CompositeContent,
                surfaceFamily:=CommonEnums.SurfaceFamily.ListSurface,
                materialRole:=MASMaterialRole.ListSurface,
                interactionRole:=MASInteractionRole.Composite,
                shadowRole:=MASShadowRole.None,
                radiusRole:=MASRadiusRole.SurfaceFamily,
                typographyRole:=MASTypographyRole.Body,
                themeSurfaceRole:=NexamasUISurfaceRole.List,
                themeColorRole:=NexamasUIColorRole.TextBody,
                themeStateRole:=NexamasUIStateRole.Navigation,
                inputRole:=MASInputRole.RoutedContainer,
                focusRole:=MASFocusRole.FocusScope
            ))

                        list.Add(MASComponentDescriptor.Create(Of MASFilePickerControl)(
                category:=MASComponentCategory.DialogContent,
                surfaceFamily:=CommonEnums.SurfaceFamily.PanelShell,
                materialRole:=MASMaterialRole.Dialog,
                interactionRole:=MASInteractionRole.Composite,
                shadowRole:=MASShadowRole.Dialog,
                radiusRole:=MASRadiusRole.SurfaceFamily,
                typographyRole:=MASTypographyRole.Body,
                themeSurfaceRole:=NexamasUISurfaceRole.Dialog,
                themeColorRole:=NexamasUIColorRole.TextBody,
                themeStateRole:=NexamasUIStateRole.Interactive,
                inputRole:=MASInputRole.RoutedContainer,
                focusRole:=MASFocusRole.FocusScope
            ))

                        list.Add(MASComponentDescriptor.Create(Of MASFilePickerNavigationBar)(
                category:=MASComponentCategory.CompositeContent,
                surfaceFamily:=CommonEnums.SurfaceFamily.TopBar,
                materialRole:=MASMaterialRole.Control,
                interactionRole:=MASInteractionRole.Composite,
                shadowRole:=MASShadowRole.None,
                radiusRole:=MASRadiusRole.SurfaceFamily,
                typographyRole:=MASTypographyRole.Body,
                themeSurfaceRole:=NexamasUISurfaceRole.Header,
                themeColorRole:=NexamasUIColorRole.TextBody,
                themeStateRole:=NexamasUIStateRole.Navigation,
                inputRole:=MASInputRole.RoutedContainer,
                focusRole:=MASFocusRole.FocusScope
            ))

                        list.Add(MASComponentDescriptor.Create(Of MASListBox)(
                category:=MASComponentCategory.Control,
                controlKind:=CommonEnums.ControlKind.ListBox,
                surfaceFamily:=CommonEnums.SurfaceFamily.ListBox,
                materialRole:=MASMaterialRole.ListSurface,
                interactionRole:=MASInteractionRole.Selectable,
                shadowRole:=MASShadowRole.Control,
                radiusRole:=MASRadiusRole.SurfaceFamily,
                typographyRole:=MASTypographyRole.Body,
                themeSurfaceRole:=NexamasUISurfaceRole.List,
                themeColorRole:=NexamasUIColorRole.TextBody,
                themeStateRole:=NexamasUIStateRole.Selectable,
                inputRole:=MASInputRole.PointerOnly,
                focusRole:=MASFocusRole.NotFocusable
            ))

                        list.Add(MASComponentDescriptor.Create(Of MASFileExplorerSplitterControl)(
                category:=MASComponentCategory.Control,
                controlKind:=CommonEnums.ControlKind.FileExplorerSplitter,
                surfaceFamily:=CommonEnums.SurfaceFamily.Generic,
                materialRole:=MASMaterialRole.Control,
                interactionRole:=MASInteractionRole.Draggable,
                shadowRole:=MASShadowRole.None,
                radiusRole:=MASRadiusRole.None,
                typographyRole:=MASTypographyRole.None,
                themeSurfaceRole:=NexamasUISurfaceRole.Control,
                themeColorRole:=NexamasUIColorRole.Border,
                themeStateRole:=NexamasUIStateRole.Interactive,
                inputRole:=MASInputRole.PointerOnly,
                focusRole:=MASFocusRole.NotFocusable
            ))

                        list.Add(MASComponentDescriptor.Create(Of MASFileExplorerView)(
                category:=MASComponentCategory.DialogContent,
                surfaceFamily:=CommonEnums.SurfaceFamily.PanelShell,
                materialRole:=MASMaterialRole.Dialog,
                interactionRole:=MASInteractionRole.Composite,
                shadowRole:=MASShadowRole.Dialog,
                radiusRole:=MASRadiusRole.SurfaceFamily,
                typographyRole:=MASTypographyRole.Body,
                themeSurfaceRole:=NexamasUISurfaceRole.Dialog,
                themeColorRole:=NexamasUIColorRole.TextBody,
                themeStateRole:=NexamasUIStateRole.Navigation,
                inputRole:=MASInputRole.RoutedContainer,
                focusRole:=MASFocusRole.FocusScope
            ))

                        list.Add(MASComponentDescriptor.Create(Of MASListView)(
                category:=MASComponentCategory.Control,
                controlKind:=CommonEnums.ControlKind.ListView,
                surfaceFamily:=CommonEnums.SurfaceFamily.ListSurface,
                materialRole:=MASMaterialRole.ListSurface,
                interactionRole:=MASInteractionRole.Selectable,
                shadowRole:=MASShadowRole.Control,
                radiusRole:=MASRadiusRole.SurfaceFamily,
                typographyRole:=MASTypographyRole.Body,
                themeSurfaceRole:=NexamasUISurfaceRole.List,
                themeColorRole:=NexamasUIColorRole.TextBody,
                themeStateRole:=NexamasUIStateRole.Selectable,
                inputRole:=MASInputRole.PointerAndKeyboard,
                focusRole:=MASFocusRole.Focusable
            ))

        End Sub

    End Class

End Namespace
