--- /dev/null
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.hssf.usermodel;
+
+import org.apache.poi.hssf.record.FooterRecord;
+
+/**
+ * Class to read and manipulate the footer.
+ * <P>
+ * The footer works by having a left, center, and right side. The total cannot
+ * be more that 255 bytes long. One uses this class by getting the HSSFFooter
+ * from HSSFSheet and then getting or setting the left, center, and right side.
+ * For special things (such as page numbers and date), one can use a the methods
+ * that return the characters used to represent these. One can also change the
+ * fonts by using similar methods.
+ * <P>
+ * @author Shawn Laubach (laubach@acm.org)
+ */
+public class HSSFFooter extends Object {
+
+ FooterRecord footerRecord;
+ String left;
+ String center;
+ String right;
+
+ /**
+ * Constructor. Creates a new footer interface from a footer record
+ * @param footerRecord Footer record to create the footer with
+ */
+ protected HSSFFooter(FooterRecord footerRecord) {
+ this.footerRecord = footerRecord;
+ String foot = footerRecord.getFooter();
+ }
+
+ /**
+ * Get the left side of the footer.
+ * @return The string representing the left side.
+ */
+ public String getLeft() {
+ return left;
+ }
+
+ /**
+ * Sets the left string.
+ * @newLeft The string to set as the left side.
+ */
+ public void setLeft(String newLeft) {
+ left = newLeft;
+ createFooterString();
+ }
+
+ /**
+ * Get the center of the footer.
+ * @return The string representing the center.
+ */
+ public String getCenter() {
+ return center;
+ }
+
+ /**
+ * Sets the center string.
+ * @newLeft The string to set as the center.
+ */
+ public void setCenter(String newCenter) {
+ center = newCenter;
+ createFooterString();
+ }
+
+ /**
+ * Get the right side of the footer.
+ * @return The string representing the right side.
+ */
+ public String getRight() {
+ return right;
+ }
+
+ /**
+ * Sets the right string.
+ * @newLeft The string to set as the right side.
+ */
+ public void setRight(String newRight) {
+ right = newRight;
+ createFooterString();
+ }
+
+ /**
+ * Creates the complete footer string based on the left, center, and middle
+ * strings.
+ */
+ private void createFooterString() {
+ footerRecord.setFooter(
+ "&C" + (center == null ? "" : center) +
+ "&L" + (left == null ? "" : left) +
+ "&R" + (right == null ? "" : right));
+ footerRecord.setFooterLength((byte)footerRecord.getFooter().length());
+ }
+
+ /**
+ * Returns the string that represents the change in font size.
+ * @param size the new font size
+ * @return The special string to represent a new font size
+ */
+ public static String fontSize(short size) {
+ return "&" + size;
+ }
+
+ /**
+ * Returns the string that represents the change in font.
+ * @param font the new font
+ * @param style the fonts style
+ * @return The special string to represent a new font size
+ */
+ public static String font(String font, String style) {
+ return "&\"" + font + "," + style + "\"";
+ }
+
+ /**
+ * Returns the string representing the current page number
+ * @return The special string for page number
+ */
+ public static String page() {
+ return "&P";
+ }
+
+ /**
+ * Returns the string representing the number of pages.
+ * @return The special string for the number of pages
+ */
+ public static String numPages() {
+ return "&N";
+ }
+
+ /**
+ * Returns the string representing the current date
+ * @return The special string for the date
+ */
+ public static String date() {
+ return "&D";
+ }
+
+ /**
+ * Returns the string representing the current time
+ * @return The special string for the time
+ */
+ public static String time() {
+ return "&T";
+ }
+
+ /**
+ * Returns the string representing the current file name
+ * @return The special string for the file name
+ */
+ public static String file() {
+ return "&F";
+ }
+
+ /**
+ * Returns the string representing the current tab (sheet) name
+ * @return The special string for tab name
+ */
+ public static String tab() {
+ return "&A";
+ }
+}
+
--- /dev/null
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.hssf.usermodel;
+
+import org.apache.poi.hssf.record.HeaderRecord;
+
+/**
+ * Class to read and manipulate the header.
+ * <P>
+ * The header works by having a left, center, and right side. The total cannot
+ * be more that 255 bytes long. One uses this class by getting the HSSFHeader
+ * from HSSFSheet and then getting or setting the left, center, and right side.
+ * For special things (such as page numbers and date), one can use a the methods
+ * that return the characters used to represent these. One can also change the
+ * fonts by using similar methods.
+ * <P>
+ * @author Shawn Laubach (laubach@acm.org)
+ */
+public class HSSFHeader extends Object {
+
+ HeaderRecord headerRecord;
+ String left;
+ String center;
+ String right;
+
+ /**
+ * Constructor. Creates a new header interface from a header record
+ * @param headerRecord Header record to create the header with
+ */
+ protected HSSFHeader(HeaderRecord headerRecord) {
+ this.headerRecord = headerRecord;
+ String head = headerRecord.getHeader();
+ }
+
+ /**
+ * Get the left side of the header.
+ * @return The string representing the left side.
+ */
+ public String getLeft() {
+ return left;
+ }
+
+ /**
+ * Sets the left string.
+ * @newLeft The string to set as the left side.
+ */
+ public void setLeft(String newLeft) {
+ left = newLeft;
+ createHeaderString();
+ }
+
+ /**
+ * Get the center of the header.
+ * @return The string representing the center.
+ */
+ public String getCenter() {
+ return center;
+ }
+
+ /**
+ * Sets the center string.
+ * @newLeft The string to set as the center.
+ */
+ public void setCenter(String newCenter) {
+ center = newCenter;
+ createHeaderString();
+ }
+
+ /**
+ * Get the right side of the header.
+ * @return The string representing the right side.
+ */
+ public String getRight() {
+ return right;
+ }
+
+ /**
+ * Sets the right string.
+ * @newLeft The string to set as the right side.
+ */
+ public void setRight(String newRight) {
+ right = newRight;
+ createHeaderString();
+ }
+
+ /**
+ * Creates the complete header string based on the left, center, and middle
+ * strings.
+ */
+ private void createHeaderString() {
+ headerRecord.setHeader(
+ "&C" + (center == null ? "" : center) +
+ "&L" + (left == null ? "" : left) +
+ "&R" + (right == null ? "" : right));
+ headerRecord.setHeaderLength((byte)headerRecord.getHeader().length());
+ }
+
+ /**
+ * Returns the string that represents the change in font size.
+ * @param size the new font size
+ * @return The special string to represent a new font size
+ */
+ public static String fontSize(short size) {
+ return "&" + size;
+ }
+
+ /**
+ * Returns the string that represents the change in font.
+ * @param font the new font
+ * @param style the fonts style
+ * @return The special string to represent a new font size
+ */
+ public static String font(String font, String style) {
+ return "&\"" + font + "," + style + "\"";
+ }
+
+ /**
+ * Returns the string representing the current page number
+ * @return The special string for page number
+ */
+ public static String page() {
+ return "&P";
+ }
+
+ /**
+ * Returns the string representing the number of pages.
+ * @return The special string for the number of pages
+ */
+ public static String numPages() {
+ return "&N";
+ }
+
+ /**
+ * Returns the string representing the current date
+ * @return The special string for the date
+ */
+ public static String date() {
+ return "&D";
+ }
+
+ /**
+ * Returns the string representing the current time
+ * @return The special string for the time
+ */
+ public static String time() {
+ return "&T";
+ }
+
+ /**
+ * Returns the string representing the current file name
+ * @return The special string for the file name
+ */
+ public static String file() {
+ return "&F";
+ }
+
+ /**
+ * Returns the string representing the current tab (sheet) name
+ * @return The special string for tab name
+ */
+ public static String tab() {
+ return "&A";
+ }
+}
+
--- /dev/null
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.hssf.usermodel;
+
+import org.apache.poi.hssf.record.PrintSetupRecord;
+
+/**
+ * Used to modify the print setup.
+ * <P>
+ * @author Shawn Laubach (laubach@acm.org)
+ */
+public class HSSFPrintSetup extends Object {
+
+ PrintSetupRecord printSetupRecord;
+
+ /**
+ * Constructor. Takes the low level print setup record.
+ * @param printSetupRecord the low level print setup record
+ */
+ protected HSSFPrintSetup(PrintSetupRecord printSetupRecord) {
+ this.printSetupRecord = printSetupRecord;
+ }
+
+ /**
+ * Set the paper size.
+ * @param size the paper size.
+ */
+ public void setPaperSize(short size)
+ {
+ printSetupRecord.setPaperSize(size);
+ }
+
+ /**
+ * Set the scale.
+ * @param scale the scale to use
+ */
+ public void setScale(short scale)
+ {
+ printSetupRecord.setScale(scale);
+ }
+
+ /**
+ * Set the page numbering start.
+ * @param start the page numbering start
+ */
+ public void setPageStart(short start)
+ {
+ printSetupRecord.setPageStart(start);
+ }
+
+ /**
+ * Set the number of pages wide to fit the sheet in
+ * @param width the number of pages
+ */
+ public void setFitWidth(short width)
+ {
+ printSetupRecord.setFitWidth(width);
+ }
+
+ /**
+ * Set the number of pages high to fit the sheet in
+ * @param height the number of pages
+ */
+ public void setFitHeight(short height)
+ {
+ printSetupRecord.setFitHeight(height);
+ }
+
+
+ /**
+ * Sets the options flags. Not advisable to do it directly.
+ * @param options The bit flags for the options
+ */
+ public void setOptions(short options)
+ {
+ printSetupRecord.setOptions(options);
+ }
+
+
+ /**
+ * Set whether to go left to right or top down in ordering
+ * @param ltor left to right
+ */
+ public void setLeftToRight(boolean ltor)
+ {
+ printSetupRecord.setLeftToRight(ltor);
+ }
+
+ /**
+ * Set whether to print in landscape
+ * @param ls landscape
+ */
+ public void setLandscape(boolean ls)
+ {
+ printSetupRecord.setLandscape(ls);
+ }
+
+ /**
+ * Valid settings. I'm not for sure.
+ * @param valid Valid
+ */
+ public void setValidSettings(boolean valid)
+ {
+ printSetupRecord.setValidSettings(valid);
+ }
+
+
+ /**
+ * Set whether it is black and white
+ * @param mono Black and white
+ */
+ public void setNoColor(boolean mono)
+ {
+ printSetupRecord.setNoColor(mono);
+ }
+
+ /**
+ * Set whether it is in draft mode
+ * @param d draft
+ */
+ public void setDraft(boolean d)
+ {
+ printSetupRecord.setDraft(d);
+ }
+
+ /**
+ * Print the include notes
+ * @param printnotes print the notes
+ */
+ public void setNotes(boolean printnotes)
+ {
+ printSetupRecord.setNotes(printnotes);
+ }
+
+ /**
+ * Set no orientation. ?
+ * @param orientation Orientation.
+ */
+ public void setNoOrientation(boolean orientation)
+ {
+ printSetupRecord.setNoOrientation(orientation);
+ }
+
+ /**
+ * Set whether to use page start
+ * @param page Use page start
+ */
+ public void setUsePage(boolean page)
+ {
+ printSetupRecord.setUsePage(page);
+ }
+
+ /**
+ * Sets the horizontal resolution.
+ * @param resolution horizontal resolution
+ */
+ public void setHResolution(short resolution)
+ {
+ printSetupRecord.setHResolution(resolution);
+ }
+
+ /**
+ * Sets the vertical resolution.
+ * @param resolution vertical resolution
+ */
+ public void setVResolution(short resolution)
+ {
+ printSetupRecord.setVResolution(resolution);
+ }
+
+ /**
+ * Sets the header margin.
+ * @param headermargin header margin
+ */
+ public void setHeaderMargin(double headermargin)
+ {
+ printSetupRecord.setHeaderMargin(headermargin);
+ }
+
+ /**
+ * Sets the footer margin.
+ * @param footermargin footer margin
+ */
+ public void setFooterMargin(double footermargin)
+ {
+ printSetupRecord.setFooterMargin(footermargin);
+ }
+
+ /**
+ * Sets the number of copies.
+ * @param copies number of copies
+ */
+ public void setCopies(short copies)
+ {
+ printSetupRecord.setCopies(copies);
+ }
+
+ /**
+ * Returns the paper size.
+ * @return paper size
+ */
+ public short getPaperSize()
+ {
+ return printSetupRecord.getPaperSize();
+ }
+
+ /**
+ * Returns the scale.
+ * @return scale
+ */
+ public short getScale()
+ {
+ return printSetupRecord.getScale();
+ }
+
+ /**
+ * Returns the page start.
+ * @return page start
+ */
+ public short getPageStart()
+ {
+ return printSetupRecord.getPageStart();
+ }
+
+ /**
+ * Returns the number of pages wide to fit sheet in.
+ * @return number of pages wide to fit sheet in
+ */
+ public short getFitWidth()
+ {
+ return printSetupRecord.getFitWidth();
+ }
+
+ /**
+ * Returns the number of pages high to fit the sheet in.
+ * @return number of pages high to fit the sheet in
+ */
+ public short getFitHeight()
+ {
+ return printSetupRecord.getFitHeight();
+ }
+
+ /**
+ * Returns the bit flags for the options.
+ * @return bit flags for the options
+ */
+ public short getOptions()
+ {
+ return printSetupRecord.getOptions();
+ }
+
+ /**
+ * Returns the left to right print order.
+ * @return left to right print order
+ */
+ public boolean getLeftToRight()
+ {
+ return printSetupRecord.getLeftToRight();
+ }
+
+ /**
+ * Returns the landscape mode.
+ * @return landscape mode
+ */
+ public boolean getLandscape()
+ {
+ return printSetupRecord.getLandscape();
+ }
+
+ /**
+ * Returns the valid settings.
+ * @return valid settings
+ */
+ public boolean getValidSettings()
+ {
+ return printSetupRecord.getValidSettings();
+ }
+
+ /**
+ * Returns the black and white setting.
+ * @return black and white setting
+ */
+ public boolean getNoColor()
+ {
+ return printSetupRecord.getNoColor();
+ }
+
+ /**
+ * Returns the draft mode.
+ * @return draft mode
+ */
+ public boolean getDraft()
+ {
+ return printSetupRecord.getDraft();
+ }
+
+ /**
+ * Returns the print notes.
+ * @return print notes
+ */
+ public boolean getNotes()
+ {
+ return printSetupRecord.getNotes();
+ }
+
+ /**
+ * Returns the no orientation.
+ * @return no orientation
+ */
+ public boolean getNoOrientation()
+ {
+ return printSetupRecord.getNoOrientation();
+ }
+
+ /**
+ * Returns the use page numbers.
+ * @return use page numbers
+ */
+ public boolean getUsePage()
+ {
+ return printSetupRecord.getUsePage();
+ }
+
+ /**
+ * Returns the horizontal resolution.
+ * @return horizontal resolution
+ */
+ public short getHResolution()
+ {
+ return printSetupRecord.getHResolution();
+ }
+
+ /**
+ * Returns the vertical resolution.
+ * @return vertical resolution
+ */
+ public short getVResolution()
+ {
+ return printSetupRecord.getVResolution();
+ }
+
+ /**
+ * Returns the header margin.
+ * @return header margin
+ */
+ public double getHeaderMargin()
+ {
+ return printSetupRecord.getHeaderMargin();
+ }
+
+ /**
+ * Returns the footer margin.
+ * @return footer margin
+ */
+ public double getFooterMargin()
+ {
+ return printSetupRecord.getFooterMargin();
+ }
+
+ /**
+ * Returns the number of copies.
+ * @return number of copies
+ */
+ public short getCopies()
+ {
+ return printSetupRecord.getCopies();
+ }
+}