1 /*
2  * $Id: HeaderFooter.java 3373 2008-05-12 16:21:24Z xlv $
3  *
4  * Copyright 1999, 2000, 2001, 2002 by Bruno Lowagie.
5  *
6  * The contents of this file are subject to the Mozilla Public License Version 1.1
7  * (the "License"); you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at http://www.mozilla.org/MPL/
9  *
10  * Software distributed under the License is distributed on an "AS IS" basis,
11  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12  * for the specific language governing rights and limitations under the License.
13  *
14  * The Original Code is 'iText, a free JAVA-PDF library'.
15  *
16  * The Initial Developer of the Original Code is Bruno Lowagie. Portions created by
17  * the Initial Developer are Copyright (C) 1999, 2000, 2001, 2002 by Bruno Lowagie.
18  * All Rights Reserved.
19  * Co-Developer of the code is Paulo Soares. Portions created by the Co-Developer
20  * are Copyright (C) 2000, 2001, 2002 by Paulo Soares. All Rights Reserved.
21  *
22  * Contributor(s): all the names of the contributors are added in the source code
23  * where applicable.
24  *
25  * Alternatively, the contents of this file may be used under the terms of the
26  * LGPL license (the "GNU LIBRARY GENERAL PUBLIC LICENSE"), in which case the
27  * provisions of LGPL are applicable instead of those above.  If you wish to
28  * allow use of your version of this file only under the terms of the LGPL
29  * License and not to allow others to use your version of this file under
30  * the MPL, indicate your decision by deleting the provisions above and
31  * replace them with the notice and other provisions required by the LGPL.
32  * If you do not delete the provisions above, a recipient may use your version
33  * of this file under either the MPL or the GNU LIBRARY GENERAL PUBLIC LICENSE.
34  *
35  * This library is free software; you can redistribute it and/or modify it
36  * under the terms of the MPL as stated above or under the terms of the GNU
37  * Library General Public License as published by the Free Software Foundation;
38  * either version 2 of the License, or any later version.
39  *
40  * This library is distributed in the hope that it will be useful, but WITHOUT
41  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
42  * FOR A PARTICULAR PURPOSE. See the GNU Library general Public License for more
43  * details.
44  *
45  * If you didn't download this code from the following link, you should check if
46  * you aren't using an obsolete version:
47  * http://www.lowagie.com/iText/
48  */

49
50 package com.lowagie.text;
51
52
53 /**
54  * A <CODE>HeaderFooter</CODE>-object is a <CODE>Rectangle</CODe> with text
55  * that can be put above and/or below every page.
56  * <P>
57  * Example:
58  * <BLOCKQUOTE><PRE>
59  * <STRONG>HeaderFooter header = new HeaderFooter(new Phrase("This is a header."), false);</STRONG>
60  * <STRONG>HeaderFooter footer = new HeaderFooter(new Phrase("This is page "), new Phrase("."));</STRONG>
61  * document.setHeader(header);
62  * document.setFooter(footer);
63  * </PRE></BLOCKQUOTE>
64  */

65
66 public class HeaderFooter extends Rectangle {
67     
68     // membervariables
69     
70 /** Does the page contain a pagenumber? */
71     private boolean numbered;
72     
73 /** This is the <CODE>Phrase</CODE> that comes before the pagenumber. */
74     private Phrase before = null;
75     
76 /** This is number of the page. */
77     private int pageN;
78     
79 /** This is the <CODE>Phrase</CODE> that comes after the pagenumber. */
80     private Phrase after = null;
81     
82 /** This is alignment of the header/footer. */
83     private int alignment;
84     
85     // constructors
86     
87 /**
88  * Constructs a <CODE>HeaderFooter</CODE>-object.
89  *
90  * @param    before        the <CODE>Phrase</CODE> before the pagenumber
91  * @param    after        the <CODE>Phrase</CODE> before the pagenumber
92  */

93     
94     public HeaderFooter(Phrase before, Phrase after) {
95         super(0, 0, 0, 0);
96         setBorder(TOP + BOTTOM);
97         setBorderWidth(1);
98         
99         numbered = true;
100         this.before = before;
101         this.after = after;
102     }
103     
104 /**
105  * Constructs a <CODE>Header</CODE>-object with a pagenumber at the end.
106  *
107  * @param    before        the <CODE>Phrase</CODE> before the pagenumber
108  * @param    numbered    <CODE>true</CODE> if the page has to be numbered
109  */

110     
111     public HeaderFooter(Phrase before, boolean numbered) {
112         super(0, 0, 0, 0);
113         setBorder(TOP + BOTTOM);
114         setBorderWidth(1);
115         
116         this.numbered = numbered;
117         this.before = before;
118     }
119     
120     // methods
121     
122 /**
123  * Checks if the HeaderFooter contains a page number.
124  *
125  * @return  true if the page has to be numbered
126  */

127     
128     public boolean isNumbered() {
129         return numbered;
130     }
131     
132 /**
133  * Gets the part that comes before the pageNumber.
134  *
135  * @return  a Phrase
136  */

137     
138     public Phrase getBefore() {
139         return before;
140     }
141     
142 /**
143  * Gets the part that comes after the pageNumber.
144  *
145  * @return  a Phrase
146  */

147     
148     public Phrase getAfter() {
149         return after;
150     }
151     
152 /**
153  * Sets the page number.
154  *
155  * @param        pageN        the new page number
156  */

157     
158     public void setPageNumber(int pageN) {
159         this.pageN = pageN;
160     }
161     
162 /**
163  * Sets the alignment.
164  *
165  * @param        alignment    the new alignment
166  */

167     
168     public void setAlignment(int alignment) {
169         this.alignment = alignment;
170     }
171
172     // methods to retrieve the membervariables
173     
174 /**
175  * Gets the <CODE>Paragraph</CODE> that can be used as header or footer.
176  *
177  * @return        a <CODE>Paragraph</CODE>
178  */

179     
180     public Paragraph paragraph() {
181         Paragraph paragraph = new Paragraph(before.getLeading());
182         paragraph.add(before);
183         if (numbered) {
184             paragraph.addSpecial(new Chunk(String.valueOf(pageN), before.getFont()));
185         }
186         if (after != null) {
187             paragraph.addSpecial(after);
188         }
189         paragraph.setAlignment(alignment);
190         return paragraph;
191     }
192
193     /**
194      * Gets the alignment of this HeaderFooter.
195      *
196      * @return    alignment
197      */

198
199         public int alignment() {
200             return alignment;
201         }
202
203 }