1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 package mod._toolkit; 28 29 import com.sun.star.accessibility.AccessibleRole; 30 import com.sun.star.accessibility.XAccessible; 31 import com.sun.star.awt.PosSize; 32 import com.sun.star.awt.Rectangle; 33 import com.sun.star.awt.XExtendedToolkit; 34 import com.sun.star.awt.XWindow; 35 import com.sun.star.frame.XModel; 36 import com.sun.star.lang.XMultiServiceFactory; 37 import com.sun.star.text.XTextDocument; 38 import com.sun.star.uno.UnoRuntime; 39 import com.sun.star.uno.XInterface; 40 41 import java.io.PrintWriter; 42 43 import lib.StatusException; 44 import lib.TestCase; 45 import lib.TestEnvironment; 46 import lib.TestParameters; 47 48 import util.AccessibilityTools; 49 import util.DesktopTools; 50 import util.SOfficeFactory; 51 52 53 /** 54 * Test for object that implements the following interfaces : 55 * <ul> 56 * <li><code> 57 * ::com::sun::star::accessibility::XAccessibleContext</code></li> 58 * <li><code> 59 * ::com::sun::star::accessibility::XAccessibleEventBroadcaster 60 * </code></li> 61 * <li><code> 62 * ::com::sun::star::accessibility::XAccessibleComponent</code></li> 63 * <li><code> 64 * ::com::sun::star::accessibility::XAccessibleExtendedComponent 65 * </code></li> 66 * <li><code> 67 * ::com::sun::star::accessibility::XAccessibleValue</code></li> 68 * <li><code> 69 * ::com::sun::star::accessibility::XAccessibleAction</code></li> 70 * </ul> <p> 71 * 72 * @see com.sun.star.accessibility.XAccessibleEventBroadcaster 73 * @see com.sun.star.accessibility.XAccessibleContext 74 * @see com.sun.star.accessibility.XAccessibleComponent 75 * @see com.sun.star.accessibility.XAccessibleExtendedComponent 76 * @see com.sun.star.accessibility.XAccessibleValue 77 * @see com.sun.star.accessibility.XAccessibleAction 78 * @see ifc.accessibility._XAccessibleEventBroadcaster 79 * @see ifc.accessibility._XAccessibleContext 80 * @see ifc.accessibility._XAccessibleComponent 81 * @see ifc.accessibility.XAccessibleExtendedComponent 82 * @see ifc.accessibility.XAccessibleValue 83 * @see ifc.accessibility.XAccessibleAction 84 */ 85 public class AccessibleStatusBar extends TestCase { 86 private static XTextDocument xTextDoc; 87 88 /** 89 * Disposes the document, if exists, created in 90 * <code>createTestEnvironment</code> method. 91 */ 92 protected void cleanup(TestParameters Param, PrintWriter log) { 93 log.println("disposing xTextDoc"); 94 95 if (xTextDoc != null) { 96 util.DesktopTools.closeDoc(xTextDoc); 97 ; 98 } 99 } 100 101 /** 102 * Creates a text document. 103 * Then obtains an accessible object with 104 * the role <code>AccessibleRole.SCROLLBAR</code>. 105 * Object relations created : 106 * <ul> 107 * <li> <code>'EventProducer'</code> for 108 * {@link ifc.accessibility._XAccessibleEventBroadcaster}: 109 * grabs focus </li> 110 * </ul> 111 * 112 * @param tParam test parameters 113 * @param log writer to log information while testing 114 * 115 * @see com.sun.star.awt.Toolkit 116 * @see com.sun.star.accessibility.AccessibleRole 117 * @see ifc.accessibility._XAccessibleEventBroadcaster 118 * @see com.sun.star.accessibility.XAccessibleEventBroadcaster 119 */ 120 protected TestEnvironment createTestEnvironment(TestParameters tParam, 121 PrintWriter log) { 122 log.println("creating a test environment"); 123 124 if (xTextDoc != null) { 125 util.DesktopTools.closeDoc(xTextDoc); 126 } 127 128 ; 129 130 // get a soffice factory object 131 SOfficeFactory SOF = SOfficeFactory.getFactory( 132 (XMultiServiceFactory) tParam.getMSF()); 133 134 XInterface toolkit = null; 135 136 try { 137 log.println("creating a text document"); 138 xTextDoc = SOF.createTextDoc(null); 139 toolkit = (XInterface) ((XMultiServiceFactory) tParam.getMSF()).createInstance( 140 "com.sun.star.awt.Toolkit"); 141 } catch (com.sun.star.uno.Exception e) { 142 // Some exception occures.FAILED 143 e.printStackTrace(log); 144 throw new StatusException("Couldn't create document", e); 145 } 146 147 XInterface oObj = null; 148 149 AccessibilityTools at = new AccessibilityTools(); 150 151 final XWindow xWindow = 152 UnoRuntime.queryInterface(XModel.class, xTextDoc). 153 getCurrentController().getFrame().getContainerWindow(); 154 155 XAccessible xRoot = at.getAccessibleObject(xWindow); 156 157 oObj = at.getAccessibleObjectForRole(xRoot, AccessibleRole.STATUS_BAR); 158 159 log.println("ImplementationName: " + util.utils.getImplName(oObj)); 160 161 TestEnvironment tEnv = new TestEnvironment(oObj); 162 163 final XExtendedToolkit tk = (XExtendedToolkit) UnoRuntime.queryInterface( 164 XExtendedToolkit.class, toolkit); 165 166 tEnv.addObjRelation("EventProducer", 167 new ifc.accessibility._XAccessibleEventBroadcaster.EventProducer() { 168 public void fireEvent() { 169 Rectangle newPosSize = xWindow.getPosSize(); 170 newPosSize.Width = newPosSize.Width - 20; 171 newPosSize.Height = newPosSize.Height - 20; 172 newPosSize.X = newPosSize.X + 20; 173 newPosSize.Y = newPosSize.Y + 20; 174 xWindow.setPosSize( 175 newPosSize.X, newPosSize.Y, newPosSize.Width, 176 newPosSize.Height, PosSize.POSSIZE); 177 } 178 }); 179 180 return tEnv; 181 } 182 }