1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 package fvt.uno.sc.rowcolumn; 23 24 import static org.junit.Assert.*; 25 import static testlib.uno.SCUtil.*; 26 27 import org.junit.After; 28 import org.junit.Before; 29 import org.junit.Test; 30 import org.openoffice.test.uno.UnoApp; 31 32 import com.sun.star.lang.XComponent; 33 import com.sun.star.sheet.XSpreadsheet; 34 import com.sun.star.sheet.XSpreadsheetDocument; 35 import com.sun.star.sheet.XSpreadsheets; 36 import com.sun.star.uno.UnoRuntime; 37 import com.sun.star.table.XTableColumns; 38 import com.sun.star.table.XTableRows; 39 import com.sun.star.table.XColumnRowRange; 40 import com.sun.star.beans.XPropertySet; 41 import com.sun.star.table.XCellRange; 42 import com.sun.star.frame.XModel; 43 import com.sun.star.frame.XController; 44 import com.sun.star.sheet.XSpreadsheetView; 45 46 47 public class ResizeHideShowRowColumn { 48 49 UnoApp unoApp = new UnoApp(); 50 XSpreadsheetDocument scDocument = null; 51 XComponent scComponent = null; 52 53 @Before 54 public void setUp() throws Exception { 55 unoApp.start(); 56 } 57 58 @After 59 public void tearDown() throws Exception { 60 unoApp.closeDocument(scComponent); 61 unoApp.close(); 62 } 63 64 @Test 65 public void testResizeColumn() throws Exception { 66 String sheetname = "AddTest"; 67 XPropertySet PropSet = null; 68 69 //Create Spreadsheet file. 70 scComponent = unoApp.newDocument("scalc"); 71 scDocument = (XSpreadsheetDocument) UnoRuntime.queryInterface(XSpreadsheetDocument.class, scComponent); 72 73 //Create a sheet at the first place. 74 XSpreadsheets spreadsheets = scDocument.getSheets(); 75 spreadsheets.insertNewByName(sheetname, (short) 0); 76 Object sheetObj = spreadsheets.getByName(sheetname); 77 78 XSpreadsheet sheet = (XSpreadsheet) UnoRuntime.queryInterface(XSpreadsheet.class, sheetObj); 79 80 //Active the new sheet. 81 XModel scModel = (XModel) UnoRuntime.queryInterface(XModel.class, scDocument); 82 XController scController = scModel.getCurrentController(); 83 XSpreadsheetView sheetview = (XSpreadsheetView) UnoRuntime.queryInterface(XSpreadsheetView.class, scController); 84 sheetview.setActiveSheet(sheet); 85 86 //Set cell range to A1:B1 87 XCellRange CellRange = sheet.getCellRangeByPosition(0, 0, 1, 0); 88 89 //Get column A1 by index 90 XColumnRowRange ColRowRange = (XColumnRowRange)UnoRuntime.queryInterface( XColumnRowRange.class, CellRange ); 91 XTableColumns Columns = ColRowRange.getColumns(); 92 Object aColumnObj = Columns.getByIndex( 0 ); 93 94 PropSet = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, aColumnObj); 95 96 //Verify the default values of specified column A1 97 assertTrue("Verify column is visible as default.", (Boolean) PropSet.getPropertyValue("IsVisible")); 98 99 //Resize width of column A1 to "6001" 100 PropSet.setPropertyValue( "Width", new Integer( 6001 )); 101 102 //Save and reload document 103 saveFileAs(scComponent, "TestColumn", "ods"); 104 XSpreadsheetDocument TempSCDocument = reloadFile(unoApp, scDocument, "TestColumn.ods"); 105 scDocument = TempSCDocument; 106 107 spreadsheets = scDocument.getSheets(); 108 sheetObj = spreadsheets.getByName(sheetname); 109 sheet = (XSpreadsheet) UnoRuntime.queryInterface(XSpreadsheet.class, sheetObj); 110 111 //Set cell range to A1:B1 112 CellRange = sheet.getCellRangeByPosition(0, 0, 1, 0); 113 ColRowRange = (XColumnRowRange)UnoRuntime.queryInterface( XColumnRowRange.class, CellRange ); 114 Columns = ColRowRange.getColumns(); 115 116 //Get column A1 by index 117 aColumnObj = Columns.getByIndex( 0 ); 118 119 PropSet = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, aColumnObj); 120 121 //Verify the values of specified column A1 after resize 122 int expectedWidth = 6001; 123 124 assertEquals("Verify current width value is 6001.", expectedWidth, PropSet.getPropertyValue("Width")); 125 assertTrue("Verify column is visible as default.", (Boolean) PropSet.getPropertyValue("IsVisible")); 126 127 //Set column is invisible 128 PropSet.setPropertyValue("IsVisible", new Boolean(false)); 129 130 //Save and reload document 131 //Save the modified spreadsheet first 132 save(TempSCDocument); 133 //close it and reload it 134 TempSCDocument = reloadFile(unoApp, scDocument, "TestColumn.ods"); 135 scDocument = TempSCDocument; 136 137 spreadsheets = scDocument.getSheets(); 138 sheetObj = spreadsheets.getByName(sheetname); 139 sheet = (XSpreadsheet) UnoRuntime.queryInterface(XSpreadsheet.class, sheetObj); 140 141 //Set cell range to A1:B1 142 CellRange = sheet.getCellRangeByPosition(0, 0, 1, 0); 143 ColRowRange = (XColumnRowRange)UnoRuntime.queryInterface( XColumnRowRange.class, CellRange ); 144 Columns = ColRowRange.getColumns(); 145 146 //Get column A1 by index 147 aColumnObj = Columns.getByIndex( 0 ); 148 149 PropSet = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, aColumnObj); 150 151 //Verify the values of specified column A1 after save 152 assertFalse("Verify column A1 is invisible", (Boolean) PropSet.getPropertyValue("IsVisible")); 153 assertEquals("Verify current width value is 6001 after hide it.", expectedWidth, PropSet.getPropertyValue("Width")); 154 } 155 156 @Test 157 public void testResizeRow() throws Exception { 158 String sheetname = "AddTest"; 159 XPropertySet PropSet = null; 160 161 //Create Spreadsheet file. 162 scComponent = unoApp.newDocument("scalc"); 163 scDocument = (XSpreadsheetDocument) UnoRuntime.queryInterface(XSpreadsheetDocument.class, scComponent); 164 165 //Create a sheet at the first place. 166 XSpreadsheets spreadsheets = scDocument.getSheets(); 167 spreadsheets.insertNewByName(sheetname, (short) 0); 168 Object sheetObj = spreadsheets.getByName(sheetname); 169 XSpreadsheet sheet = (XSpreadsheet) UnoRuntime.queryInterface(XSpreadsheet.class, sheetObj); 170 171 //Active the new sheet. 172 XModel scModel = (XModel) UnoRuntime.queryInterface(XModel.class, scDocument); 173 XController scController = scModel.getCurrentController(); 174 XSpreadsheetView sheetview = (XSpreadsheetView) UnoRuntime.queryInterface(XSpreadsheetView.class, scController); 175 sheetview.setActiveSheet(sheet); 176 177 //Set cell range to A1:A2 178 XCellRange CellRange = sheet.getCellRangeByPosition(0, 0, 0, 1); 179 //XCell cell = sheet.getCellByPosition(1, 0); 180 XColumnRowRange ColRowRange = (XColumnRowRange)UnoRuntime.queryInterface( XColumnRowRange.class, CellRange ); 181 XTableRows Rows = ColRowRange.getRows(); 182 183 //Get Row 1 by index 184 Object aRowObj = Rows.getByIndex( 0 ); 185 186 PropSet = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, aRowObj ); 187 188 //Verify the default values of specified Row 1 189 assertTrue("Verify column is visible as default.", (Boolean) PropSet.getPropertyValue("IsVisible")); 190 191 //Resize Height of Row 1 to "5001" 192 PropSet.setPropertyValue( "Height", new Integer( 5001 ) ); 193 194 // Save and reload document 195 saveFileAs(scComponent, "TestRow", "xls"); 196 XSpreadsheetDocument TempSCDocument = reloadFile(unoApp, scDocument, "TestRow.xls"); 197 scDocument = TempSCDocument; 198 199 spreadsheets = scDocument.getSheets(); 200 sheetObj = spreadsheets.getByName(sheetname); 201 sheet = (XSpreadsheet) UnoRuntime.queryInterface(XSpreadsheet.class, sheetObj); 202 203 //Set cell range to A1:A2 204 CellRange = sheet.getCellRangeByPosition(0, 0, 0, 1); 205 ColRowRange = (XColumnRowRange)UnoRuntime.queryInterface( XColumnRowRange.class, CellRange ); 206 Rows = ColRowRange.getRows(); 207 208 //Get Row 1 by index 209 aRowObj = Rows.getByIndex( 0 ); 210 211 PropSet = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, aRowObj); 212 213 //Verify the values of specified Row 1 after resize 214 int expectedHeight = 5001; 215 216 assertEquals("Verify current width value is 5001.", expectedHeight, PropSet.getPropertyValue("Height")); 217 assertTrue("Verify column is visible as default.", (Boolean) PropSet.getPropertyValue("IsVisible")); 218 219 //Set Row is invisible 220 PropSet.setPropertyValue("IsVisible", new Boolean(false)); 221 222 //Save and reload document 223 //Save the modified spreadsheet first 224 save(TempSCDocument); 225 //Close and reload it 226 TempSCDocument = reloadFile(unoApp, scDocument, "TestRow.xls"); 227 scDocument = TempSCDocument; 228 229 spreadsheets = scDocument.getSheets(); 230 sheetObj = spreadsheets.getByName(sheetname); 231 sheet = (XSpreadsheet) UnoRuntime.queryInterface(XSpreadsheet.class, sheetObj); 232 233 //Set cell range to A1:A2 234 CellRange = sheet.getCellRangeByPosition(0, 0, 0, 1); 235 ColRowRange = (XColumnRowRange)UnoRuntime.queryInterface( XColumnRowRange.class, CellRange ); 236 Rows = ColRowRange.getRows(); 237 238 //Get Row 1 by index 239 aRowObj = Rows.getByIndex( 0 ); 240 241 PropSet = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, aRowObj); 242 243 //Verify the values of specified Row 1 after resize 244 assertEquals("Verify current height value is 5001 after hide it.", expectedHeight, PropSet.getPropertyValue("Height")); 245 assertFalse("Verify column is invisible.", (Boolean) PropSet.getPropertyValue("IsVisible")); 246 247 } 248 249 } 250 251 252