Index: src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java =================================================================== --- src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java (revisione 7623) +++ src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java (revisione 7627) @@ -348,7 +348,7 @@ public short getSelectedTab() { short i = 0; for (XSSFSheet sheet : this.sheets) { - if (sheet.isTabSelected()) { + if (sheet.isSelected()) { return i; } ++i; @@ -444,7 +444,7 @@ public void setSelectedTab(short index) { for (int i = 0 ; i < this.sheets.size() ; ++i) { XSSFSheet sheet = this.sheets.get(i); - sheet.setTabSelected(i == index); + sheet.setSelected(i == index); } } Index: src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java =================================================================== --- src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java (revisione 7623) +++ src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java (revisione 7627) @@ -44,6 +44,7 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheet; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetFormatPr; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetPr; +import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetProtection; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetView; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetViews; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet; @@ -337,7 +338,6 @@ } public short getLeftCol() { - // TODO no test for this method at the moment. String cellRef = worksheet.getSheetViews().getSheetViewArray(0).getTopLeftCell(); CellReference cellReference = new CellReference(cellRef); return cellReference.getCol(); @@ -457,20 +457,29 @@ } public boolean getScenarioProtect() { - // TODO Auto-generated method stub - return false; + return getSheetTypeProtection().getScenarios(); } + protected CTSheetProtection getSheetTypeProtection() { + if (worksheet.getSheetProtection() == null) { + worksheet.setSheetProtection(CTSheetProtection.Factory.newInstance()); + } + return worksheet.getSheetProtection(); + } + public short getTopRow() { - // TODO no test for this method at the moment. - String cellRef = worksheet.getSheetViews().getSheetViewArray(0).getTopLeftCell(); + String cellRef = getSheetTypeSheetView().getTopLeftCell(); CellReference cellReference = new CellReference(cellRef); return (short) cellReference.getRow(); } + // Right signature method. Remove the wrong one when it will be removed in HSSFSheet (and interface) + public boolean getVerticallyCenter() { + return getVerticallyCenter(true); + } + public boolean getVerticallyCenter(boolean value) { - // TODO Auto-generated method stub - return false; + return getSheetTypePrintOptions().getVerticalCentered(); } public void groupColumn(short fromColumn, short toColumn) { @@ -726,19 +735,29 @@ } - public void setSelected(boolean sel) { - // TODO Auto-generated method stub + public void setVerticallyCenter(boolean value) { + getSheetTypePrintOptions().setVerticalCentered(value); + } + // HSSFSheet compatibility methods. See also the following zoom related methods + public void setZoom(int numerator, int denominator) { + setZoom((numerator/denominator) * 100); } - public void setVerticallyCenter(boolean value) { - // TODO Auto-generated method stub + public void setZoom(long scale) { + getSheetTypeSheetView().setZoomScale(scale); + } + public void setZoomNormal(long scale) { + getSheetTypeSheetView().setZoomScaleNormal(scale); } - public void setZoom(int numerator, int denominator) { - // TODO Auto-generated method stub + public void setZoomPageLayoutView(long scale) { + getSheetTypeSheetView().setZoomScalePageLayoutView(scale); + } + public void setZoomSheetLayoutView(long scale) { + getSheetTypeSheetView().setZoomScaleSheetLayoutView(scale); } public void shiftRows(int startRow, int endRow, int n) { @@ -752,8 +771,9 @@ } public void showInPane(short toprow, short leftcol) { - // TODO Auto-generated method stub - + CellReference cellReference = new CellReference(); + String cellRef = cellReference.convertRowColToString(toprow, leftcol); + getSheetTypeSheetView().setTopLeftCell(cellRef); } public void ungroupColumn(short fromColumn, short toColumn) { @@ -766,7 +786,7 @@ } - public void setTabSelected(boolean flag) { + public void setSelected(boolean flag) { CTSheetViews views = getSheetTypeSheetViews(); for (CTSheetView view : views.getSheetViewArray()) { view.setTabSelected(flag); @@ -781,7 +801,7 @@ return worksheet.getSheetViews(); } - public boolean isTabSelected() { + public boolean isSelected() { CTSheetView view = getDefaultSheetView(); return view != null && view.getTabSelected(); } Index: src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDialogsheet.java =================================================================== --- src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDialogsheet.java (revisione 7623) +++ src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDialogsheet.java (revisione 7627) @@ -28,6 +28,7 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheet; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetFormatPr; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetPr; +import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetProtection; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetViews; public class XSSFDialogsheet extends XSSFSheet implements Sheet{ @@ -96,5 +97,12 @@ } return dialogsheet.getPrintOptions(); } + + protected CTSheetProtection getSheetTypeProtection() { + if (dialogsheet.getSheetProtection() == null) { + dialogsheet.setSheetProtection(CTSheetProtection.Factory.newInstance()); + } + return dialogsheet.getSheetProtection(); + } } Index: src/ooxml/java/org/apache/poi/xssf/util/CellReference.java =================================================================== --- src/ooxml/java/org/apache/poi/xssf/util/CellReference.java (revisione 7623) +++ src/ooxml/java/org/apache/poi/xssf/util/CellReference.java (revisione 7627) @@ -85,18 +85,18 @@ double div = 1; double mod = 0; for (int i = 0 ; div >= 1 ; i ++) { - System.err.println("col: " + col); mod = col % 26; div = col / 26; int AsciiIncrement = (i != 0 ? 64 : 65); char modToChar = (char)(mod + AsciiIncrement); - System.err.println("mod: " + mod); - System.err.println("div: " + div); - System.err.println("modToChar: " + modToChar); colRef = modToChar + colRef; col = (short) ((col - mod) / 26); } return colRef; } + + public String convertRowColToString(short row, short col) { + return convertNumToColString(col) + ((short) (row + 1)); + } } Index: src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDialogSheet.java =================================================================== --- src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDialogSheet.java (revisione 7623) +++ src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDialogSheet.java (revisione 7627) @@ -174,6 +174,16 @@ assertFalse(sheet.getHorizontallyCenter()); } + public void testGetSetVerticallyCentered() { + XSSFWorkbook workbook = new XSSFWorkbook(); + XSSFDialogsheet sheet = (XSSFDialogsheet) workbook.createDialogsheet("Dialogsheet 1", null); + assertFalse(sheet.getVerticallyCenter()); + sheet.setVerticallyCenter(true); + assertTrue(sheet.getVerticallyCenter()); + sheet.setVerticallyCenter(false); + assertFalse(sheet.getVerticallyCenter()); + } + public void testIsSetPrintGridlines() { XSSFWorkbook workbook = new XSSFWorkbook(); XSSFDialogsheet sheet = (XSSFDialogsheet) workbook.createDialogsheet("Dialogsheet 1", null); @@ -205,5 +215,11 @@ sheet.setDisplayRowColHeadings(false); assertFalse(sheet.isDisplayRowColHeadings()); } + + public void testGetScenarioProtect() { + XSSFWorkbook workbook = new XSSFWorkbook(); + XSSFDialogsheet sheet = (XSSFDialogsheet) workbook.createDialogsheet("Dialogsheet 1", null); + assertFalse(sheet.getScenarioProtect()); + } } Index: src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java =================================================================== --- src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java (revisione 7623) +++ src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java (revisione 7627) @@ -358,6 +358,16 @@ assertFalse(sheet.getHorizontallyCenter()); } + public void testGetSetVerticallyCentered() { + XSSFWorkbook workbook = new XSSFWorkbook(); + XSSFSheet sheet = (XSSFSheet) workbook.createSheet("Sheet 1"); + assertFalse(sheet.getVerticallyCenter()); + sheet.setVerticallyCenter(true); + assertTrue(sheet.getVerticallyCenter()); + sheet.setVerticallyCenter(false); + assertFalse(sheet.getVerticallyCenter()); + } + public void testIsSetPrintGridlines() { XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet sheet = (XSSFSheet) workbook.createSheet("Sheet 1"); @@ -389,4 +399,21 @@ sheet.setDisplayRowColHeadings(false); assertFalse(sheet.isDisplayRowColHeadings()); } + + public void testGetScenarioProtect() { + XSSFWorkbook workbook = new XSSFWorkbook(); + XSSFSheet sheet = (XSSFSheet) workbook.createSheet("Sheet 1"); + assertFalse(sheet.getScenarioProtect()); + } + + public void testTopRowLeftCol() { + XSSFWorkbook workbook = new XSSFWorkbook(); + XSSFSheet sheet = (XSSFSheet) workbook.createSheet("Sheet 1"); + sheet.showInPane((short)1, (short)1); + assertEquals((short) 1, sheet.getTopRow()); + assertEquals((short) 1, sheet.getLeftCol()); + sheet.showInPane((short)2, (short)26); + assertEquals((short) 2, sheet.getTopRow()); + assertEquals((short) 26, sheet.getLeftCol()); + } }