Text Sections

From Apache OpenOffice Wiki
< Documentation‎ | DevGuide
Revision as of 12:38, 1 November 2007 by Jsc (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search



A text section is a range of complete paragraphs that can have its own format settings and source location, separate from the surrounding text. Text sections can be nested in a hierarchical structure.

For example, a section is formatted to have text columns that different column settings in a text on a paragraph by paragraph basis. The content of a section can be linked through file links or over a DDE connection.

The text sections support the service com.sun.star.text.TextSection. To access the sections, the text document model implements the interface com.sun.star.text.XTextSectionsSupplier that provides an interface com.sun.star.container.XNameAccess . The returned objects support the interface com.sun.star.container.XIndexAccess, as well.

Master documents implement the structure of sub documents using linked text sections.

An example demonstrating the creation, insertion and linking of text sections:

 /** This method demonstrates how to create linked and unlinked sections 
  */
 protected void TextSectionExample() {
     try {
         // Go to the end of the document
         mxDocCursor.gotoEnd(false);
         // Insert two paragraph breaks
         mxDocText.insertControlCharacter( 
             mxDocCursor, ControlCharacter.PARAGRAPH_BREAK, false);
         mxDocText.insertControlCharacter( 
             mxDocCursor, ControlCharacter.PARAGRAPH_BREAK, true);
         
         // Create a new TextSection from the document factory and access it's XNamed interface
         XNamed xChildNamed = (XNamed) UnoRuntime.queryInterface(
           XNamed.class, mxDocFactory.createInstance("com.sun.star.text.TextSection"));
         // Set the new sections name to 'Child_Section'
         xChildNamed.setName("Child_Section");
         
         // Access the Child_Section's XTextContent interface and insert it into the document
         XTextContent xChildSection = (XTextContent) UnoRuntime.queryInterface(
             XTextContent.class, xChildNamed);
         mxDocText.insertTextContent (mxDocCursor, xChildSection, false);
         
         // Access the XParagraphCursor interface of our text cursor
         XParagraphCursor xParaCursor = (XParagraphCursor) UnoRuntime.queryInterface( 
             XParagraphCursor.class, mxDocCursor);
         
         // Go back one paragraph (into Child_Section)
         xParaCursor.gotoPreviousParagraph(false);
         
         // Insert a string into the Child_Section
         mxDocText.insertString(mxDocCursor, "This is a test", false);
         
         // Go to the end of the document
         mxDocCursor.gotoEnd(false);
         
         // Go back two paragraphs
         xParaCursor.gotoPreviousParagraph (false);
         xParaCursor.gotoPreviousParagraph (false);
         // Go to the end of the document, selecting the two paragraphs
         mxDocCursor.gotoEnd(true);
         
         // Create another text section and access it's XNamed interface
         XNamed xParentNamed = (XNamed) UnoRuntime.queryInterface(XNamed.class,
             mxDocFactory.createInstance("com.sun.star.text.TextSection"));
         
         // Set this text section's name to Parent_Section
         xParentNamed.setName ("Parent_Section");
         
         // Access the Parent_Section's XTextContent interface ...
         XTextContent xParentSection = (XTextContent) UnoRuntime.queryInterface(
             XTextContent.class, xParentNamed);
         // ...and insert it into the document
         mxDocText.insertTextContent(mxDocCursor, xParentSection, false);
         
         // Go to the end of the document
         mxDocCursor.gotoEnd (false);
         // Insert a new paragraph
         mxDocText.insertControlCharacter( 
             mxDocCursor, ControlCharacter.PARAGRAPH_BREAK, false);
         // And select the new pargraph
         xParaCursor.gotoPreviousParagraph(true);
         
         // Create a new Text Section and access it's XNamed interface
         XNamed xLinkNamed = (XNamed) UnoRuntime.queryInterface(
             XNamed.class, mxDocFactory.createInstance("com.sun.star.text.TextSection"));
         // Set the new text section's name to Linked_Section
         xLinkNamed.setName("Linked_Section");
         
         // Access the Linked_Section's XTextContent interface
         XTextContent xLinkedSection = (XTextContent) UnoRuntime.queryInterface(
             XTextContent.class, xLinkNamed);
         // And insert the Linked_Section into the document
         mxDocText.insertTextContent(mxDocCursor, xLinkedSection, false);
         
         // Access the Linked_Section's XPropertySet interface
         XPropertySet xLinkProps = (XPropertySet) UnoRuntime.queryInterface( 
             XPropertySet.class, xLinkNamed);
         // Set the linked section to be linked to the Child_Section
         xLinkProps.setPropertyValue("LinkRegion", "Child_Section");
         
         // Access the XPropertySet interface of the Child_Section
         XPropertySet xChildProps = (XPropertySet) UnoRuntime.queryInterface(
             XPropertySet.class, xChildNamed);
         // Set the Child_Section's background colour to blue
         xChildProps.setPropertyValue("BackColor", new Integer(13421823));
         
         // Refresh the document, so the linked section matches the Child_Section
         XRefreshable xRefresh = (XRefreshable) UnoRuntime.queryInterface( 
             XRefreshable.class, mxDoc);
         xRefresh.refresh();
     } catch (Exception e) {
         e.printStackTrace (System.out);
     }
 }
Content on this page is licensed under the Public Documentation License (PDL).
Personal tools