ContentControlsHelpers.vb
''
'' This code is part of Document Solutions for Word demos.
'' Copyright (c) MESCIUS inc. All rights reserved.
''
Imports System.IO
Imports System.Drawing
Imports System.Collections.Generic
Imports System.Linq
Imports GrapeCity.Documents.Word

Public Class ContentControlsHelpers
    Function CreateDocx() As GcWordDocument
        Dim doc = New GcWordDocument()
        Dim p = doc.Body.AddParagraph("Content Control Examples", doc.Styles(BuiltInStyleId.Heading1))
        p = doc.Body.AddParagraph(
            "Below are some examples of content controls. Open the document in MS Word to see the controls in action.",
            doc.Styles(BuiltInStyleId.Subtitle))

        ''
        '' ContentControlType.DropdownList:
        ''
        doc.Body.AddParagraph("ContentControlType.DropdownList", doc.Styles(BuiltInStyleId.Heading2))
        doc.Body.AddParagraph("Select a fruit from the dropdown list control: ", doc.Styles(BuiltInStyleId.Subtitle))

        Dim dropDownListCtrl = p.AddContentControl(ContentControlType.DropdownList, False)
        dropDownListCtrl.DropDownItems.Add(New DropDownItem("apple", "Apples"))
        dropDownListCtrl.DropDownItems.Add(New DropDownItem("orange", "Oranges"))
        dropDownListCtrl.DropDownItems.Add(New DropDownItem("banana", "Bananas"))
        dropDownListCtrl.DropDownItems.Add(New DropDownItem("pear", "Pears"))

        Dim dropDownPlaceholder = doc.GlossaryDocument.BuildingBlocks.Add("dropdownlist-placeholder", "General",
            type:=BuildingBlockType.ContentControlPlaceholder)

        Dim pp = dropDownPlaceholder.Body.AddParagraph("Click to pick")
        pp.GetRange().Runs.First.Style = p.ParentBody.Document.Styles(BuiltInStyleId.Strong)
        pp.GetRange().Runs.First.Font.Color.RGB = Color.DarkSeaGreen

        p.AddRun(" The green 'Click to pick' text on the left is a placeholder, replaced with the picked fruit when you've selected one.")

        dropDownListCtrl.Color.RGB = Color.OrangeRed
        dropDownListCtrl.Font.Color.RGB = Color.DarkOrange
        dropDownListCtrl.ShowingPlaceholderText = True
        dropDownListCtrl.PlaceholderText = dropDownPlaceholder

        ''
        ''  ContentControlType.Text
        ''
        doc.Body.AddParagraph("ContentControlType.Text", doc.Styles(BuiltInStyleId.Heading2))
        doc.Body.AddParagraph("ContentControlType.Text allows entering a single run of text in the control. " &
            "All text in a Text control has the same formatting. In this case we use 'Block Text' paragraph style.",
            doc.Styles(BuiltInStyleId.Subtitle))

        Dim textCtrl = doc.Body.AddContentControl(ContentControlType.Text, False)
        p = textCtrl.Content.AddParagraph(
            "This is the default content of the only run in the only paragraph in a Text content control.",
            doc.Styles(BuiltInStyleId.BlockText))

        Try
            textCtrl.Content.GetRange().Paragraphs.Add("Another paragraph (cannot be added).")
        Catch ex As InvalidContentControlSingleChildException
            Console.WriteLine("Cannot have more than one paragraph to a Text content control.")
        End Try
        Try
            p.GetRange().Runs.Add("Another run (cannot be added).")
        Catch ex As InvalidContentControlSingleChildException
            Console.WriteLine("Cannot have more than one run to a Text content control.")
        End Try

        ''
        '' ContentControlType.RichText
        ''
        doc.Body.AddParagraph("ContentControlType.RichText", doc.Styles(BuiltInStyleId.Heading2))
        doc.Body.AddParagraph("ContentControlType.RichText allows having multiple paragraphs, with multiple runs, " &
            "in a single RichText content control.", doc.Styles(BuiltInStyleId.Subtitle))

        Dim richtext = doc.Body.AddContentControl(ContentControlType.RichText, False)
        Dim p1 = richtext.Content.AddParagraph("First paragraphs in the ")
        p1.AddRun("RichText ", doc.Styles(BuiltInStyleId.Strong))
        p1.AddRun("content control.")
        Dim p2 = richtext.Content.AddParagraph("Second paragraphs in the ")
        p2.AddRun("RichText ", doc.Styles(BuiltInStyleId.Strong))
        p2.AddRun("content control.")

        p2.Style = doc.Styles(BuiltInStyleId.IntenseQuote)

        ''
        '' ContentControlType.BuildingBlockGallery
        ''
        doc.Body.AddParagraph("ContentControlType.BuildingBlockGallery", doc.Styles(BuiltInStyleId.Heading2))
        doc.Body.AddParagraph("ContentControlType.BuildingBlockGallery allows selecting items from " &
            "building block galleries. Here we allow to select an equation from the built-in Word equations gallery.",
            doc.Styles(BuiltInStyleId.Subtitle))

        Dim galleryControl = doc.Body.AddContentControl(ContentControlType.BuildingBlockGallery)
        galleryControl.BuildingBlockCategory = "Built-In"
        galleryControl.BuildingBlockGallery = "Equations"

        ''
        '' ContentControlType.Group
        ''
        doc.Body.AddParagraph("ContentControlType.Group", doc.Styles(BuiltInStyleId.Heading2))
        p = doc.Body.AddParagraph("ContentControlType.Group allows createing groups with modifiable " &
            "and constant (non-modifiable) content. Here we create a checkbox with a non-modifiable label on its right.",
            doc.Styles(BuiltInStyleId.Subtitle))

        Dim groupControl = doc.Body.AddContentControl(ContentControlType.Group, False)

        p = groupControl.Content.AddParagraph()
        Dim checkBox = p.AddContentControl(ContentControlType.CheckBox, True)

        checkBox.Title = "Grouped checkbox"
        checkBox.Checked = True

        p.AddRun(" Text to the right of the checkbox")

        groupControl.Content.AddParagraph("Finally, we add a ContentControlType.Date control that shows the current date.")

        Dim dt = groupControl.Content.AddContentControl(ContentControlType.Date, False)
        dt.DateFormat = "u"
        dt.Date = Util.TimeNow()

        Return doc
    End Function
End Class