blob: b83ceea5646ce8b84cedd21fe47635cdbc4882ce [file] [log] [blame]
/**************************************************************
*
* 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 complex.toolkit.accessibility._XAccessibleEventBroadcaster;
import complex.toolkit.accessibility._XAccessibleExtendedComponent;
import complex.toolkit.accessibility._XAccessibleComponent;
import complex.toolkit.accessibility._XAccessibleContext;
import java.util.logging.Logger;
import java.util.logging.Level;
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 AccessibleStatusBar {
XInterface testObject = null;
XMultiServiceFactory xMSF = null;
XWindow xWindow = null;
private XMultiServiceFactory getMSF()
{
final XMultiServiceFactory xMSF1 = UnoRuntime.queryInterface(XMultiServiceFactory.class, connection.getComponentContext().getServiceManager());
return xMSF1;
}
/**
* Sleeps for 0.5 sec. to allow StarOffice to react on <code>
* reset</code> call.
*/
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();
}
/**
* Test the interfaces on a writer document
*/
public 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();
System.out.println("...OK.");
XServiceInfo xSI = UnoRuntime.queryInterface(XServiceInfo.class, parentContext);
String[] services = xSI.getSupportedServiceNames();
System.out.println("*****");
System.out.println("* Implementation Name: " + xSI.getImplementationName());
for (int i=0; i<services.length; i++)
{
System.out.println("* ServiceName " + i + ": " + services[i]);
}
System.out.println("*****");
testObject=parentContext;
}
catch(com.sun.star.uno.Exception e) {
Logger.getLogger( this.getClass().getName() ).log( Level.SEVERE, "caught an exception", e );
}
catch(Throwable t) {
System.out.println("Got throwable:");
Logger.getLogger( this.getClass().getName() ).log( Level.SEVERE, "caught an exception", t );
}
}
public void runAllInterfaceTests() {
System.out.println("*** Now testing XAccessibleComponent ***");
_XAccessibleComponent _xAccCompTest =
new _XAccessibleComponent(testObject);
assertTrue("failed: XAccessibleComponent::getBounds", _xAccCompTest._getBounds());
assertTrue("failed: XAccessibleComponent::contains", _xAccCompTest._containsPoint());
assertTrue("failed: XAccessibleComponent::getAccessibleAt", _xAccCompTest._getAccessibleAtPoint());
assertTrue("failed: XAccessibleComponent::getBackground", _xAccCompTest._getBackground());
assertTrue("failed: XAccessibleComponent::getForeground", _xAccCompTest._getForeground());
assertTrue("failed: XAccessibleComponent::getLocation", _xAccCompTest._getLocation());
assertTrue("failed: XAccessibleComponent::getLocationOnScreen", _xAccCompTest._getLocationOnScreen());
assertTrue("failed: XAccessibleComponent::getSize", _xAccCompTest._getSize());
assertTrue("failed: XAccessibleComponent::grabFocus", _xAccCompTest._grabFocus());
System.out.println("*** Now testing XAccessibleContext ***");
_XAccessibleContext _xAccContext =
new _XAccessibleContext(testObject);
assertTrue("failed: XAccessibleContext::getAccessibleChildCount", _xAccContext._getAccessibleChildCount());
assertTrue("failed: XAccessibleContext::getAccessibleChild", _xAccContext._getAccessibleChild());
assertTrue("failed: XAccessibleContext::getAccessibleDescription", _xAccContext._getAccessibleDescription());
assertTrue("failed: XAccessibleContext::getAccessibleName", _xAccContext._getAccessibleName());
assertTrue("failed: XAccessibleContext::getAccessibleParent", _xAccContext._getAccessibleParent());
assertTrue("failed: XAccessibleContext::getAccessibleIndexInParent", _xAccContext._getAccessibleIndexInParent());
assertTrue("failed: XAccessibleContext::getAccessibleRelationSet", _xAccContext._getAccessibleRelationSet());
assertTrue("failed: XAccessibleContext::getAccessibleRole", _xAccContext._getAccessibleRole());
assertTrue("failed: XAccessibleContext::getAccessibleStateSet", _xAccContext._getAccessibleStateSet());
assertTrue("failed: XAccessibleContext::getLocale", _xAccContext._getLocale());
System.out.println("*** Now testing XAccessibleExtendedComponent ***");
_XAccessibleExtendedComponent _xAccExtComp =
new _XAccessibleExtendedComponent(testObject);
assertTrue("failed: XAccessibleExtendedComponent::getFont", _xAccExtComp._getFont());
assertTrue("failed: XAccessibleExtendedComponent::getTitledBorderText", _xAccExtComp._getTitledBorderText());
assertTrue("failed: XAccessibleExtendedComponent::getToolTipText", _xAccExtComp._getToolTipText());
System.out.println("*** Now testing XAccessibleEventBroadcaster ***");
_XAccessibleEventBroadcaster _xAccEvBcast =
new _XAccessibleEventBroadcaster(testObject, xWindow);
assertTrue("failed: XAccessibleEventBroadcaster::addEventListener", _xAccEvBcast._addEventListener());
assertTrue("failed: XAccessibleEventBroadcaster::removeEventListener", _xAccEvBcast._removeEventListener());
}
@BeforeClass
public static void setUpConnection() throws Exception {
System.out.println("setUpConnection()");
connection.setUp();
}
@AfterClass
public static void tearDownConnection()
throws InterruptedException, com.sun.star.uno.Exception
{
System.out.println("tearDownConnection()");
connection.tearDown();
}
private static final OfficeConnection connection = new OfficeConnection();
}