<changes>
<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">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>
*/
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());
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());
}
}
}