001: /*
002: * $Id: RtfAddableElement.java 2776 2007-05-23 20:01:40Z hallm $
003: * $Name$
004: *
005: * Copyright 2001, 2002, 2003, 2004 by Mark Hall
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: * Co-Developer of the code is Mark Hall. Portions created by the Co-Developer are
023: * Copyright (C) 2006 by Mark Hall. All Rights Reserved
024: *
025: * Contributor(s): all the names of the contributors are added in the source code
026: * where applicable.
027: *
028: * Alternatively, the contents of this file may be used under the terms of the
029: * LGPL license (the ?GNU LIBRARY GENERAL PUBLIC LICENSE?), in which case the
030: * provisions of LGPL are applicable instead of those above. If you wish to
031: * allow use of your version of this file only under the terms of the LGPL
032: * License and not to allow others to use your version of this file under
033: * the MPL, indicate your decision by deleting the provisions above and
034: * replace them with the notice and other provisions required by the LGPL.
035: * If you do not delete the provisions above, a recipient may use your version
036: * of this file under either the MPL or the GNU LIBRARY GENERAL PUBLIC LICENSE.
037: *
038: * This library is free software; you can redistribute it and/or modify it
039: * under the terms of the MPL as stated above or under the terms of the GNU
040: * Library General Public License as published by the Free Software Foundation;
041: * either version 2 of the License, or any later version.
042: *
043: * This library is distributed in the hope that it will be useful, but WITHOUT
044: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
045: * FOR A PARTICULAR PURPOSE. See the GNU Library general Public License for more
046: * details.
047: *
048: * If you didn't download this code from the following link, you should check if
049: * you aren't using an obsolete version:
050: * http://www.lowagie.com/iText/
051: */
052:
053: package com.lowagie.text.rtf;
054:
055: import java.io.IOException;
056: import java.io.OutputStream;
057:
058: import com.lowagie.text.Chunk;
059: import com.lowagie.text.Font;
060: import com.lowagie.text.rtf.document.RtfDocument;
061:
062: /**
063: * The RtfAddableElement is the superclass for all rtf specific elements
064: * that need to be added to an iText document. It is an extension of Chunk
065: * and it also implements RtfBasicElement. It is an abstract class thus it
066: * cannot be instantiated itself and has to be subclassed to be used.
067: *
068: * @version $Id: RtfAddableElement.java 2776 2007-05-23 20:01:40Z hallm $
069: * @author Mark Hall (mhall@edu.uni-klu.ac.at)
070: * @author Thomas Bickel (tmb99@inode.at)
071: */
072: public abstract class RtfAddableElement extends Chunk implements
073: RtfBasicElement {
074:
075: /**
076: * The RtfDocument this RtfAddableElement belongs to.
077: */
078: protected RtfDocument doc = null;
079: /**
080: * Whether this RtfAddableElement is contained in a table.
081: */
082: protected boolean inTable = false;
083: /**
084: * Whether this RtfAddableElement is contained in a header.
085: */
086: protected boolean inHeader = false;
087:
088: /**
089: * Constructs a new RtfAddableElement. The Chunk content is
090: * set to an empty string and the font to the default Font().
091: */
092: public RtfAddableElement() {
093: super ("", new Font());
094: }
095:
096: /**
097: * Subclasses have to implement this method.
098: *
099: * @deprecated replaced by {@link #writeContent(OutputStream)}
100: */
101: public abstract byte[] write();
102:
103: /**
104: * Writes the element content to the given output stream.
105: * This method replaces the {@link #write()} method which is now deprecated.
106: */
107: public void writeContent(OutputStream out) throws IOException {
108: byte[] content = write();
109: out.write(content);
110: }
111:
112: /**
113: * Sets the RtfDocument this RtfAddableElement belongs to
114: */
115: public void setRtfDocument(RtfDocument doc) {
116: this .doc = doc;
117: }
118:
119: /**
120: * Sets whether this RtfAddableElement is contained in a table.
121: */
122: public void setInTable(boolean inTable) {
123: this .inTable = inTable;
124: }
125:
126: /**
127: * Sets whether this RtfAddableElement is contained in a header/footer.
128: */
129: public void setInHeader(boolean inHeader) {
130: this .inHeader = inHeader;
131: }
132:
133: /**
134: * Transforms an integer into its String representation and then returns the bytes
135: * of that string.
136: *
137: * @param i The integer to convert
138: * @return A byte array representing the integer
139: */
140: public byte[] intToByteArray(int i) {
141: return Integer.toString(i).getBytes();
142: }
143:
144: /**
145: * RtfAddableElement subclasses are never assumed to be empty.
146: */
147: public boolean isEmpty() {
148: return false;
149: }
150: }
|