Adding changes recently added to release 2. Includes rewrite of margin code, fixes for duplicate DataFormat, and cleanup of files I noticed that was 1 line.
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@353242 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
a3c0dfd644
commit
df218dd45e
@ -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,6 +264,22 @@ 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)
|
||||
{
|
||||
@ -2392,33 +2409,23 @@ public class Sheet implements Model
|
||||
* @return the size of the margin
|
||||
*/
|
||||
public double getMargin(short margin) {
|
||||
Margin m;
|
||||
if (getMargins()[margin] != null)
|
||||
return margins[margin].getMargin();
|
||||
else {
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -2427,44 +2434,31 @@ public class Sheet implements Model
|
||||
* @param size the size of the margin
|
||||
*/
|
||||
public void setMargin(short margin, double size) {
|
||||
Margin m;
|
||||
Margin m = getMargins()[margin];
|
||||
if (m == null) {
|
||||
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 );
|
||||
}
|
||||
margins[margin] = m;
|
||||
}
|
||||
m.setMargin( size );
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
File diff suppressed because one or more lines are too long
@ -141,6 +141,14 @@ public class HSSFWorkbook
|
||||
*/
|
||||
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
|
||||
|
@ -305,6 +305,8 @@ public class TestWorkbook
|
||||
|
||||
assertEquals(format.getFormat(df), "0.0");
|
||||
|
||||
assertEquals(format, workbook.createDataFormat());
|
||||
|
||||
stream.close();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user