From: Nick Burch Date: Fri, 8 Apr 2011 15:41:36 +0000 (+0000) Subject: More test for bug #49381 / #50884 - xssf freeze panes X-Git-Tag: REL_3_8_BETA3~67 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=948fe2fc6f5adfde538b946992ce384da7e626d4;p=poi.git 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 --- diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index 6651b10f2d..f6b6933607 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -34,6 +34,7 @@ + 50884 - XSSF and HSSF freeze panes now behave the same Support for adding a table to a XSSFSheet Improve HSMF MAPIMessage access to the HTML and RTF versions of the message body (where available) Add new method to HSMF of MAPIMessage.has7BitEncodingStrings() to make it easier to decide when encoding guessing is needed diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java index 80cfd91476..2d8ccf970b 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java @@ -443,14 +443,23 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { */ public void createFreezePane(int colSplit, int rowSplit, int leftmostColumn, int topRow) { CTPane pane = getPane(); - if (colSplit > 0) pane.setXSplit(colSplit); - if (rowSplit > 0) pane.setYSplit(rowSplit); + if (colSplit > 0) { + pane.setXSplit(colSplit); + } else { + pane.unsetXSplit(); + } + if (rowSplit > 0) { + pane.setYSplit(rowSplit); + } else { + pane.unsetYSplit(); + } + pane.setState(STPaneState.FROZEN); if (rowSplit == 0) { - pane.setTopLeftCell(new CellReference(0, topRow).formatAsString()); + pane.setTopLeftCell(new CellReference(0, leftmostColumn).formatAsString()); pane.setActivePane(STPane.TOP_RIGHT); } else if (colSplit == 0) { - pane.setTopLeftCell(new CellReference(rowSplit, 0).formatAsString()); + pane.setTopLeftCell(new CellReference(topRow, 0).formatAsString()); pane.setActivePane(STPane.BOTTOM_LEFT); } else { pane.setTopLeftCell(new CellReference(topRow, leftmostColumn).formatAsString()); diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index cf873f4d88..835b38627c 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -999,6 +999,29 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { assertEquals(rowSplit, paneInfo.getHorizontalSplitPosition()); assertEquals(leftmostColumn, paneInfo.getVerticalSplitLeftColumn()); 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()); } } }