]> source.dussan.org Git - poi.git/commitdiff
Adding changes recently added to release 2. Includes rewrite of margin code, fixes...
authorShawn Laubach <slaubach@apache.org>
Fri, 25 Jul 2003 13:39:08 +0000 (13:39 +0000)
committerShawn Laubach <slaubach@apache.org>
Fri, 25 Jul 2003 13:39:08 +0000 (13:39 +0000)
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@353242 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/hssf/model/Sheet.java
src/java/org/apache/poi/hssf/usermodel/HSSFPrintSetup.java
src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java
src/testcases/org/apache/poi/hssf/usermodel/TestWorkbook.java

index 80010ac3aee360b948a5c5c86888821ef9b284f3..881a6790f44f28737d8085f69edc74b75a7f5fc4 100644 (file)
@@ -109,6 +109,7 @@ public class Sheet implements Model
     protected FooterRecord              footer           = null;
     protected PrintGridlinesRecord      printGridlines   = null;
     protected MergeCellsRecord          merged           = null;
+    protected Margin                    margins[]        = null;
     protected ArrayList                 mergedRecords    = new ArrayList();
     protected ArrayList                 mergedLocs       = new ArrayList();
     protected int                       numMergedRegions = 0;
@@ -263,7 +264,23 @@ public class Sheet implements Model
             {
                 retval.printSetup = (PrintSetupRecord) rec;
             }
-
+           else if ( rec.getSid() == LeftMarginRecord.sid)
+           {
+               retval.getMargins()[LeftMargin] = (LeftMarginRecord) rec;
+           }
+           else if ( rec.getSid() == RightMarginRecord.sid)
+           {
+               retval.getMargins()[RightMargin] = (RightMarginRecord) rec;
+           }
+           else if ( rec.getSid() == TopMarginRecord.sid)
+            {
+               retval.getMargins()[TopMargin] = (TopMarginRecord) rec;
+           }
+           else if ( rec.getSid() == BottomMarginRecord.sid)
+            {
+               retval.getMargins()[BottomMargin] = (BottomMarginRecord) rec;
+           }
+           
             if (rec != null)
             {
                 records.add(rec);
@@ -2391,82 +2408,59 @@ public class Sheet implements Model
       * @param margin which margin to get
       * @return the size of the margin
       */
-     public double getMargin(short margin) {
-         Margin m;
-         switch ( margin )
-         {
-             case LeftMargin:
-                 m = (Margin) findFirstRecordBySid( LeftMarginRecord.sid );
-                 if ( m == null )
-                     return .75;
-                 break;
-             case RightMargin:
-                 m = (Margin) findFirstRecordBySid( RightMarginRecord.sid );
-                 if ( m == null )
-                     return .75;
-                 break;
-             case TopMargin:
-                 m = (Margin) findFirstRecordBySid( TopMarginRecord.sid );
-                 if ( m == null )
-                     return 1.0;
-                 break;
-             case BottomMargin:
-                 m = (Margin) findFirstRecordBySid( BottomMarginRecord.sid );
-                 if ( m == null )
-                     return 1.0;
-                 break;
-             default :
-                 throw new RuntimeException( "Unknown margin constant:  " + margin );
-         }
-         return m.getMargin();
-     }
+    public double getMargin(short margin) {
+       if (getMargins()[margin] != null)
+           return margins[margin].getMargin();
+       else {
+           switch ( margin )
+               {
+               case LeftMargin:
+                   return .75;
+               case RightMargin:
+                   return .75;
+               case TopMargin:
+                   return 1.0;
+               case BottomMargin:
+                   return 1.0;
+               default :
+                   throw new RuntimeException( "Unknown margin constant:  " + margin );
+               }
+       }
+    }
 
      /**
       * Sets the size of the margin in inches.
       * @param margin which margin to get
       * @param size the size of the margin
       */
-     public void setMargin(short margin, double size) {
-         Margin m;
-         switch ( margin )
-         {
-             case LeftMargin:
-                 m = (Margin) findFirstRecordBySid( LeftMarginRecord.sid );
-                 if ( m == null )
-                 {
-                     m = new LeftMarginRecord();
-                     records.add( getDimsLoc() + 1, m );
-                 }
-                 break;
-             case RightMargin:
-                 m = (Margin) findFirstRecordBySid( RightMarginRecord.sid );
-                 if ( m == null )
-                 {
-                     m = new RightMarginRecord();
-                     records.add( getDimsLoc() + 1, m );
-                 }
-                 break;
-             case TopMargin:
-                 m = (Margin) findFirstRecordBySid( TopMarginRecord.sid );
-                 if ( m == null )
-                 {
-                     m = new TopMarginRecord();
-                     records.add( getDimsLoc() + 1, m );
-                 }
-                 break;
-             case BottomMargin:
-                 m = (Margin) findFirstRecordBySid( BottomMarginRecord.sid );
-                 if ( m == null )
-                 {
-                     m = new BottomMarginRecord();
-                     records.add( getDimsLoc() + 1, m );
-                 }
-                 break;
-             default :
-                 throw new RuntimeException( "Unknown margin constant:  " + margin );
-         }
-         m.setMargin( size );
-     }
+    public void setMargin(short margin, double size) {
+       Margin m = getMargins()[margin];
+       if (m  == null) {
+           switch ( margin )
+               {
+               case LeftMargin:
+                   m = new LeftMarginRecord();
+                   records.add( getDimsLoc() + 1, m );
+                   break;
+               case RightMargin:
+                   m = new RightMarginRecord();
+                   records.add( getDimsLoc() + 1, m );
+                   break;
+               case TopMargin:
+                   m = new TopMarginRecord();
+                   records.add( getDimsLoc() + 1, m );
+                   break;
+               case BottomMargin:
+                   m = new BottomMarginRecord();
+                   records.add( getDimsLoc() + 1, m );
+                   break;
+               default :
+                   throw new RuntimeException( "Unknown margin constant:  " + margin );
+               }
+           margins[margin] = m;
+       }
+       m.setMargin( size );
+    }
 
     public int getEofLoc()
     {
@@ -2590,4 +2584,15 @@ public class Sheet implements Model
         this.selection = selection;
     }
 
+    /**
+     * Returns the array of margins.  If not created, will create.
+     *
+     * @return the array of marings.
+     */
+    protected Margin[] getMargins() {
+        if (margins == null)
+            margins = new Margin[4];
+       return margins;
+    }
+
 }
