/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ package complex.toolkit; import java.util.logging.Logger; import java.util.logging.Level; import complex.toolkit.accessibility._XAccessibleEventBroadcaster; import complex.toolkit.accessibility._XAccessibleExtendedComponent; import complex.toolkit.accessibility._XAccessibleText; import complex.toolkit.accessibility._XAccessibleComponent; import complex.toolkit.accessibility._XAccessibleContext; import util.SOfficeFactory; import util.AccessibilityTools; import com.sun.star.awt.XWindow; import com.sun.star.lang.XMultiServiceFactory; import com.sun.star.lang.XComponent; import com.sun.star.lang.XServiceInfo; import com.sun.star.sheet.XSpreadsheetDocument; import com.sun.star.text.XTextDocument; import com.sun.star.uno.XInterface; import com.sun.star.uno.UnoRuntime; import com.sun.star.util.XCloseable; import com.sun.star.accessibility.AccessibleRole; import com.sun.star.accessibility.XAccessible; import com.sun.star.accessibility.XAccessibleContext; import com.sun.star.awt.XExtendedToolkit; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.openoffice.test.OfficeConnection; import static org.junit.Assert.*; /** * */ public class AccessibleStatusBarItem { XMultiServiceFactory xMSF = null; XAccessibleContext testObject = null; XWindow xWindow = null; /** * Sleeps for a certain time. * @param Thread is sleeping for this time in milliseconds. */ private void shortWait() { try { Thread.sleep(500); } catch (InterruptedException e) { System.out.println("While waiting :" + e) ; } } /** * Check document types */ @Test public void checkDocs() { checkWriterDoc(); checkMathDoc(); checkDrawDoc(); checkImpressDoc(); checkCalcDoc(); } private XMultiServiceFactory getMSF() { final XMultiServiceFactory xMSF1 = UnoRuntime.queryInterface(XMultiServiceFactory.class, connection.getComponentContext().getServiceManager()); return xMSF1; } /** * Test the interfaces on a writer document */ private void checkWriterDoc() { xMSF = getMSF(); SOfficeFactory xSOF = SOfficeFactory.getFactory(xMSF); XTextDocument xTextDoc = null; try { System.out.println("****** Open a new writer document"); xTextDoc = xSOF.createTextDoc("_blank"); getTestObject(); } catch(com.sun.star.uno.Exception e) { Logger.getLogger( this.getClass().getName() ).log( Level.SEVERE, "caught an exception", e ); } runAllInterfaceTests(); if (xTextDoc != null) { XCloseable xClose = UnoRuntime.queryInterface(XCloseable.class, xTextDoc); try { xClose.close(false); } catch(com.sun.star.util.CloseVetoException e) { Logger.getLogger( this.getClass().getName() ).log( Level.SEVERE, "caught an exception", e ); } } } /** * Test the interfaces on a math document */ public void checkMathDoc() { xMSF = getMSF(); SOfficeFactory xSOF = SOfficeFactory.getFactory(xMSF); XComponent xMathDoc = null; try { System.out.println("****** Open a new math document"); xMathDoc = xSOF.createMathDoc("_blank"); getTestObject(); } catch(com.sun.star.uno.Exception e) { Logger.getLogger( this.getClass().getName() ).log( Level.SEVERE, "caught an exception", e ); } runAllInterfaceTests(); if (xMathDoc != null) { XCloseable xClose = UnoRuntime.queryInterface(XCloseable.class, xMathDoc); try { xClose.close(false); } catch(com.sun.star.util.CloseVetoException e) { Logger.getLogger( this.getClass().getName() ).log( Level.SEVERE, "caught an exception", e ); } } } /** * Test the interfaces on a draw document */ public void checkDrawDoc() { xMSF = getMSF(); SOfficeFactory xSOF = SOfficeFactory.getFactory(xMSF); XComponent xDrawDoc = null; try { System.out.println("****** Open a new draw document"); xDrawDoc = xSOF.createDrawDoc("_blank"); getTestObject(); } catch(com.sun.star.uno.Exception e) { Logger.getLogger( this.getClass().getName() ).log( Level.SEVERE, "caught an exception", e ); } runAllInterfaceTests(); if (xDrawDoc != null) { XCloseable xClose = UnoRuntime.queryInterface(XCloseable.class, xDrawDoc); try { xClose.close(false); } catch(com.sun.star.util.CloseVetoException e) { Logger.getLogger( this.getClass().getName() ).log( Level.SEVERE, "caught an exception", e ); } } } /** * Test the interfaces on an impress document */ public void checkImpressDoc() { xMSF = getMSF(); SOfficeFactory xSOF = SOfficeFactory.getFactory(xMSF); XComponent xImpressDoc = null; try { System.out.println("****** Open a new impress document"); xImpressDoc = xSOF.createImpressDoc("_blank"); getTestObject(); } catch(com.sun.star.uno.Exception e) { Logger.getLogger( this.getClass().getName() ).log( Level.SEVERE, "caught an exception", e ); } runAllInterfaceTests(); if (xImpressDoc != null) { XCloseable xClose = UnoRuntime.queryInterface(XCloseable.class, xImpressDoc); try { xClose.close(false); } catch(com.sun.star.util.CloseVetoException e) { Logger.getLogger( this.getClass().getName() ).log( Level.SEVERE, "caught an exception", e ); } } } /** * Test the interfaces on an calc document */ public void checkCalcDoc() { xMSF = getMSF(); SOfficeFactory xSOF = SOfficeFactory.getFactory(xMSF); XSpreadsheetDocument xSpreadsheetDoc = null; try { System.out.println("****** Open a new calc document"); xSpreadsheetDoc = xSOF.createCalcDoc("_blank"); shortWait(); getTestObject(); } catch(com.sun.star.uno.Exception e) { Logger.getLogger( this.getClass().getName() ).log( Level.SEVERE, "caught an exception", e ); } runAllInterfaceTests(); if (xSpreadsheetDoc != null) { XCloseable xClose = UnoRuntime.queryInterface(XCloseable.class, xSpreadsheetDoc); try { xClose.close(false); } catch(com.sun.star.util.CloseVetoException e) { Logger.getLogger( this.getClass().getName() ).log( Level.SEVERE, "caught an exception", e ); } } } public void getTestObject() { try { XInterface xIfc = (XInterface) xMSF.createInstance( "com.sun.star.awt.Toolkit") ; XExtendedToolkit tk = UnoRuntime.queryInterface(XExtendedToolkit.class,xIfc); shortWait(); xWindow = UnoRuntime.queryInterface( XWindow.class,tk.getActiveTopWindow()); shortWait(); XAccessible xRoot = AccessibilityTools.getAccessibleObject(xWindow); XAccessibleContext parentContext = null; System.out.println("Get the accessible status bar."); parentContext = AccessibilityTools.getAccessibleObjectForRole( xRoot, AccessibleRole.STATUS_BAR, ""); shortWait(); if ( parentContext == null ) { fail("Could not create a test object."); } System.out.println("...OK."); testObject=parentContext; } catch(com.sun.star.uno.Exception e) { Logger.getLogger( this.getClass().getName() ).log( Level.SEVERE, "caught an exception", e ); } catch(Throwable t) { Logger.getLogger( this.getClass().getName() ).log( Level.SEVERE, "caught an exception", t ); } } public void runAllInterfaceTests() { int count = testObject.getAccessibleChildCount(); System.out.println("*****"); System.out.println("**** Found items to test: " + count); for (int i=0;i