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._sd; 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski import java.io.PrintWriter; 27*b1cdbd2cSJim Jagielski 28*b1cdbd2cSJim Jagielski import lib.StatusException; 29*b1cdbd2cSJim Jagielski import lib.TestCase; 30*b1cdbd2cSJim Jagielski import lib.TestEnvironment; 31*b1cdbd2cSJim Jagielski import lib.TestParameters; 32*b1cdbd2cSJim Jagielski import util.AccessibilityTools; 33*b1cdbd2cSJim Jagielski import util.SOfficeFactory; 34*b1cdbd2cSJim Jagielski import util.utils; 35*b1cdbd2cSJim Jagielski 36*b1cdbd2cSJim Jagielski import com.sun.star.accessibility.AccessibleRole; 37*b1cdbd2cSJim Jagielski import com.sun.star.accessibility.XAccessible; 38*b1cdbd2cSJim Jagielski import com.sun.star.awt.XWindow; 39*b1cdbd2cSJim Jagielski import com.sun.star.drawing.XDrawPages; 40*b1cdbd2cSJim Jagielski import com.sun.star.drawing.XDrawPagesSupplier; 41*b1cdbd2cSJim Jagielski import com.sun.star.frame.XDispatch; 42*b1cdbd2cSJim Jagielski import com.sun.star.frame.XDispatchProvider; 43*b1cdbd2cSJim Jagielski import com.sun.star.frame.XModel; 44*b1cdbd2cSJim Jagielski import com.sun.star.lang.XComponent; 45*b1cdbd2cSJim Jagielski import com.sun.star.lang.XMultiServiceFactory; 46*b1cdbd2cSJim Jagielski import com.sun.star.uno.UnoRuntime; 47*b1cdbd2cSJim Jagielski import com.sun.star.uno.XInterface; 48*b1cdbd2cSJim Jagielski import com.sun.star.util.URL; 49*b1cdbd2cSJim Jagielski import com.sun.star.util.XURLTransformer; 50*b1cdbd2cSJim Jagielski 51*b1cdbd2cSJim Jagielski public class AccessibleSlideView extends TestCase { 52*b1cdbd2cSJim Jagielski 53*b1cdbd2cSJim Jagielski XModel aModel = null; 54*b1cdbd2cSJim Jagielski XComponent xImpressDoc = null; 55*b1cdbd2cSJim Jagielski 56*b1cdbd2cSJim Jagielski /** 57*b1cdbd2cSJim Jagielski * Called to create an instance of <code>TestEnvironment</code> with an 58*b1cdbd2cSJim Jagielski * object to test and related objects. Subclasses should implement this 59*b1cdbd2cSJim Jagielski * method to provide the implementation and related objects. The method is 60*b1cdbd2cSJim Jagielski * called from <code>getTestEnvironment()</code>. 61*b1cdbd2cSJim Jagielski * 62*b1cdbd2cSJim Jagielski * @param Param test parameters 63*b1cdbd2cSJim Jagielski * @param log writer to log information while testing 64*b1cdbd2cSJim Jagielski * 65*b1cdbd2cSJim Jagielski * @see TestEnvironment 66*b1cdbd2cSJim Jagielski * @see #getTestEnvironment 67*b1cdbd2cSJim Jagielski */ createTestEnvironment(TestParameters Param, PrintWriter log)68*b1cdbd2cSJim Jagielski protected TestEnvironment createTestEnvironment 69*b1cdbd2cSJim Jagielski (TestParameters Param, PrintWriter log) { 70*b1cdbd2cSJim Jagielski XInterface oObj = null; 71*b1cdbd2cSJim Jagielski 72*b1cdbd2cSJim Jagielski AccessibilityTools at = new AccessibilityTools(); 73*b1cdbd2cSJim Jagielski 74*b1cdbd2cSJim Jagielski XDrawPagesSupplier oDPS = (XDrawPagesSupplier) 75*b1cdbd2cSJim Jagielski UnoRuntime.queryInterface(XDrawPagesSupplier.class, aModel); 76*b1cdbd2cSJim Jagielski XDrawPages oDPn = oDPS.getDrawPages(); 77*b1cdbd2cSJim Jagielski 78*b1cdbd2cSJim Jagielski oDPn.insertNewByIndex(0); 79*b1cdbd2cSJim Jagielski 80*b1cdbd2cSJim Jagielski shortWait(); 81*b1cdbd2cSJim Jagielski 82*b1cdbd2cSJim Jagielski XWindow xWindow = at.getCurrentWindow ( 83*b1cdbd2cSJim Jagielski (XMultiServiceFactory)Param.getMSF(),aModel); 84*b1cdbd2cSJim Jagielski XAccessible xRoot = at.getAccessibleObject(xWindow); 85*b1cdbd2cSJim Jagielski 86*b1cdbd2cSJim Jagielski at.printAccessibleTree(log, xRoot, Param.getBool(util.PropertyName.DEBUG_IS_ACTIVE)); 87*b1cdbd2cSJim Jagielski 88*b1cdbd2cSJim Jagielski at.getAccessibleObjectForRole(xRoot, AccessibleRole.DOCUMENT); 89*b1cdbd2cSJim Jagielski 90*b1cdbd2cSJim Jagielski oObj = AccessibilityTools.SearchedContext; 91*b1cdbd2cSJim Jagielski 92*b1cdbd2cSJim Jagielski System.out.println("ImplementationName "+utils.getImplName(oObj)); 93*b1cdbd2cSJim Jagielski 94*b1cdbd2cSJim Jagielski TestEnvironment tEnv = new TestEnvironment(oObj); 95*b1cdbd2cSJim Jagielski 96*b1cdbd2cSJim Jagielski //util.dbg.printInterfaces(oObj); 97*b1cdbd2cSJim Jagielski log.println("Implementationname: "+util.utils.getImplName(oObj)); 98*b1cdbd2cSJim Jagielski 99*b1cdbd2cSJim Jagielski final XDrawPages DrawPages = oDPn; 100*b1cdbd2cSJim Jagielski 101*b1cdbd2cSJim Jagielski tEnv.addObjRelation("EventProducer", 102*b1cdbd2cSJim Jagielski new ifc.accessibility._XAccessibleEventBroadcaster.EventProducer() { 103*b1cdbd2cSJim Jagielski public void fireEvent() { 104*b1cdbd2cSJim Jagielski DrawPages.insertNewByIndex(2); 105*b1cdbd2cSJim Jagielski } 106*b1cdbd2cSJim Jagielski }); 107*b1cdbd2cSJim Jagielski 108*b1cdbd2cSJim Jagielski return tEnv; 109*b1cdbd2cSJim Jagielski 110*b1cdbd2cSJim Jagielski } 111*b1cdbd2cSJim Jagielski 112*b1cdbd2cSJim Jagielski /** 113*b1cdbd2cSJim Jagielski * Called while disposing a <code>TestEnvironment</code>. 114*b1cdbd2cSJim Jagielski * Disposes Impress documents. 115*b1cdbd2cSJim Jagielski * @param Param test parameters 116*b1cdbd2cSJim Jagielski * @param log writer to log information while testing 117*b1cdbd2cSJim Jagielski */ cleanup( TestParameters Param, PrintWriter log )118*b1cdbd2cSJim Jagielski protected void cleanup( TestParameters Param, PrintWriter log ) { 119*b1cdbd2cSJim Jagielski log.println("disposing impress document"); 120*b1cdbd2cSJim Jagielski util.DesktopTools.closeDoc(xImpressDoc); 121*b1cdbd2cSJim Jagielski } 122*b1cdbd2cSJim Jagielski 123*b1cdbd2cSJim Jagielski /** 124*b1cdbd2cSJim Jagielski * Called while the <code>TestCase</code> initialization. In the 125*b1cdbd2cSJim Jagielski * implementation does nothing. Subclasses can override to initialize 126*b1cdbd2cSJim Jagielski * objects shared among all <code>TestEnvironment</code>s. 127*b1cdbd2cSJim Jagielski * 128*b1cdbd2cSJim Jagielski * @param Param test parameters 129*b1cdbd2cSJim Jagielski * @param log writer to log information while testing 130*b1cdbd2cSJim Jagielski * 131*b1cdbd2cSJim Jagielski * @see #initializeTestCase 132*b1cdbd2cSJim Jagielski */ initialize(TestParameters Param, PrintWriter log)133*b1cdbd2cSJim Jagielski protected void initialize(TestParameters Param, PrintWriter log) { 134*b1cdbd2cSJim Jagielski // get a soffice factory object 135*b1cdbd2cSJim Jagielski SOfficeFactory SOF = SOfficeFactory.getFactory( 136*b1cdbd2cSJim Jagielski (XMultiServiceFactory)Param.getMSF()); 137*b1cdbd2cSJim Jagielski 138*b1cdbd2cSJim Jagielski try { 139*b1cdbd2cSJim Jagielski log.println( "creating a impress document" ); 140*b1cdbd2cSJim Jagielski xImpressDoc = SOF.createImpressDoc(null); 141*b1cdbd2cSJim Jagielski } catch (com.sun.star.uno.Exception e) { 142*b1cdbd2cSJim Jagielski e.printStackTrace( log ); 143*b1cdbd2cSJim Jagielski throw new StatusException("Couldn't create document", e); 144*b1cdbd2cSJim Jagielski } 145*b1cdbd2cSJim Jagielski 146*b1cdbd2cSJim Jagielski shortWait(); 147*b1cdbd2cSJim Jagielski 148*b1cdbd2cSJim Jagielski aModel = (XModel) 149*b1cdbd2cSJim Jagielski UnoRuntime.queryInterface(XModel.class, xImpressDoc); 150*b1cdbd2cSJim Jagielski 151*b1cdbd2cSJim Jagielski //Change to Outline view 152*b1cdbd2cSJim Jagielski try { 153*b1cdbd2cSJim Jagielski String aSlotID = "slot:27011"; 154*b1cdbd2cSJim Jagielski XDispatchProvider xDispProv = (XDispatchProvider) 155*b1cdbd2cSJim Jagielski UnoRuntime.queryInterface( XDispatchProvider.class, 156*b1cdbd2cSJim Jagielski aModel.getCurrentController() ); 157*b1cdbd2cSJim Jagielski XURLTransformer xParser = (com.sun.star.util.XURLTransformer) 158*b1cdbd2cSJim Jagielski UnoRuntime.queryInterface(XURLTransformer.class, 159*b1cdbd2cSJim Jagielski ((XMultiServiceFactory)Param.getMSF()). 160*b1cdbd2cSJim Jagielski createInstance("com.sun.star.util.URLTransformer")); 161*b1cdbd2cSJim Jagielski // Because it's an in/out parameter we must use an array of URL objects. 162*b1cdbd2cSJim Jagielski URL[] aParseURL = new URL[1]; 163*b1cdbd2cSJim Jagielski aParseURL[0] = new URL(); 164*b1cdbd2cSJim Jagielski aParseURL[0].Complete = aSlotID; 165*b1cdbd2cSJim Jagielski xParser.parseStrict(aParseURL); 166*b1cdbd2cSJim Jagielski URL aURL = aParseURL[0]; 167*b1cdbd2cSJim Jagielski XDispatch xDispatcher = xDispProv.queryDispatch( aURL,"",0); 168*b1cdbd2cSJim Jagielski if( xDispatcher != null ) 169*b1cdbd2cSJim Jagielski xDispatcher.dispatch( aURL, null ); 170*b1cdbd2cSJim Jagielski } catch (com.sun.star.uno.Exception e) { 171*b1cdbd2cSJim Jagielski log.println("Couldn't change mode"); 172*b1cdbd2cSJim Jagielski } 173*b1cdbd2cSJim Jagielski 174*b1cdbd2cSJim Jagielski shortWait(); 175*b1cdbd2cSJim Jagielski 176*b1cdbd2cSJim Jagielski } 177*b1cdbd2cSJim Jagielski shortWait()178*b1cdbd2cSJim Jagielski private void shortWait() { 179*b1cdbd2cSJim Jagielski try { 180*b1cdbd2cSJim Jagielski Thread.sleep(2000) ; 181*b1cdbd2cSJim Jagielski } catch (InterruptedException e) { 182*b1cdbd2cSJim Jagielski System.out.println("While waiting :" + e) ; 183*b1cdbd2cSJim Jagielski } 184*b1cdbd2cSJim Jagielski } 185*b1cdbd2cSJim Jagielski } 186*b1cdbd2cSJim Jagielski 187