index 9ea8c65d54144b3c889dc29f966cdd4188538c26..69085fda2c23135e3788652ccdb6eb116e8d26c6 100644 (file)
@@ -1 +1,397 @@
-/* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2003 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> * Paper size constants have been added for the ones I have access * to.  They follow as:<br> *  public final short LETTER_PAPERSIZE      = 1;<br> *  public final short LEGAL_PAPERSIZE                  = 5;<br> *  public final short EXECUTIVE_PAPERSIZE      = 7;<br> *  public final short A4_PAPERSIZE             = 9;<br> *  public final short A5_PAPERSIZE             = 11;<br> *  public final short ENVELOPE_10_PAPERSIZE           = 20;<br> *  public final short ENVELOPE_DL_PAPERSIZE           = 27;<br> *  public final short ENVELOPE_CS_PAPERSIZE           = 28;<br> *  public final short ENVELOPE_MONARCH_PAPERSIZE = 37;<br> * <P> * @author Shawn Laubach (slaubach at apache dot org) */public class HSSFPrintSetup extends Object {    public final short LETTER_PAPERSIZE           = 1;    public final short LEGAL_PAPERSIZE              = 5;    public final short EXECUTIVE_PAPERSIZE          = 7;    public final short A4_PAPERSIZE                 = 9;    public final short A5_PAPERSIZE                 = 11;    public final short ENVELOPE_10_PAPERSIZE       = 20;    public final short ENVELOPE_DL_PAPERSIZE       = 27;    public final short ENVELOPE_CS_PAPERSIZE       = 28;    public final short ENVELOPE_MONARCH_PAPERSIZE = 37;    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();    }}
\ No newline at end of file
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2003 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>
+ * Paper size constants have been added for the ones I have access
+ * to.  They follow as:<br>
+ *  public final short LETTER_PAPERSIZE    = 1;<br>
+ *  public final short LEGAL_PAPERSIZE     = 5;<br>
+ *  public final short EXECUTIVE_PAPERSIZE    = 7;<br>
+ *  public final short A4_PAPERSIZE       = 9;<br>
+ *  public final short A5_PAPERSIZE     = 11;<br>
+ *  public final short ENVELOPE_10_PAPERSIZE    = 20;<br>
+ *  public final short ENVELOPE_DL_PAPERSIZE    = 27;<br>
+ *  public final short ENVELOPE_CS_PAPERSIZE    = 28;<br>
+ *  public final short ENVELOPE_MONARCH_PAPERSIZE = 37;<br>
+ * <P>
+ * @author Shawn Laubach (slaubach at apache dot org)
+ */
+public class HSSFPrintSetup extends Object {
+    public final short LETTER_PAPERSIZE = 1;
+    public final short LEGAL_PAPERSIZE = 5;
+    public final short EXECUTIVE_PAPERSIZE = 7;
+    public final short A4_PAPERSIZE = 9;
+    public final short A5_PAPERSIZE = 11;
+    public final short ENVELOPE_10_PAPERSIZE = 20;
+    public final short ENVELOPE_DL_PAPERSIZE = 27;
+    public final short ENVELOPE_CS_PAPERSIZE = 28;
+    public final short ENVELOPE_MONARCH_PAPERSIZE = 37;
+    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 ();
+    }
+}
index 04f80af5a3d154faa827ab8fc31da38dd23ccddc..70e08ced2eca6fa784de9be0742104dd0a5d5878 100644 (file)
@@ -140,6 +140,14 @@ public class HSSFWorkbook
      * memory.
      */
     private POIFSFileSystem poifs;
+
+    /**
+     * Used to keep track of the data formatter so that all
+     * createDataFormatter calls return the same one for a given
+     * book.  This ensures that updates from one places is visible
+     * someplace else.
+     */
+    private HSSFDataFormat formatter;
     
     private static POILogger log = POILogFactory.getLogger(HSSFWorkbook.class);
 
@@ -938,13 +946,15 @@ public class HSSFWorkbook
     }
 
     /**
-     * Creates an instance of HSSFDataFormat.
+     * Returns the instance of HSSFDataFormat for this workbook.
      * @return the HSSFDataFormat object
      * @see org.apache.poi.hssf.record.FormatRecord
      * @see org.apache.poi.hssf.record.Record
      */
     public HSSFDataFormat createDataFormat() {
-        return new HSSFDataFormat(workbook);
+       if (formatter == null)
+           formatter = new HSSFDataFormat(workbook);
+       return formatter;
     }
        
     /** remove the named range by his name
index c8bc7b86b6c1466efe74e946e80a09cc2e792afc..6b5fd974400882dfd781208787dc1c63a5e54bf7 100644 (file)
@@ -304,6 +304,8 @@ public class TestWorkbook
         assertEquals(1.25,cell.getNumericCellValue(), 1e-10);
 
        assertEquals(format.getFormat(df), "0.0");
+
+       assertEquals(format, workbook.createDataFormat());
        
         stream.close();
     }