001: /*
002: * $Id: HeaderFooter.java 2688 2007-04-17 13:46:52Z blowagie $
003: * $Name$
004: *
005: * Copyright 1999, 2000, 2001, 2002 by Bruno Lowagie.
006: *
007: * The contents of this file are subject to the Mozilla Public License Version 1.1
008: * (the "License"); you may not use this file except in compliance with the License.
009: * You may obtain a copy of the License at http://www.mozilla.org/MPL/
010: *
011: * Software distributed under the License is distributed on an "AS IS" basis,
012: * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
013: * for the specific language governing rights and limitations under the License.
014: *
015: * The Original Code is 'iText, a free JAVA-PDF library'.
016: *
017: * The Initial Developer of the Original Code is Bruno Lowagie. Portions created by
018: * the Initial Developer are Copyright (C) 1999, 2000, 2001, 2002 by Bruno Lowagie.
019: * All Rights Reserved.
020: * Co-Developer of the code is Paulo Soares. Portions created by the Co-Developer
021: * are Copyright (C) 2000, 2001, 2002 by Paulo Soares. All Rights Reserved.
022: *
023: * Contributor(s): all the names of the contributors are added in the source code
024: * where applicable.
025: *
026: * Alternatively, the contents of this file may be used under the terms of the
027: * LGPL license (the "GNU LIBRARY GENERAL PUBLIC LICENSE"), in which case the
028: * provisions of LGPL are applicable instead of those above. If you wish to
029: * allow use of your version of this file only under the terms of the LGPL
030: * License and not to allow others to use your version of this file under
031: * the MPL, indicate your decision by deleting the provisions above and
032: * replace them with the notice and other provisions required by the LGPL.
033: * If you do not delete the provisions above, a recipient may use your version
034: * of this file under either the MPL or the GNU LIBRARY GENERAL PUBLIC LICENSE.
035: *
036: * This library is free software; you can redistribute it and/or modify it
037: * under the terms of the MPL as stated above or under the terms of the GNU
038: * Library General Public License as published by the Free Software Foundation;
039: * either version 2 of the License, or any later version.
040: *
041: * This library is distributed in the hope that it will be useful, but WITHOUT
042: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
043: * FOR A PARTICULAR PURPOSE. See the GNU Library general Public License for more
044: * details.
045: *
046: * If you didn't download this code from the following link, you should check if
047: * you aren't using an obsolete version:
048: * http://www.lowagie.com/iText/
049: */
050:
051: package com.lowagie.text;
052:
053: /**
054: * A <CODE>HeaderFooter</CODE>-object is a <CODE>Rectangle</CODe> with text
055: * that can be put above and/or below every page.
056: * <P>
057: * Example:
058: * <BLOCKQUOTE><PRE>
059: * <STRONG>HeaderFooter header = new HeaderFooter(new Phrase("This is a header."), false);</STRONG>
060: * <STRONG>HeaderFooter footer = new HeaderFooter(new Phrase("This is page "), new Phrase("."));</STRONG>
061: * document.setHeader(header);
062: * document.setFooter(footer);
063: * </PRE></BLOCKQUOTE>
064: */
065:
066: public class HeaderFooter extends Rectangle {
067:
068: // membervariables
069:
070: /** Does the page contain a pagenumber? */
071: private boolean numbered;
072:
073: /** This is the <CODE>Phrase</CODE> that comes before the pagenumber. */
074: private Phrase before = null;
075:
076: /** This is number of the page. */
077: private int pageN;
078:
079: /** This is the <CODE>Phrase</CODE> that comes after the pagenumber. */
080: private Phrase after = null;
081:
082: /** This is alignment of the header/footer. */
083: private int alignment;
084:
085: // constructors
086:
087: /**
088: * Constructs a <CODE>HeaderFooter</CODE>-object.
089: *
090: * @param before the <CODE>Phrase</CODE> before the pagenumber
091: * @param after the <CODE>Phrase</CODE> before the pagenumber
092: */
093:
094: public HeaderFooter(Phrase before, Phrase after) {
095: super (0, 0, 0, 0);
096: setBorder(TOP + BOTTOM);
097: setBorderWidth(1);
098:
099: 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),
185: before.getFont()));
186: }
187: if (after != null) {
188: paragraph.addSpecial(after);
189: }
190: paragraph.setAlignment(alignment);
191: return paragraph;
192: }
193:
194: /**
195: * Gets the alignment of this HeaderFooter.
196: *
197: * @return alignment
198: */
199:
200: public int alignment() {
201: return alignment;
202: }
203:
204: }
|