Project

General

Profile

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

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

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

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

    
38
	StyleTabStopsElement tabStops;
39
	StyleTabStopElement tabStop;
40

    
41

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

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

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

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

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