1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski package mod._sc; 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski import com.sun.star.container.NoSuchElementException; 27*b1cdbd2cSJim Jagielski import java.io.PrintWriter; 28*b1cdbd2cSJim Jagielski 29*b1cdbd2cSJim Jagielski import lib.StatusException; 30*b1cdbd2cSJim Jagielski import lib.TestCase; 31*b1cdbd2cSJim Jagielski import lib.TestEnvironment; 32*b1cdbd2cSJim Jagielski import lib.TestParameters; 33*b1cdbd2cSJim Jagielski import util.SOfficeFactory; 34*b1cdbd2cSJim Jagielski 35*b1cdbd2cSJim Jagielski import com.sun.star.container.XIndexAccess; 36*b1cdbd2cSJim Jagielski import com.sun.star.container.XNameContainer; 37*b1cdbd2cSJim Jagielski import com.sun.star.drawing.XDrawPage; 38*b1cdbd2cSJim Jagielski import com.sun.star.drawing.XDrawPages; 39*b1cdbd2cSJim Jagielski import com.sun.star.drawing.XDrawPagesSupplier; 40*b1cdbd2cSJim Jagielski import com.sun.star.drawing.XShape; 41*b1cdbd2cSJim Jagielski import com.sun.star.form.XForm; 42*b1cdbd2cSJim Jagielski import com.sun.star.frame.XController; 43*b1cdbd2cSJim Jagielski import com.sun.star.frame.XModel; 44*b1cdbd2cSJim Jagielski import com.sun.star.lang.WrappedTargetException; 45*b1cdbd2cSJim Jagielski import com.sun.star.lang.XComponent; 46*b1cdbd2cSJim Jagielski import com.sun.star.lang.XMultiServiceFactory; 47*b1cdbd2cSJim Jagielski import com.sun.star.sheet.XSpreadsheetDocument; 48*b1cdbd2cSJim Jagielski import com.sun.star.sheet.XViewPane; 49*b1cdbd2cSJim Jagielski import com.sun.star.table.CellRangeAddress; 50*b1cdbd2cSJim Jagielski import com.sun.star.uno.AnyConverter; 51*b1cdbd2cSJim Jagielski import com.sun.star.uno.Type; 52*b1cdbd2cSJim Jagielski import com.sun.star.uno.UnoRuntime; 53*b1cdbd2cSJim Jagielski import com.sun.star.uno.XInterface; 54*b1cdbd2cSJim Jagielski import util.FormTools; 55*b1cdbd2cSJim Jagielski 56*b1cdbd2cSJim Jagielski /** 57*b1cdbd2cSJim Jagielski * Test for object which is represented by service 58*b1cdbd2cSJim Jagielski * <code>com.sun.star.sheet.SpreadsheetViewPane</code>. <p> 59*b1cdbd2cSJim Jagielski * Object implements the following interfaces : 60*b1cdbd2cSJim Jagielski * <ul> 61*b1cdbd2cSJim Jagielski * <li> <code>com::sun::star::sheet::XViewPane</code></li> 62*b1cdbd2cSJim Jagielski * <li> <code>com::sun::star::sheet::XCellRangeReferrer</code></li> 63*b1cdbd2cSJim Jagielski * </ul> 64*b1cdbd2cSJim Jagielski * @see com.sun.star.sheet.SpreadsheetViewPane 65*b1cdbd2cSJim Jagielski * @see com.sun.star.sheet.XViewPane 66*b1cdbd2cSJim Jagielski * @see com.sun.star.sheet.XCellRangeReferrer 67*b1cdbd2cSJim Jagielski * @see ifc.sheet._XViewPane 68*b1cdbd2cSJim Jagielski * @see ifc.sheet._XCellRangeReferrer 69*b1cdbd2cSJim Jagielski */ 70*b1cdbd2cSJim Jagielski public class ScViewPaneObj extends TestCase { 71*b1cdbd2cSJim Jagielski static private XSpreadsheetDocument xSpreadsheetDoc; 72*b1cdbd2cSJim Jagielski static private SOfficeFactory SOF; 73*b1cdbd2cSJim Jagielski static private XInterface oObj; 74*b1cdbd2cSJim Jagielski 75*b1cdbd2cSJim Jagielski /** 76*b1cdbd2cSJim Jagielski * Creates Spreadsheet document. 77*b1cdbd2cSJim Jagielski */ initialize( TestParameters Param, PrintWriter log )78*b1cdbd2cSJim Jagielski public void initialize( TestParameters Param, PrintWriter log ) { 79*b1cdbd2cSJim Jagielski // get a soffice factory object 80*b1cdbd2cSJim Jagielski SOF = SOfficeFactory.getFactory( (XMultiServiceFactory)Param.getMSF()); 81*b1cdbd2cSJim Jagielski 82*b1cdbd2cSJim Jagielski try { 83*b1cdbd2cSJim Jagielski log.println("creating a spreadsheetdocument"); 84*b1cdbd2cSJim Jagielski xSpreadsheetDoc = SOF.createCalcDoc(null); 85*b1cdbd2cSJim Jagielski } catch (com.sun.star.uno.Exception e) { 86*b1cdbd2cSJim Jagielski e.printStackTrace( log ); 87*b1cdbd2cSJim Jagielski throw new StatusException( "Couldn't create document ", e ); 88*b1cdbd2cSJim Jagielski } 89*b1cdbd2cSJim Jagielski } 90*b1cdbd2cSJim Jagielski 91*b1cdbd2cSJim Jagielski /** 92*b1cdbd2cSJim Jagielski * Disposes Spreadsheet document. 93*b1cdbd2cSJim Jagielski */ cleanup( TestParameters tParam, PrintWriter log )94*b1cdbd2cSJim Jagielski protected void cleanup( TestParameters tParam, PrintWriter log ) { 95*b1cdbd2cSJim Jagielski log.println("disposing xSpreadsheetDocument"); 96*b1cdbd2cSJim Jagielski XComponent oComp = (XComponent) 97*b1cdbd2cSJim Jagielski UnoRuntime.queryInterface(XComponent.class, xSpreadsheetDoc); 98*b1cdbd2cSJim Jagielski util.DesktopTools.closeDoc(oComp); 99*b1cdbd2cSJim Jagielski } 100*b1cdbd2cSJim Jagielski 101*b1cdbd2cSJim Jagielski /** 102*b1cdbd2cSJim Jagielski * Creating a Testenvironment for the interfaces to be tested. 103*b1cdbd2cSJim Jagielski * Retieves the current controller of the spreadsheet document using the 104*b1cdbd2cSJim Jagielski * interface <code>XModel</code>. The controller contains the collection 105*b1cdbd2cSJim Jagielski * of the view panes so retrieves the view pane with index 0 from 106*b1cdbd2cSJim Jagielski * the collection. The retrived view pane is the instance of the service 107*b1cdbd2cSJim Jagielski * <code>com.sun.star.sheet.SpreadsheetViewPane</code>. Retrieves the address 108*b1cdbd2cSJim Jagielski * of the cell range that consists of the cells which are visible in the pane. 109*b1cdbd2cSJim Jagielski * Object relations created : 110*b1cdbd2cSJim Jagielski * <ul> 111*b1cdbd2cSJim Jagielski * <li> <code>'DATAAREA'</code> for 112*b1cdbd2cSJim Jagielski * {@link ifc.sheet._XViewPane}(the retrieved address)</li> 113*b1cdbd2cSJim Jagielski * </ul> 114*b1cdbd2cSJim Jagielski * @see com.sun.star.frame.XModel 115*b1cdbd2cSJim Jagielski */ createTestEnvironment(TestParameters Param, PrintWriter log)116*b1cdbd2cSJim Jagielski protected TestEnvironment createTestEnvironment(TestParameters Param, PrintWriter log) { 117*b1cdbd2cSJim Jagielski XDrawPage oDrawPage; 118*b1cdbd2cSJim Jagielski 119*b1cdbd2cSJim Jagielski XModel xm = (XModel) 120*b1cdbd2cSJim Jagielski UnoRuntime.queryInterface(XModel.class, xSpreadsheetDoc); 121*b1cdbd2cSJim Jagielski XController xc = xm.getCurrentController(); 122*b1cdbd2cSJim Jagielski XIndexAccess xIA = (XIndexAccess) 123*b1cdbd2cSJim Jagielski UnoRuntime.queryInterface(XIndexAccess.class, xc); 124*b1cdbd2cSJim Jagielski try { 125*b1cdbd2cSJim Jagielski oObj = (XInterface) AnyConverter.toObject( 126*b1cdbd2cSJim Jagielski new Type(XInterface.class),xIA.getByIndex(0)); 127*b1cdbd2cSJim Jagielski } catch (com.sun.star.lang.WrappedTargetException e) { 128*b1cdbd2cSJim Jagielski e.printStackTrace(log); 129*b1cdbd2cSJim Jagielski throw new StatusException("Couldn't get by index", e); 130*b1cdbd2cSJim Jagielski } catch (com.sun.star.lang.IndexOutOfBoundsException e) { 131*b1cdbd2cSJim Jagielski e.printStackTrace(log); 132*b1cdbd2cSJim Jagielski throw new StatusException("Couldn't get by index", e); 133*b1cdbd2cSJim Jagielski } catch (com.sun.star.lang.IllegalArgumentException e) { 134*b1cdbd2cSJim Jagielski e.printStackTrace(log); 135*b1cdbd2cSJim Jagielski throw new StatusException("Couldn't get by index", e); 136*b1cdbd2cSJim Jagielski } 137*b1cdbd2cSJim Jagielski 138*b1cdbd2cSJim Jagielski TestEnvironment tEnv = new TestEnvironment(oObj); 139*b1cdbd2cSJim Jagielski 140*b1cdbd2cSJim Jagielski //Relation for XControlAccess 141*b1cdbd2cSJim Jagielski tEnv.addObjRelation("DOCUMENT", UnoRuntime.queryInterface(XComponent.class,xSpreadsheetDoc)); 142*b1cdbd2cSJim Jagielski tEnv.addObjRelation("XControlAccess.isSheet", Boolean.TRUE); 143*b1cdbd2cSJim Jagielski 144*b1cdbd2cSJim Jagielski XViewPane VP = (XViewPane) 145*b1cdbd2cSJim Jagielski UnoRuntime.queryInterface(XViewPane.class, oObj); 146*b1cdbd2cSJim Jagielski CellRangeAddress dataArea = VP.getVisibleRange(); 147*b1cdbd2cSJim Jagielski tEnv.addObjRelation("DATAAREA", dataArea); 148*b1cdbd2cSJim Jagielski 149*b1cdbd2cSJim Jagielski // XForm for com.sun.star.view.XFormLayerAccess 150*b1cdbd2cSJim Jagielski log.println("adding relation for com.sun.star.view.XFormLayerAccess: XForm"); 151*b1cdbd2cSJim Jagielski 152*b1cdbd2cSJim Jagielski XForm myForm = null; 153*b1cdbd2cSJim Jagielski String kindOfControl="CommandButton"; 154*b1cdbd2cSJim Jagielski XShape aShape = null; 155*b1cdbd2cSJim Jagielski try{ 156*b1cdbd2cSJim Jagielski log.println("adding contol shape '" + kindOfControl + "'"); 157*b1cdbd2cSJim Jagielski XComponent oComp = (XComponent) UnoRuntime.queryInterface(XComponent.class, xSpreadsheetDoc) ; 158*b1cdbd2cSJim Jagielski 159*b1cdbd2cSJim Jagielski aShape = FormTools.createControlShape(oComp, 3000, 4500, 15000, 10000, kindOfControl); 160*b1cdbd2cSJim Jagielski 161*b1cdbd2cSJim Jagielski } catch (Exception e){ 162*b1cdbd2cSJim Jagielski e.printStackTrace(log); 163*b1cdbd2cSJim Jagielski throw new StatusException("Couldn't create following control shape : '" + 164*b1cdbd2cSJim Jagielski kindOfControl + "': ", e); 165*b1cdbd2cSJim Jagielski } 166*b1cdbd2cSJim Jagielski 167*b1cdbd2cSJim Jagielski try { 168*b1cdbd2cSJim Jagielski log.println( "getting Drawpages" ); 169*b1cdbd2cSJim Jagielski XDrawPagesSupplier oDPS = (XDrawPagesSupplier) 170*b1cdbd2cSJim Jagielski UnoRuntime.queryInterface(XDrawPagesSupplier.class,xSpreadsheetDoc); 171*b1cdbd2cSJim Jagielski XDrawPages oDP = (XDrawPages) oDPS.getDrawPages(); 172*b1cdbd2cSJim Jagielski oDP.insertNewByIndex(1); 173*b1cdbd2cSJim Jagielski oDP.insertNewByIndex(2); 174*b1cdbd2cSJim Jagielski oDrawPage = (XDrawPage) AnyConverter.toObject( 175*b1cdbd2cSJim Jagielski new Type(XDrawPage.class),oDP.getByIndex(0)); 176*b1cdbd2cSJim Jagielski if (oDrawPage == null) 177*b1cdbd2cSJim Jagielski log.println("ERROR: could not get DrawPage: null"); 178*b1cdbd2cSJim Jagielski 179*b1cdbd2cSJim Jagielski oDrawPage.add(aShape); 180*b1cdbd2cSJim Jagielski log.println("getting XForm"); 181*b1cdbd2cSJim Jagielski XNameContainer xForm = FormTools.getForms(oDrawPage); 182*b1cdbd2cSJim Jagielski try { 183*b1cdbd2cSJim Jagielski myForm = (XForm) AnyConverter.toObject(new Type(XForm.class),xForm.getByName("Standard")); 184*b1cdbd2cSJim Jagielski } catch (WrappedTargetException ex) { 185*b1cdbd2cSJim Jagielski log.println("ERROR: could not XFormm 'Standard': " + ex.toString()); 186*b1cdbd2cSJim Jagielski } catch (com.sun.star.lang.IllegalArgumentException ex) { 187*b1cdbd2cSJim Jagielski log.println("ERROR: could not XFormm 'Standard': " + ex.toString()); 188*b1cdbd2cSJim Jagielski } catch (NoSuchElementException ex) { 189*b1cdbd2cSJim Jagielski log.println("ERROR: could not XFormm 'Standard': " + ex.toString()); 190*b1cdbd2cSJim Jagielski } 191*b1cdbd2cSJim Jagielski if (myForm == null) 192*b1cdbd2cSJim Jagielski log.println("ERROR: could not get XForm: null"); 193*b1cdbd2cSJim Jagielski tEnv.addObjRelation("XFormLayerAccess.XForm", myForm); 194*b1cdbd2cSJim Jagielski } catch (com.sun.star.lang.IndexOutOfBoundsException ex) { 195*b1cdbd2cSJim Jagielski log.println("ERROR: could not add ObjectRelation 'XFormLayerAccess.XForm': " + ex.toString()); 196*b1cdbd2cSJim Jagielski } catch (WrappedTargetException ex) { 197*b1cdbd2cSJim Jagielski log.println("ERROR: could not add ObjectRelation 'XFormLayerAccess.XForm': " + ex.toString()); 198*b1cdbd2cSJim Jagielski } catch (com.sun.star.lang.IllegalArgumentException ex) { 199*b1cdbd2cSJim Jagielski log.println("ERROR: could not add ObjectRelation 'XFormLayerAccess.XForm': " + ex.toString()); 200*b1cdbd2cSJim Jagielski } 201*b1cdbd2cSJim Jagielski 202*b1cdbd2cSJim Jagielski return tEnv; 203*b1cdbd2cSJim Jagielski } 204*b1cdbd2cSJim Jagielski } 205*b1cdbd2cSJim Jagielski 206