BuildingBlockBehavior

Inheritance: java.lang.Object

public class BuildingBlockBehavior

Specifies the behavior that shall be applied to the contents of the building block when it is inserted into the main document.

Remarks:

Corresponds to the ST_DocPartBehavior type in OOXML.

Examples:

Shows how to add a custom building block to a document.


 public void createAndInsert() throws Exception {
     // A document's glossary document stores building blocks.
     Document doc = new Document();
     GlossaryDocument glossaryDoc = new GlossaryDocument();
     doc.setGlossaryDocument(glossaryDoc);

     // Create a building block, name it, and then add it to the glossary document.
     BuildingBlock block = new BuildingBlock(glossaryDoc);
     block.setName("Custom Block");

     glossaryDoc.appendChild(block);

     // All new building block GUIDs have the same zero value by default, and we can give them a new unique value.
     Assert.assertEquals(block.getGuid().toString(), "00000000-0000-0000-0000-000000000000");

     block.setGuid(UUID.randomUUID());

     // The following properties categorize building blocks
     // in the menu we can access in Microsoft Word via "Insert" -> "Quick Parts" -> "Building Blocks Organizer".
     Assert.assertEquals(block.getCategory(), "(Empty Category)");
     Assert.assertEquals(block.getType(), BuildingBlockType.NONE);
     Assert.assertEquals(block.getGallery(), BuildingBlockGallery.ALL);
     Assert.assertEquals(block.getBehavior(), BuildingBlockBehavior.CONTENT);

     // Before we can add this building block to our document, we will need to give it some contents,
     // which we will do using a document visitor. This visitor will also set a category, gallery, and behavior.
     BuildingBlockVisitor visitor = new BuildingBlockVisitor(glossaryDoc);
     // Visit start/end of the BuildingBlock.
     block.accept(visitor);

     // We can access the block that we just made from the glossary document.
     BuildingBlock customBlock = glossaryDoc.getBuildingBlock(BuildingBlockGallery.QUICK_PARTS,
             "My custom building blocks", "Custom Block");

     // The block itself is a section that contains the text.
     Assert.assertEquals(MessageFormat.format("Text inside {0}\f", customBlock.getName()), customBlock.getFirstSection().getBody().getFirstParagraph().getText());
     Assert.assertEquals(customBlock.getFirstSection(), customBlock.getLastSection());
     // Now, we can insert it into the document as a new section.
     doc.appendChild(doc.importNode(customBlock.getFirstSection(), true));

     // We can also find it in Microsoft Word's Building Blocks Organizer and place it manually.
     doc.save(getArtifactsDir() + "BuildingBlocks.CreateAndInsert.dotx");
 }

 /// 
 /// Sets up a visited building block to be inserted into the document as a quick part and adds text to its contents.
 /// 
 public static class BuildingBlockVisitor extends DocumentVisitor {
     public BuildingBlockVisitor(final GlossaryDocument ownerGlossaryDoc) {
         mBuilder = new StringBuilder();
         mGlossaryDoc = ownerGlossaryDoc;
     }

     public int visitBuildingBlockStart(final BuildingBlock block) {
         // Configure the building block as a quick part, and add properties used by Building Blocks Organizer.
         block.setBehavior(BuildingBlockBehavior.PARAGRAPH);
         block.setCategory("My custom building blocks");
         block.setDescription("Using this block in the Quick Parts section of word will place its contents at the cursor.");
         block.setGallery(BuildingBlockGallery.QUICK_PARTS);

         // Add a section with text.
         // Inserting the block into the document will append this section with its child nodes at the location.
         Section section = new Section(mGlossaryDoc);
         block.appendChild(section);
         block.getFirstSection().ensureMinimum();

         Run run = new Run(mGlossaryDoc, "Text inside " + block.getName());
         block.getFirstSection().getBody().getFirstParagraph().appendChild(run);

         return VisitorAction.CONTINUE;
     }

     public int visitBuildingBlockEnd(final BuildingBlock block) {
         mBuilder.append("Visited " + block.getName() + "\r\n");
         return VisitorAction.CONTINUE;
     }

     private final StringBuilder mBuilder;
     private final GlossaryDocument mGlossaryDoc;
 }
 

Fields

FieldDescription
CONTENTSpecifies that the building block shall be inserted as inline content.
DEFAULTSame as CONTENT.
PAGESpecifies that the building block shall be added into its own page.
PARAGRAPHSpecifies that the building block shall be inserted into its own paragraph.
length

Methods

MethodDescription
fromName(String buildingBlockBehaviorName)
getName(int buildingBlockBehavior)
getValues()
toString(int buildingBlockBehavior)

CONTENT

public static int CONTENT

Specifies that the building block shall be inserted as inline content.

DEFAULT

public static int DEFAULT

Same as CONTENT.

PAGE

public static int PAGE

Specifies that the building block shall be added into its own page.

PARAGRAPH

public static int PARAGRAPH

Specifies that the building block shall be inserted into its own paragraph.

length

public static int length

fromName(String buildingBlockBehaviorName)

public static int fromName(String buildingBlockBehaviorName)

Parameters:

ParameterTypeDescription
buildingBlockBehaviorNamejava.lang.String

Returns: int

getName(int buildingBlockBehavior)

public static String getName(int buildingBlockBehavior)

Parameters:

ParameterTypeDescription
buildingBlockBehaviorint

Returns: java.lang.String

getValues()

public static int[] getValues()

Returns: int[]

toString(int buildingBlockBehavior)

public static String toString(int buildingBlockBehavior)

Parameters:

ParameterTypeDescription
buildingBlockBehaviorint

Returns: java.lang.String