Project

General

Profile

Download (6.09 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2007 EDIT
3
* European Distributed Institute of Taxonomy 
4
* http://www.e-taxonomy.eu
5
* 
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9

    
10
package eu.etaxonomy.cdm.print.out.odf;
11

    
12
import org.apache.log4j.Logger;
13
import org.odftoolkit.odfdom.doc.OdfTextDocument;
14
import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
15
import org.odftoolkit.odfdom.dom.element.style.StyleParagraphPropertiesElement;
16
import org.odftoolkit.odfdom.dom.element.style.StyleTabStopElement;
17
import org.odftoolkit.odfdom.dom.element.style.StyleTabStopsElement;
18
import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
19
import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
20
import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeStyles;
21
import org.odftoolkit.odfdom.incubator.doc.style.OdfDefaultStyle;
22
import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
23

    
24
/**
25
 * @author n.hoffmann
26
 * @created Apr 29, 2010
27
 * @version 1.0
28
 */
29
public class StylesFactory implements IStyleNames{
30
	@SuppressWarnings("unused")
31
	private static final Logger logger = Logger.getLogger(StylesFactory.class);
32
	
33
	OdfOfficeStyles officeStyles;
34
	OdfDefaultStyle defaultStyle;
35
	StyleParagraphPropertiesElement paragraphProperties;
36

    
37
	StyleTabStopsElement tabStops;
38
	StyleTabStopElement tabStop;
39

    
40

    
41
	public StylesFactory(OdfTextDocument outputDocument) {
42
		this.officeStyles = outputDocument.getOrCreateDocumentStyles();
43
		init();
44
	}
45
	
46
	private void init() {
47
		createDefaultStyles();
48
		
49
		createHeadings();
50
		
51
	}
52

    
53
	public void createDefaultStyles(){
54
		// Set default font size to 10 point
55
		defaultStyle = officeStyles.getDefaultStyle(
56
			OdfStyleFamily.Paragraph);
57
		setFontSize(defaultStyle, "10pt");
58
	}
59
	
60
	private void createHeadings(){
61
		OdfStyle style;
62
		
63
		style = officeStyles.newStyle(HEADING_ACCEPTED_TAXON,
64
				OdfStyleFamily.Paragraph);
65
		style.setStyleDisplayNameAttribute("Accepted Taxon Heading");
66
		style.setProperty(StyleParagraphPropertiesElement.MarginTop, "0.25cm");
67
		style.setProperty(StyleParagraphPropertiesElement.MarginBottom, "0.25cm");
68
		setFontWeight(style, "bold");
69
		setFontSize(style, "20pt");
70
		
71
		style = officeStyles.newStyle(HEADING_FEATURE,
72
				OdfStyleFamily.Paragraph);
73
		style.setStyleDisplayNameAttribute("Feature Heading");
74
		style.setProperty(StyleParagraphPropertiesElement.MarginTop, "0.25cm");
75
		style.setProperty(StyleParagraphPropertiesElement.MarginBottom, "0.25cm");
76
		setFontWeight(style, "bold");
77
		setFontSize(style, "14pt");
78
	}
79
	
80
//	@Deprecated // testing
81
//	void addOfficeStyles() {
82
//		OdfDefaultStyle defaultStyle;
83
//		OdfStyle style;
84
//		OdfStyleParagraphProperties pProperties;
85
//
86
//		OdfStyleTabStops tabStops;
87
//		OdfStyleTabStop tabStop;
88
//
89
//		// Set default font size to 10 point
90
//		defaultStyle = stylesOfficeStyles
91
//				.getDefaultStyle(OdfStyleFamily.Paragraph);
92
//		setFontSize(defaultStyle, "10pt");
93
//
94
//		// movie heading: 14pt, bold
95
//		style = stylesOfficeStyles.newStyle("Movie_20_Heading",
96
//				OdfStyleFamily.Paragraph);
97
//		style.setStyleDisplayNameAttribute("Movie Heading");
98
//		style.setProperty(OdfStyleParagraphProperties.MarginTop, "0.25cm");
99
//		style.setProperty(OdfStyleParagraphProperties.MarginBottom, "0.25cm");
100
//		setFontWeight(style, "bold");
101
//		setFontSize(style, "14pt");
102
//
103
//		// span for stars: 12pt, bold
104
//		style = stylesOfficeStyles
105
//				.newStyle("Star_20_Span", OdfStyleFamily.Text);
106
//		style.setStyleDisplayNameAttribute("Star Span");
107
//		setFontWeight(style, "bold");
108
//		setFontSize(style, "12pt");
109
//
110
//		// Cast heading is 12pt italic
111
//		style = stylesOfficeStyles.newStyle("Cast_20_Heading",
112
//				OdfStyleFamily.Paragraph);
113
//		style.setStyleDisplayNameAttribute("Cast Heading");
114
//		style.setProperty(OdfStyleParagraphProperties.MarginTop, "0.5cm");
115
//		style.setProperty(OdfStyleParagraphProperties.MarginBottom, "0.25cm");
116
//		setFontStyle(style, "italic");
117
//		setFontSize(style, "12pt");
118
//
119
//		// Paragraph with tab stop at 7.5cm with a
120
//		// leader of "." This is used for the
121
//		// cast list.
122
//		style = stylesOfficeStyles.newStyle("Cast_20_Para",
123
//				OdfStyleFamily.Paragraph);
124
//		style.setStyleDisplayNameAttribute("Cast Para");
125
//		style.setStyleFamilyAttribute(OdfStyleFamily.Paragraph.toString());
126
//
127
//		// build hierarchy from "inside out"
128
//		tabStop = new OdfStyleTabStop(stylesDom);
129
//		tabStop.setStylePositionAttribute("7.5cm");
130
//		tabStop.setStyleLeaderStyleAttribute("dotted");
131
//		tabStop.setStyleLeaderTextAttribute(".");
132
//		tabStop.setStyleTypeAttribute("right");
133
//
134
//		tabStops = new OdfStyleTabStops(stylesDom);
135
//		tabStops.appendChild(tabStop);
136
//
137
//		pProperties = new OdfStyleParagraphProperties(stylesDom);
138
//		pProperties.appendChild(tabStops);
139
//
140
//		style.appendChild(pProperties);
141
//
142
//		// style for the movie synopsis
143
//		style = stylesOfficeStyles.newStyle("Synopsis_20_Para",
144
//				OdfStyleFamily.Paragraph);
145
//		style.setStyleDisplayNameAttribute("Synopsis Para");
146
//		style.setProperty(OdfStyleParagraphProperties.Border,
147
//				"0.035cm solid #000000");
148
//		style.setProperty(OdfStyleParagraphProperties.Padding, "0.25cm");
149
//		style.setProperty(OdfStyleParagraphProperties.MarginLeft, "1cm");
150
//		style.setProperty(OdfStyleParagraphProperties.MarginRight, "1cm");
151
//		style.setProperty(OdfStyleParagraphProperties.TextIndent, "0.25cm");
152
//	}
153
	
154

    
155
	private void setFontWeight(OdfStyleBase style, String value) {
156
		style.setProperty(StyleTextPropertiesElement.FontWeight, value);
157
		style.setProperty(StyleTextPropertiesElement.FontWeightAsian, value);
158
		style.setProperty(StyleTextPropertiesElement.FontWeightComplex, value);
159
	}
160

    
161
	private void setFontStyle(OdfStyleBase style, String value) {
162
		style.setProperty(StyleTextPropertiesElement.FontStyle, value);
163
		style.setProperty(StyleTextPropertiesElement.FontStyleAsian, value);
164
		style.setProperty(StyleTextPropertiesElement.FontStyleComplex, value);
165
	}
166

    
167
	private void setFontSize(OdfStyleBase style, String value) {
168
		style.setProperty(StyleTextPropertiesElement.FontSize, value);
169
		style.setProperty(StyleTextPropertiesElement.FontSizeAsian, value);
170
		style.setProperty(StyleTextPropertiesElement.FontSizeComplex, value);
171
	}
172
}
(4-4/4)