Styles and Templates
Styles are named lists containing formatting attributes. They work in all applications of Apache OpenOffice and help to significantly simplify formatting. If the user changes one of the attributes of a style, then Apache OpenOffice automatically adjusts all document sections depending on the attribute. The user can therefore, for example, change the font type of all level one headers by means of a central modification in the document.
Depending on the relevant document types, Apache OpenOffice recognizes a whole range of different types of styles.
Apache OpenOffice Writer supports the following types of styles:
- Character styles
- Paragraph styles
- Frame styles
- Page styles
- Numbering styles
Apache OpenOffice Calc supports the following types of styles:
- Cell styles
- Page styles
Apache OpenOffice Impress supports the following types of styles:
- Character element styles
- Presentation styles
In Apache OpenOffice terminology, the different types of styles are called StyleFamilies in accordance with the com.sun.star.style.StyleFamily service on which they are based. The StyleFamilies are accessed by means of the document object:
Dim Doc As Object Dim Sheet As Object Dim StyleFamilies As Object Dim CellStyles As Object Doc = ThisComponent StyleFamilies = Doc.StyleFamilies CellStyles = StyleFamilies.getByName("CellStyles")
The example uses the StyleFamilies property of a spreadsheet document to establish a list containing all available cell styles.
The individual styles can be accessed directly by means of an index:
Dim Doc As Object Dim Sheet As Object Dim StyleFamilies As Object Dim CellStyles As Object Dim CellStyle As Object Dim I As Integer Doc = ThisComponent StyleFamilies = Doc.StyleFamilies CellStyles = StyleFamilies.getByName("CellStyles") For I = 0 To CellStyles.Count - 1 CellStyle = CellStyles(I) MsgBox CellStyle.Name Next I
The loop added since the previous example displays the names of all cell styles one after another in a message box.
|The reference CellStyles(I) corresponds to the method getByIndex(), which is optional for these style container objects. It may not be available in all types of documents.
The method getByName() is mandatory, and should always be available.
Details about various formatting options
Each type of style provides a whole range of individual formatting properties. Here is an overview of the most important formatting properties and the points at which they are explained:
- Character properties, com.sun.star.style.CharacterProperties service
- Paragraph properties, com.sun.star.text.Paragraph service
- Cell properties, com.sun.star.table.CellProperties service
- Page properties, com.sun.star.style.PageProperties service
- Character element properties, Various services
The format properties are by no means restricted to the applications in which these are explained, but instead can be used universally. For example, most of the page properties described in Spreadsheets can therefore be used not only in Apache OpenOffice Calc, but also in Apache OpenOffice Writer.
More information about working with styles can be found in the Default values for character and paragraph properties section in Text Documents.
Templates are auxiliary documents. They provide a very convenient way to store, maintain, and distribute styles, macros, boiler-plate text, and other useful things.
Document and Template Types
Each major type of Apache OpenOffice document has its own associated template type. In general, and for styles in particular, you can access information within a template in the same way you would access the same information in the associated document type. In other words, code (like the above examples) that works in a particular document type should also work for the associated template type.
Most template types – Draw templates are the exception – have an automatic-update feature. If a style in the template has been changed, and you open a document created with that template, you will see a message asking whether to update the styles in the document. If you click on Yes, the new or changed styles will be copied into the document. Styles deleted from the template are not removed from documents.
A problem may arise if you click on No: the styles will not be updated, and the automatic-update feature will be turned off. As of Apache OpenOffice Version 3.1, this status does not show in the GUI, nor is there any GUI way to re-enable the feature. (For Writer documents only, you can use the Template Changer extension to set this feature again.)
The following subroutine, adapted from the Template Changer extension, will re-enable the update feature for all document types.
Sub FixUpdate Dim oDocSettings as Object oDocSettings = ThisComponent.createInstance( "com.sun.star.document.Settings" ) oDocSettings.UpdateFromTemplate = True End Sub 'FixUpdate
|Content on this page is licensed under the Public Documentation License (PDL).|