BuiltInListStyles.vb
''
'' This code is part of GrapeCity Documents for Word samples.
'' Copyright (c) GrapeCity, Inc. All rights reserved.
''
Imports System.Drawing
Imports System.IO
Imports System.Linq
Imports System.Collections.Generic
Imports GrapeCity.Documents.Word
Imports GrapeCity.Documents.Imaging

'' This sample demoes all built-in list template available in GcWord.
Public Class BuiltInListStyles
    Public Function CreateDocx() As GcWordDocument
        Dim doc = New GcWordDocument()
        Dim sec = doc.Body.Sections.First
        Dim pars = sec.GetRange().Paragraphs

        pars.Add("Demo of All Built-in List Templates", doc.Styles(BuiltInStyleId.Title))

        Dim n = 0
        For Each id In [Enum].GetValues(GetType(BuiltInListTemplateId))
            Dim listTemplate = doc.ListTemplates.Add(id, $"listTemplate{n}")
            n += 1
            pars.Add($"List formatted using built-in list template '{listTemplate.Name}':")
            Dim m = 0
            Dim levels = New Stack(Of Integer)
            levels.Push(m)
            For Each i In New Integer() {0, 0, 0, 1, 1, 2, 2, 2, 1}
                If (i > levels.Count) Then
                    levels.Push(m)
                    m = 0
                ElseIf (i < levels.Count) Then
                    m = levels.Pop()
                End If

                Dim p = pars.Add($"List item {m} on level {levels.Count}.", doc.Styles(BuiltInStyleId.ListParagraph))
                m += 1
                p.ListFormat.Template = listTemplate
                p.ListFormat.LevelNumber = i
            Next
        Next

        '' Done
        Return doc
    End Function
End Class