package fvt.uno.sc.rowcolumn; import static org.junit.Assert.*; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.openoffice.test.uno.UnoApp; import testlib.uno.SCUtil; import testlib.uno.TestUtil; import com.sun.star.lang.XComponent; import com.sun.star.sheet.XSpreadsheet; import com.sun.star.sheet.XSpreadsheetDocument; import com.sun.star.table.CellAddress; import com.sun.star.table.XCell; import com.sun.star.uno.UnoRuntime; import com.sun.star.sheet.XCellAddressable; import com.sun.star.sheet.XSheetAnnotations; import com.sun.star.sheet.XSheetAnnotationsSupplier; import com.sun.star.sheet.XSheetAnnotation; import com.sun.star.sheet.XSheetAnnotationAnchor; import com.sun.star.sheet.XSpreadsheets; import com.sun.star.container.XIndexAccess; /** * Test Create Show Hide Edit Delete Comments * @author BinGuo 9/5/2012 * */ public class CreateShowHideEditDeleteComments { UnoApp unoApp = new UnoApp(); XSpreadsheetDocument scDocument = null; XComponent scComponent = null; @Before public void setUp() throws Exception { unoApp.start(); } @After public void tearDown() throws Exception { unoApp.closeDocument(scComponent); unoApp.close(); } @BeforeClass public static void setUpConnection() throws Exception { // unoApp.start(); } @AfterClass public static void tearDownConnection() throws InterruptedException, Exception { // unoApp.close(); SCUtil.clearTempDir(); } /** * New a spreadsheet * Insert annotations for A1:A5 * Delete the 2nd annotations for A1:A5 * Edit text in annotation */ @Test public void testCreateEditDeleteComments() throws Exception { scComponent = unoApp.newDocument("scalc"); scDocument = (XSpreadsheetDocument) UnoRuntime.queryInterface(XSpreadsheetDocument.class, scComponent); XSpreadsheets xSpreadsheets = scDocument.getSheets(); // Gets the first sheet in the document. XIndexAccess xSheetsIA = (XIndexAccess)UnoRuntime.queryInterface(XIndexAccess.class, xSpreadsheets); Object sheetObj = (XSpreadsheet)UnoRuntime.queryInterface(XSpreadsheet.class, xSheetsIA.getByIndex(0)); XSpreadsheet xSheet = (XSpreadsheet) UnoRuntime.queryInterface(XSpreadsheet.class, sheetObj); // Get current sheet xSheet = SCUtil.getCurrentSheet(scDocument); // Create cell range A2:A5 and Add annotation for cells int nRow = 1; for (int i = 1; i < 5; ++i) { XCell xCell = xSheet.getCellByPosition(0, nRow); xCell.setValue(nRow); // Create the CellAddress structure XCellAddressable xCellAddr = (XCellAddressable) UnoRuntime.queryInterface(XCellAddressable.class, xCell); CellAddress aAddress = xCellAddr.getCellAddress(); // Insert an annotation XSheetAnnotationsSupplier xAnnotationsSupp = (XSheetAnnotationsSupplier) UnoRuntime.queryInterface( XSheetAnnotationsSupplier.class, xSheet); XSheetAnnotations xAnnotations = xAnnotationsSupp.getAnnotations(); xAnnotations.insertNew(aAddress, "This is an annotation"); nRow += 1; } XSheetAnnotationsSupplier xAnnotationsSupp = (XSheetAnnotationsSupplier) UnoRuntime.queryInterface( XSheetAnnotationsSupplier.class, xSheet); XSheetAnnotations xAnnotations = xAnnotationsSupp.getAnnotations(); // Verify results after insert annotations for cell range A2:A5 assertEquals("Verify total number of annotations after execute insert annotations." ,4, xAnnotations.getCount()); // Remove annotation xAnnotations.removeByIndex(1); // Verify results after delete annotations from cell range A2:A5 assertEquals("Verify number of annotations after execute delete annotations." ,3, xAnnotations.getCount()); } /** * New a spreadsheet * Insert annotations for B2 * Show it * Hide it */ @Test public void testShowHideComments() throws Exception { scComponent = unoApp.newDocument("scalc"); scDocument = (XSpreadsheetDocument) UnoRuntime.queryInterface(XSpreadsheetDocument.class, scComponent); XSpreadsheets xSpreadsheets = scDocument.getSheets(); // Gets the first sheet in the document. XIndexAccess xSheetsIA = (XIndexAccess)UnoRuntime.queryInterface(XIndexAccess.class, xSpreadsheets); Object sheetObj = (XSpreadsheet)UnoRuntime.queryInterface(XSpreadsheet.class, xSheetsIA.getByIndex(0)); XSpreadsheet xSheet = (XSpreadsheet) UnoRuntime.queryInterface(XSpreadsheet.class, sheetObj); // Get current sheet xSheet = SCUtil.getCurrentSheet(scDocument); // Create the CellAddress structure // Get Cell B2 int nColumn = 1; int nRow = 1; XCell xCell = xSheet.getCellByPosition(nColumn, nRow); XCellAddressable xCellAddr = (XCellAddressable) UnoRuntime.queryInterface(XCellAddressable.class, xCell); CellAddress aAddress = xCellAddr.getCellAddress(); // Insert an annotation XSheetAnnotationsSupplier xAnnotationsSupp = (XSheetAnnotationsSupplier) UnoRuntime.queryInterface( XSheetAnnotationsSupplier.class, xSheet); XSheetAnnotations xAnnotations = xAnnotationsSupp.getAnnotations(); xAnnotations.insertNew(aAddress, "This is an annotation"); XSheetAnnotationAnchor xAnnotAnchor = (XSheetAnnotationAnchor) UnoRuntime.queryInterface(XSheetAnnotationAnchor.class, xCell); XSheetAnnotation xAnnotation = xAnnotAnchor.getAnnotation(); // Make the annotation visible xAnnotation.setIsVisible(true); //////// TestUtil.printPropertiesList(xAnnotAnchor); //////////////// // Verify annotation is visible. assertTrue("Verify annotation is visible in cell B2.",xAnnotation.getIsVisible()); // Make the annotation invisible xAnnotation.setIsVisible(false); // Verify annotation is invisible. assertFalse("Verify annotation is invisible in cell B2.",xAnnotation.getIsVisible()); } }