More test for bug #49381 / #50884 - xssf freeze panes

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1090301 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Nick Burch 2011-04-08 15:41:36 +00:00
parent 098fb98073
commit b629d6f949
3 changed files with 37 additions and 4 deletions

View File

@ -34,6 +34,7 @@
<changes> <changes>
<release version="3.8-beta3" date="2011-??-??"> <release version="3.8-beta3" date="2011-??-??">
<action dev="poi-developers" type="fix">50884 - XSSF and HSSF freeze panes now behave the same</action>
<action dev="poi-developers" type="add">Support for adding a table to a XSSFSheet</action> <action dev="poi-developers" type="add">Support for adding a table to a XSSFSheet</action>
<action dev="poi-developers" type="add">Improve HSMF MAPIMessage access to the HTML and RTF versions of the message body (where available)</action> <action dev="poi-developers" type="add">Improve HSMF MAPIMessage access to the HTML and RTF versions of the message body (where available)</action>
<action dev="poi-developers" type="add">Add new method to HSMF of MAPIMessage.has7BitEncodingStrings() to make it easier to decide when encoding guessing is needed</action> <action dev="poi-developers" type="add">Add new method to HSMF of MAPIMessage.has7BitEncodingStrings() to make it easier to decide when encoding guessing is needed</action>

View File

@ -443,14 +443,23 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
*/ */
public void createFreezePane(int colSplit, int rowSplit, int leftmostColumn, int topRow) { public void createFreezePane(int colSplit, int rowSplit, int leftmostColumn, int topRow) {
CTPane pane = getPane(); CTPane pane = getPane();
if (colSplit > 0) pane.setXSplit(colSplit); if (colSplit > 0) {
if (rowSplit > 0) pane.setYSplit(rowSplit); pane.setXSplit(colSplit);
} else {
pane.unsetXSplit();
}
if (rowSplit > 0) {
pane.setYSplit(rowSplit);
} else {
pane.unsetYSplit();
}
pane.setState(STPaneState.FROZEN); pane.setState(STPaneState.FROZEN);
if (rowSplit == 0) { if (rowSplit == 0) {
pane.setTopLeftCell(new CellReference(0, topRow).formatAsString()); pane.setTopLeftCell(new CellReference(0, leftmostColumn).formatAsString());
pane.setActivePane(STPane.TOP_RIGHT); pane.setActivePane(STPane.TOP_RIGHT);
} else if (colSplit == 0) { } else if (colSplit == 0) {
pane.setTopLeftCell(new CellReference(rowSplit, 0).formatAsString()); pane.setTopLeftCell(new CellReference(topRow, 0).formatAsString());
pane.setActivePane(STPane.BOTTOM_LEFT); pane.setActivePane(STPane.BOTTOM_LEFT);
} else { } else {
pane.setTopLeftCell(new CellReference(topRow, leftmostColumn).formatAsString()); pane.setTopLeftCell(new CellReference(topRow, leftmostColumn).formatAsString());

View File

@ -999,6 +999,29 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues {
assertEquals(rowSplit, paneInfo.getHorizontalSplitPosition()); assertEquals(rowSplit, paneInfo.getHorizontalSplitPosition());
assertEquals(leftmostColumn, paneInfo.getVerticalSplitLeftColumn()); assertEquals(leftmostColumn, paneInfo.getVerticalSplitLeftColumn());
assertEquals(topRow, paneInfo.getHorizontalSplitTopRow()); assertEquals(topRow, paneInfo.getHorizontalSplitTopRow());
// Now a row only freezepane
s.createFreezePane(0, 3);
paneInfo = s.getPaneInformation();
assertEquals(0, paneInfo.getVerticalSplitPosition());
assertEquals(3, paneInfo.getHorizontalSplitPosition());
if(wb == wbs[0]) {
assertEquals(64, paneInfo.getVerticalSplitLeftColumn()); // HSSF
} else {
assertEquals(0, paneInfo.getVerticalSplitLeftColumn()); // XSSF
}
assertEquals(3, paneInfo.getHorizontalSplitTopRow());
// Now a column only freezepane
s.createFreezePane(4, 0);
paneInfo = s.getPaneInformation();
assertEquals(4, paneInfo.getVerticalSplitPosition());
assertEquals(0, paneInfo.getHorizontalSplitPosition());
assertEquals(4 , paneInfo.getVerticalSplitLeftColumn());
assertEquals(0, paneInfo.getHorizontalSplitTopRow());
} }
} }
} }