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.accessibility.XAccessibleAction; 32 import com.sun.star.accessibility.XAccessibleText; 33 import com.sun.star.awt.PosSize; 34 import com.sun.star.awt.XControl; 35 import com.sun.star.awt.XControlContainer; 36 import com.sun.star.awt.XControlModel; 37 import com.sun.star.awt.XFixedText; 38 import com.sun.star.awt.XWindow; 39 import com.sun.star.lang.XMultiServiceFactory; 40 import com.sun.star.text.XTextDocument; 41 import com.sun.star.uno.UnoRuntime; 42 import com.sun.star.uno.XInterface; 43 44 import java.io.PrintWriter; 45 46 import lib.StatusException; 47 import lib.TestCase; 48 import lib.TestEnvironment; 49 import lib.TestParameters; 50 51 import util.AccessibilityTools; 52 import util.utils; 53 54 55 /** 56 * Test for object which is represented by accesible component 57 * of the fixed text label in 'Hyperlink' Dialog. <p> 58 * 59 * Object implements the following interfaces : 60 * <ul> 61 * <li> <code>::com::sun::star::accessibility::XAccessibleExtendedComponent</code></li> 62 * <li> <code>::com::sun::star::accessibility::XAccessibleEventBroadcaster</code></li> 63 * <li> <code>::com::sun::star::accessibility::XAccessibleComponent</code></li> 64 * <li> <code>::com::sun::star::accessibility::XAccessibleContext</code></li> 65 * <li> <code>::com::sun::star::accessibility::XAccessibleText</code></li> 66 * </ul> <p> 67 * 68 * @see com.sun.star.accessibility.XAccessibleExtendedComponent 69 * @see com.sun.star.accessibility.XAccessibleEventBroadcaster 70 * @see com.sun.star.accessibility.XAccessibleComponent 71 * @see com.sun.star.accessibility.XAccessibleContext 72 * @see com.sun.star.accessibility.XAccessibleText 73 * @see ifc.accessibility._XAccessibleExtendedComponent 74 * @see ifc.accessibility._XAccessibleEventBroadcaster 75 * @see ifc.accessibility._XAccessibleComponent 76 * @see ifc.accessibility._XAccessibleContext 77 * @see ifc.accessibility._XAccessibleText 78 */ 79 public class AccessibleFixedText extends TestCase { 80 private static XTextDocument xTextDoc = null; 81 private static XAccessibleAction action = null; 82 private static XWindow xWinDlg = null; 83 84 /** 85 * Creates a new dialog adds fixed text control to it and 86 * displays it. Then the text's accessible component is 87 * obtained. 88 */ 89 protected TestEnvironment createTestEnvironment(TestParameters Param, 90 PrintWriter log) { 91 XInterface oObj = null; 92 XMultiServiceFactory xMSF = (XMultiServiceFactory) Param.getMSF(); 93 XControlModel dlgModel = null; 94 95 XControl txtControl = null; 96 XControlModel txtModel = null; 97 98 try { 99 dlgModel = (XControlModel) UnoRuntime.queryInterface( 100 XControlModel.class, 101 xMSF.createInstance( 102 "com.sun.star.awt.UnoControlDialogModel")); 103 104 XControl dlgControl = (XControl) UnoRuntime.queryInterface( 105 XControl.class, 106 xMSF.createInstance( 107 "com.sun.star.awt.UnoControlDialog")); 108 109 dlgControl.setModel(dlgModel); 110 111 txtModel = (XControlModel) UnoRuntime.queryInterface( 112 XControlModel.class, 113 xMSF.createInstance( 114 "com.sun.star.awt.UnoControlFixedTextModel")); 115 116 txtControl = (XControl) UnoRuntime.queryInterface(XControl.class, 117 xMSF.createInstance( 118 "com.sun.star.awt.UnoControlFixedText")); 119 120 txtControl.setModel(txtModel); 121 122 XFixedText xFT = (XFixedText) UnoRuntime.queryInterface( 123 XFixedText.class, txtControl); 124 xFT.setText("FxedText"); 125 126 XControlContainer ctrlCont = (XControlContainer) UnoRuntime.queryInterface( 127 XControlContainer.class, 128 dlgControl); 129 130 ctrlCont.addControl("Text", txtControl); 131 132 xWinDlg = (XWindow) UnoRuntime.queryInterface(XWindow.class, 133 dlgControl); 134 135 xWinDlg.setVisible(true); 136 137 xWinDlg.setPosSize(0, 0, 200, 100, PosSize.SIZE); 138 } catch (com.sun.star.uno.Exception e) { 139 log.println("Error creating dialog :"); 140 e.printStackTrace(log); 141 } 142 143 try { 144 oObj = (XInterface) ((XMultiServiceFactory) Param.getMSF()).createInstance( 145 "com.sun.star.awt.Toolkit"); 146 } catch (com.sun.star.uno.Exception e) { 147 log.println("Couldn't get toolkit"); 148 e.printStackTrace(log); 149 throw new StatusException("Couldn't get toolkit", e); 150 } 151 152 shortWait(); 153 154 AccessibilityTools at = new AccessibilityTools(); 155 156 XAccessible xRoot = at.getAccessibleObject(xWinDlg); 157 158 at.printAccessibleTree(log, xRoot, Param.getBool(util.PropertyName.DEBUG_IS_ACTIVE)); 159 160 oObj = at.getAccessibleObjectForRole(xRoot, AccessibleRole.LABEL); 161 162 log.println("ImplementationName " + utils.getImplName(oObj)); 163 164 TestEnvironment tEnv = new TestEnvironment(oObj); 165 166 final XWindow xWin = (XWindow) UnoRuntime.queryInterface(XWindow.class, 167 txtControl); 168 169 tEnv.addObjRelation("EventProducer", 170 new ifc.accessibility._XAccessibleEventBroadcaster.EventProducer() { 171 public void fireEvent() { 172 xWin.setEnable(false); 173 xWin.setEnable(true); 174 } 175 }); 176 177 XAccessibleText text = (XAccessibleText) UnoRuntime.queryInterface( 178 XAccessibleText.class, oObj); 179 180 tEnv.addObjRelation("XAccessibleText.Text", text.getText()); 181 182 tEnv.addObjRelation("EditOnly", 183 "This method isn't supported in this component"); 184 185 tEnv.addObjRelation("LimitedBounds", "yes"); 186 187 return tEnv; 188 } 189 190 /** 191 * Closes dialog using action of button 'Close' 192 */ 193 protected void cleanup(TestParameters Param, PrintWriter log) { 194 log.println(" Closing dialog ... "); 195 xWinDlg.dispose(); 196 } 197 198 /** 199 * Sleeps for 0.5 sec. to allow StarOffice to react on <code> 200 * reset</code> call. 201 */ 202 private void shortWait() { 203 try { 204 Thread.sleep(500); 205 } catch (InterruptedException e) { 206 log.println("While waiting :" + e); 207 } 208 } 209 }