Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  ViewForwarder.java   Sprache: JAVA

 
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   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 .
 */


package complex.calcPreview;

import com.sun.star.awt.XWindow;
import com.sun.star.container.XIndexAccess;
import com.sun.star.frame.XController;
import com.sun.star.frame.XDispatch;
import com.sun.star.frame.XDispatchProvider;
import com.sun.star.frame.XModel;
import com.sun.star.lang.XMultiServiceFactory;
import com.sun.star.sheet.XSpreadsheet;
import com.sun.star.sheet.XSpreadsheets;
import com.sun.star.table.XCell;
import com.sun.star.uno.AnyConverter;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.uno.XInterface;
import com.sun.star.util.URL;
import com.sun.star.util.XURLTransformer;
import com.sun.star.accessibility.AccessibleRole;
import com.sun.star.accessibility.XAccessible;
import com.sun.star.accessibility.XAccessibleText;
import com.sun.star.accessibility.XAccessibleValue;
import com.sun.star.accessibility.XAccessibleComponent;
import com.sun.star.accessibility.XAccessibleContext;

import util.AccessibilityTools;
import util.SOfficeFactory;
import util.utils;

import com.sun.star.beans.XPropertySet;
import com.sun.star.container.XNameAccess;
import com.sun.star.lang.XComponent;
import com.sun.star.sheet.XHeaderFooterContent;
import com.sun.star.sheet.XSpreadsheetDocument;
import com.sun.star.style.XStyle;
import com.sun.star.style.XStyleFamiliesSupplier;
import com.sun.star.text.XText;

import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openoffice.test.OfficeConnection;
import static org.junit.Assert.*;

/**
 * A complex test for the preview of Calc documents. This complex test
 * needs interaction from the user: documents have to be resized and moved.
 */

public class ViewForwarder {

    /** The MultiServiceFactory **/
    private XMultiServiceFactory mXMSF = null;

    /**
     * Get a MultiServiceFactory from the Office before the test.
     */

    @Before public void before()
    {
        mXMSF = UnoRuntime.queryInterface(XMultiServiceFactory.class, connection.getComponentContext().getServiceManager());
    }


    /** Create a spreadsheet document, insert some text, header and footer.
     * Let the user resize the document and check the contents.
     */

    @Test public void checkPositiveViewForwarder() {
        SOfficeFactory SOF = SOfficeFactory.getFactory( mXMSF );
        XSpreadsheetDocument xSpreadsheetDoc = null;

        try {
            System.out.println("Creating a spreadsheet document");
            xSpreadsheetDoc = SOF.createCalcDoc(null);
        } catch (com.sun.star.uno.Exception e) {
            fail(e.getMessage());
            return;
        }

        XInterface oObj = null;

        // inserting some content to have non-empty page preview
        XCell xCell = null;
        try {
            XSpreadsheets oSheets = xSpreadsheetDoc.getSheets() ;
            XIndexAccess oIndexSheets =
                UnoRuntime.queryInterface(XIndexAccess.class, oSheets);
            Object o = oIndexSheets.getByIndex(0);
            XSpreadsheet oSheet = (XSpreadsheet)AnyConverter.toObject(
                            new com.sun.star.uno.Type(XSpreadsheet.class), o);
            xCell = oSheet.getCellByPosition(0, 0) ;
            xCell.setFormula("ScAccessiblePageHeader");

            xCell = oSheet.getCellByPosition(0, 1) ;
            xCell.setFormula("Cell 1");
            xCell = oSheet.getCellByPosition(0, 2) ;
            xCell.setFormula("Cell 2");
        } catch(com.sun.star.lang.IllegalArgumentException e) {
            System.out.println("Exception creating relation :");
            fail(e.getMessage());
        } catch(com.sun.star.lang.WrappedTargetException e) {
            System.out.println("Exception creating relation :");
            fail(e.getMessage());
        } catch(com.sun.star.lang.IndexOutOfBoundsException e) {
            System.out.println("Exception creating relation :");
            fail(e.getMessage());
        }

        XModel aModel =
            UnoRuntime.queryInterface(XModel.class, xSpreadsheetDoc);

        XController xController = aModel.getCurrentController();

        // get page styles
        XStyleFamiliesSupplier StyleFam =
            UnoRuntime.queryInterface(
                XStyleFamiliesSupplier.class,
                xSpreadsheetDoc );
        XNameAccess StyleFamNames = StyleFam.getStyleFamilies();
        XStyle StdStyle = null;

        try{
            Object o = StyleFamNames.getByName("PageStyles");
            XNameAccess PageStyles = (XNameAccess)AnyConverter.toObject(
                            new com.sun.star.uno.Type(XNameAccess.class), o);

            o = PageStyles.getByName("Default");
            StdStyle = (XStyle)AnyConverter.toObject(
                            new com.sun.star.uno.Type(XStyle.class), o);
        } catch(com.sun.star.lang.IllegalArgumentException e) {
            fail(e.getMessage());
        } catch(com.sun.star.lang.WrappedTargetException e){
            fail(e.getMessage());
            return;
        } catch(com.sun.star.container.NoSuchElementException e){
            fail(e.getMessage());
            return;
        }

        //get the property-set
        final XPropertySet PropSet =
            UnoRuntime.queryInterface(XPropertySet.class, StdStyle);

        XHeaderFooterContent RPHFC = null;

        // get the header
        try {
            Object o = PropSet.getPropertyValue("RightPageHeaderContent");
            RPHFC = (XHeaderFooterContent)AnyConverter.toObject(
                    new com.sun.star.uno.Type(XHeaderFooterContent.class), o);

        } catch(com.sun.star.lang.IllegalArgumentException e) {
            fail(e.getMessage());
        } catch(com.sun.star.lang.WrappedTargetException e){
            fail(e.getMessage());
            return;
        } catch(com.sun.star.beans.UnknownPropertyException e){
            fail(e.getMessage());
            return;
        }

        // insert text into header
        XText center = RPHFC.getCenterText();
        center.setString("First line \n\r Second line \n\r third line ");
        try {
            PropSet.setPropertyValue("RightPageHeaderContent",RPHFC);
        } catch (com.sun.star.beans.UnknownPropertyException e) {
        } catch (com.sun.star.beans.PropertyVetoException e) {
        } catch (com.sun.star.lang.IllegalArgumentException e) {
        } catch (com.sun.star.lang.WrappedTargetException e) {}

        // get footer
        RPHFC = null;
        try {
            Object o = PropSet.getPropertyValue("RightPageHeaderContent");
            RPHFC = (XHeaderFooterContent)AnyConverter.toObject(
                    new com.sun.star.uno.Type(XHeaderFooterContent.class), o);
        } catch(com.sun.star.lang.IllegalArgumentException e) {
            fail(e.getMessage());
        } catch(com.sun.star.lang.WrappedTargetException e){
            fail(e.getMessage());
            return;
        } catch(com.sun.star.beans.UnknownPropertyException e){
            fail(e.getMessage());
            return;
        }

        // insert text into footer
        center = RPHFC.getCenterText();
        center.setString("Third last line\n\r Second last line\n\r last line");
        try {
            PropSet.setPropertyValue("RightPageFooterContent",RPHFC);
        } catch (com.sun.star.beans.UnknownPropertyException e) {
        } catch (com.sun.star.beans.PropertyVetoException e) {
        } catch (com.sun.star.lang.IllegalArgumentException e) {
        } catch (com.sun.star.lang.WrappedTargetException e) {}

        // switching to 'Page Preview' mode
        try {
            XDispatchProvider xDispProv =
                UnoRuntime.queryInterface(XDispatchProvider.class, xController);
            XURLTransformer xParser =
                UnoRuntime.queryInterface(XURLTransformer.class,
            mXMSF.createInstance("com.sun.star.util.URLTransformer"));
            // Because it's an in/out parameter we must use an
            // array of URL objects.
            URL[] aParseURL = new URL[1];
            aParseURL[0] = new URL();
            aParseURL[0].Complete = ".uno:PrintPreview";
            xParser.parseStrict(aParseURL);
            URL aURL = aParseURL[0];
            XDispatch xDispatcher = xDispProv.queryDispatch(aURL, "", 0);
            if(xDispatcher != null)
            {
                xDispatcher.dispatch( aURL, null );
            }
        } catch (com.sun.star.uno.Exception e) {
            fail("Couldn't change mode");
            return;
        }

        util.utils.waitForEventIdle(mXMSF);

        System.out.println("Press any key after resizing ");
        try{
            byte[]b = new byte[16];
            System.in.read(b);
        } catch (Exception e) {
            e.printStackTrace();
        }

        XWindow xWindow = AccessibilityTools.getCurrentWindow(aModel);
        XAccessible xRoot = AccessibilityTools.getAccessibleObject(xWindow);
        XAccessible parent = null;

        try {
            parent = AccessibilityTools.getAccessibleObjectForRole
                (xRoot, AccessibleRole.HEADER, "").getAccessibleChild(0);
            oObj = parent.getAccessibleContext().getAccessibleChild(0);
        } catch (com.sun.star.lang.IndexOutOfBoundsException iabe) {
            fail(iabe.getMessage());
            return;
        }

        System.out.println("ImplementationName " + utils.getImplName(oObj));

        XAccessibleComponent accPC =
                UnoRuntime.queryInterface(XAccessibleComponent.class, parent);

        System.out.println("Parent-BoundsX= "+accPC.getBounds().X);
        System.out.println("Parent-BoundsY= "+accPC.getBounds().Y);
        System.out.println("Parent-BoundsWidth= "+accPC.getBounds().Width);
        System.out.println("Parent-BoundsHeight= "+accPC.getBounds().Height);

        XAccessibleComponent accPPC =
                        UnoRuntime.queryInterface(XAccessibleComponent.class,
                        parent.getAccessibleContext().getAccessibleParent());

        System.out.println("P-Parent-BoundsX= "+accPPC.getBounds().X);
        System.out.println("P-Parent-BoundsY= "+accPPC.getBounds().Y);
        System.out.println("P-Parent-BoundsWidth= "+accPPC.getBounds().Width);
        System.out.println("P-Parent-BoundsHeight= "+accPPC.getBounds().Height);

        util.utils.waitForEventIdle(mXMSF);

        System.out.println("Press any key when the second line is on top");
        try{
            byte[]b = new byte[16];
            System.in.read(b);
        } catch (Exception e) {
            e.printStackTrace();
        }

        try {
            System.out.println("ChildCount: "+
                    parent.getAccessibleContext().getAccessibleChildCount());
            System.out.println("Getting child 0 again");
            oObj = parent.getAccessibleContext().getAccessibleChild(0);
        } catch (com.sun.star.lang.IndexOutOfBoundsException iabe) {
            fail(iabe.getMessage());
            return;
        }

        XAccessibleText accT =
                UnoRuntime.queryInterface(XAccessibleText.class, oObj);
        System.out.println("Getting the text: "+accT.getText());

        XAccessibleComponent accC =
                UnoRuntime.queryInterface(XAccessibleComponent.class, oObj);
        System.out.println("BoundsX= "+accC.getBounds().X);
        System.out.println("BoundsY= "+accC.getBounds().Y);
        System.out.println("BoundsWidth= "+accC.getBounds().Width);
        System.out.println("BoundsHeight= "+accC.getBounds().Height);

        accPC =
                UnoRuntime.queryInterface(XAccessibleComponent.class, parent);

        System.out.println("Parent-BoundsX= "+accPC.getBounds().X);
        System.out.println("Parent-BoundsY= "+accPC.getBounds().Y);
        System.out.println("Parent-BoundsWidth= "+accPC.getBounds().Width);
        System.out.println("Parent-BoundsHeight= "+accPC.getBounds().Height);

        accPPC =
        UnoRuntime.queryInterface(XAccessibleComponent.class,
                        parent.getAccessibleContext().getAccessibleParent());

        System.out.println("P-Parent-BoundsX= "+accPPC.getBounds().X);
        System.out.println("P-Parent-BoundsY= "+accPPC.getBounds().Y);
        System.out.println("P-Parent-BoundsWidth= "+accPPC.getBounds().Width);
        System.out.println("P-Parent-BoundsHeight= "+accPPC.getBounds().Height);



        System.out.println("Press any key when the footer is visible.");
        try{
            byte[]b = new byte[16];
            System.in.read(b);
        } catch (Exception e) {
            e.printStackTrace();
        }

        try {
            parent = AccessibilityTools.getAccessibleObjectForRole
                (xRoot, AccessibleRole.FOOTER, "").getAccessibleChild(0);
        } catch (com.sun.star.lang.IndexOutOfBoundsException iabe) {
            fail(iabe.getMessage());
            return;
        }

        accPC =
                UnoRuntime.queryInterface(XAccessibleComponent.class, parent);

        try {
            System.out.println("ChildCount: "+
                    parent.getAccessibleContext().getAccessibleChildCount());
            System.out.println("Getting child 0 again");
            oObj = parent.getAccessibleContext().getAccessibleChild(0);
        } catch (com.sun.star.lang.IndexOutOfBoundsException iabe) {
            fail(iabe.getMessage());
            return;
        }

        accT =
                UnoRuntime.queryInterface(XAccessibleText.class, oObj);
        System.out.println("Getting the text: "+accT.getText());

        accC =
                UnoRuntime.queryInterface(XAccessibleComponent.class, oObj);
        System.out.println("BoundsX= "+accC.getBounds().X);
        System.out.println("BoundsY= "+accC.getBounds().Y);
        System.out.println("BoundsWidth= "+accC.getBounds().Width);
        System.out.println("BoundsHeight= "+accC.getBounds().Height);

        accPC =
                UnoRuntime.queryInterface(XAccessibleComponent.class, parent);

        System.out.println("Parent-BoundsX= "+accPC.getBounds().X);
        System.out.println("Parent-BoundsY= "+accPC.getBounds().Y);
        System.out.println("Parent-BoundsWidth= "+accPC.getBounds().Width);
        System.out.println("Parent-BoundsHeight= "+accPC.getBounds().Height);

        accPPC =
        UnoRuntime.queryInterface(XAccessibleComponent.class,
                        parent.getAccessibleContext().getAccessibleParent());

        System.out.println("P-Parent-BoundsX= "+accPPC.getBounds().X);
        System.out.println("P-Parent-BoundsY= "+accPPC.getBounds().Y);
        System.out.println("P-Parent-BoundsWidth= "+accPPC.getBounds().Width);
        System.out.println("P-Parent-BoundsHeight= "+accPPC.getBounds().Height);


        System.out.println("Press any key when the page content is on top");
        try{
            byte[]b = new byte[16];
            System.in.read(b);
        } catch (Exception e) {
            e.printStackTrace();
        }

        try {
            parent = AccessibilityTools.getAccessibleObjectForRole
                (xRoot, AccessibleRole.DOCUMENT, "").getAccessibleChild(0);
        } catch (com.sun.star.lang.IndexOutOfBoundsException iabe) {
            fail(iabe.getMessage());
            return;
        }
        System.out.println("PARENT: " + parent.getAccessibleContext().getAccessibleName());
        accPC =
                UnoRuntime.queryInterface(XAccessibleComponent.class, parent);

        long cCount = 0;
        try {
            cCount =
               parent.getAccessibleContext().getAccessibleChildCount();
            System.out.println("ChildCount: "+cCount);
            System.out.println("Getting child 0 again");
            oObj = parent.getAccessibleContext().getAccessibleChild(0);
        } catch (com.sun.star.lang.IndexOutOfBoundsException iabe) {
            fail(iabe.getMessage());
            return;
        }

        for (long i=0; i<cCount; i++) {
            try {
                XAccessible xA = parent.getAccessibleContext().getAccessibleChild(i);
                System.out.println("NAME object " + i + ": " + xA.getAccessibleContext().getAccessibleName());
            } catch (com.sun.star.lang.IndexOutOfBoundsException iabe) {
                fail(iabe.getMessage());
                return;
            }
        }

        System.out.println("SERVICES:");
        util.dbg.getSuppServices(oObj);

        XAccessibleValue accV =
                UnoRuntime.queryInterface(XAccessibleValue.class, oObj);
        Object o = accV.getCurrentValue();
        if (o instanceof String)
        {
            System.out.println("Value: " + (String)o);
        }
        else
        {
            System.out.println("Name of Object: " + o.getClass().getName());
        }
        System.out.println("Getting the value: "+accV.getCurrentValue());




        accC =
                UnoRuntime.queryInterface(XAccessibleComponent.class, oObj);
        System.out.println("BoundsX= "+accC.getBounds().X);
        System.out.println("BoundsY= "+accC.getBounds().Y);
        System.out.println("BoundsWidth= "+accC.getBounds().Width);
        System.out.println("BoundsHeight= "+accC.getBounds().Height);

        accPC =
                UnoRuntime.queryInterface(XAccessibleComponent.class, parent);

        System.out.println("Parent-BoundsX= "+accPC.getBounds().X);
        System.out.println("Parent-BoundsY= "+accPC.getBounds().Y);
        System.out.println("Parent-BoundsWidth= "+accPC.getBounds().Width);
        System.out.println("Parent-BoundsHeight= "+accPC.getBounds().Height);

        accPPC =
                UnoRuntime.queryInterface(XAccessibleComponent.class,
                        parent.getAccessibleContext().getAccessibleParent());

        System.out.println("P-Parent-BoundsX= "+accPPC.getBounds().X);
        System.out.println("P-Parent-BoundsY= "+accPPC.getBounds().Y);
        System.out.println("P-Parent-BoundsWidth= "+accPPC.getBounds().Width);
        System.out.println("P-Parent-BoundsHeight= "+accPPC.getBounds().Height);

        XComponent xComp = UnoRuntime.queryInterface(
                                    XComponent.class, xSpreadsheetDoc);
        xComp.dispose();
    }








    /**
     * Create a spreadsheet document, insert some text, header and footer.
     * Let the user resize the document and check the contents.
     */

    @Test public void checkNegativeViewForwarder() {
        SOfficeFactory SOF = SOfficeFactory.getFactory( mXMSF );
        XSpreadsheetDocument xSpreadsheetDoc = null;

        try {
            System.out.println("Creating a spreadsheet document");
            xSpreadsheetDoc = SOF.createCalcDoc(null);
        } catch (com.sun.star.uno.Exception e) {
            fail(e.getMessage());
            return;
        }

        XInterface oObj = null;

        // inserting some content to have non-empty page preview
        XCell xCell = null;
        try {
            XSpreadsheets oSheets = xSpreadsheetDoc.getSheets() ;
            XIndexAccess oIndexSheets =
                UnoRuntime.queryInterface(XIndexAccess.class, oSheets);
            Object o = oIndexSheets.getByIndex(0);
            XSpreadsheet oSheet = (XSpreadsheet)AnyConverter.toObject(
                            new com.sun.star.uno.Type(XSpreadsheet.class), o);
            xCell = oSheet.getCellByPosition(0, 0) ;
            xCell.setFormula("ScAccessiblePageHeader");

            xCell = oSheet.getCellByPosition(0, 1) ;
            xCell.setFormula("Cell 1");
            xCell = oSheet.getCellByPosition(0, 2) ;
            xCell.setFormula("Cell 2");
        } catch(com.sun.star.lang.IllegalArgumentException e) {
            System.out.println("Exception creating relation :");
            fail(e.getMessage());
        } catch(com.sun.star.lang.WrappedTargetException e) {
            System.out.println("Exception creating relation :");
            fail(e.getMessage());
        } catch(com.sun.star.lang.IndexOutOfBoundsException e) {
            System.out.println("Exception creating relation :");
            fail(e.getMessage());
        }

        XModel aModel =
            UnoRuntime.queryInterface(XModel.class, xSpreadsheetDoc);

        XController xController = aModel.getCurrentController();

        // get page styles
        XStyleFamiliesSupplier StyleFam =
            UnoRuntime.queryInterface(
                XStyleFamiliesSupplier.class,
                xSpreadsheetDoc );
        XNameAccess StyleFamNames = StyleFam.getStyleFamilies();
        XStyle StdStyle = null;

        try{
            Object o = StyleFamNames.getByName("PageStyles");
            XNameAccess PageStyles = (XNameAccess)AnyConverter.toObject(
                            new com.sun.star.uno.Type(XNameAccess.class), o);

            o = PageStyles.getByName("Default");
            StdStyle = (XStyle)AnyConverter.toObject(
                            new com.sun.star.uno.Type(XStyle.class), o);
        } catch(com.sun.star.lang.IllegalArgumentException e) {
            fail(e.getMessage());
        } catch(com.sun.star.lang.WrappedTargetException e){
            fail(e.getMessage());
            return;
        } catch(com.sun.star.container.NoSuchElementException e){
            fail(e.getMessage());
            return;
        }

        //get the property-set
        final XPropertySet PropSet =
            UnoRuntime.queryInterface(XPropertySet.class, StdStyle);

        XHeaderFooterContent RPHFC = null;

        // get the header
        System.out.println( "Creating a test environment" );
        try {
            Object o = PropSet.getPropertyValue("RightPageHeaderContent");
            RPHFC = (XHeaderFooterContent)AnyConverter.toObject(
                    new com.sun.star.uno.Type(XHeaderFooterContent.class), o);
        } catch(com.sun.star.lang.IllegalArgumentException e) {
            fail(e.getMessage());
        } catch(com.sun.star.lang.WrappedTargetException e){
            fail(e.getMessage());
            return;
        } catch(com.sun.star.beans.UnknownPropertyException e){
            fail(e.getMessage());
            return;
        }

        // insert text into header
        XText center = RPHFC.getCenterText();
        center.setString("First line \n\r Second line \n\r third line ");
        try {
            PropSet.setPropertyValue("RightPageHeaderContent",RPHFC);
        } catch (com.sun.star.beans.UnknownPropertyException e) {
        } catch (com.sun.star.beans.PropertyVetoException e) {
        } catch (com.sun.star.lang.IllegalArgumentException e) {
        } catch (com.sun.star.lang.WrappedTargetException e) {}

        // get footer
        RPHFC = null;
        try {
            Object o = PropSet.getPropertyValue("RightPageFooterContent");
            RPHFC = (XHeaderFooterContent)AnyConverter.toObject(
                    new com.sun.star.uno.Type(XHeaderFooterContent.class), o);
        } catch(com.sun.star.lang.IllegalArgumentException e) {
            fail(e.getMessage());
        } catch(com.sun.star.lang.WrappedTargetException e){
            fail(e.getMessage());
            return;
        } catch(com.sun.star.beans.UnknownPropertyException e){
            fail(e.getMessage());
            return;
        }

        // insert text into footer
        center = RPHFC.getCenterText();
        center.setString("Third last line\n\r Second last line\n\r last line");
        try {
            PropSet.setPropertyValue("RightPageFooterContent",RPHFC);
        } catch (com.sun.star.beans.UnknownPropertyException e) {
        } catch (com.sun.star.beans.PropertyVetoException e) {
        } catch (com.sun.star.lang.IllegalArgumentException e) {
        } catch (com.sun.star.lang.WrappedTargetException e) {}

        // switching to 'Page Preview' mode
        try {
            XDispatchProvider xDispProv =
                UnoRuntime.queryInterface(XDispatchProvider.class, xController);
            XURLTransformer xParser =
                UnoRuntime.queryInterface(XURLTransformer.class,
            mXMSF.createInstance("com.sun.star.util.URLTransformer"));
            // Because it's an in/out parameter we must use an
            // array of URL objects.
            URL[] aParseURL = new URL[1];
            aParseURL[0] = new URL();
            aParseURL[0].Complete = ".uno:PrintPreview";
            xParser.parseStrict(aParseURL);
            URL aURL = aParseURL[0];
            XDispatch xDispatcher = xDispProv.queryDispatch(aURL, "", 0);
            if(xDispatcher != null)
            {
                xDispatcher.dispatch( aURL, null );
            }
        } catch (com.sun.star.uno.Exception e) {
            fail("Couldn't change mode");
            return;
        }

        util.utils.waitForEventIdle(mXMSF);

        System.out.println("Press any key after resizing ");
        try{
            byte[]b = new byte[16];
            System.in.read(b);
        } catch (Exception e) {
            e.printStackTrace();
        }

        XWindow xWindow = AccessibilityTools.getCurrentWindow(aModel);
        XAccessible xRoot = AccessibilityTools.getAccessibleObject(xWindow);
        XAccessible parent = null;

        try {
            parent = AccessibilityTools.getAccessibleObjectForRole
                (xRoot, AccessibleRole.HEADER, "").getAccessibleChild(0);
            oObj = parent.getAccessibleContext().getAccessibleChild(0);
        } catch (com.sun.star.lang.IndexOutOfBoundsException iabe) {
            fail(iabe.getMessage());
            return;
        }

        System.out.println("ImplementationName " + utils.getImplName(oObj));

        XAccessibleComponent accPC =
                UnoRuntime.queryInterface(XAccessibleComponent.class, parent);

        System.out.println("Parent-BoundsX= "+accPC.getBounds().X);
        System.out.println("Parent-BoundsY= "+accPC.getBounds().Y);
        System.out.println("Parent-BoundsWidth= "+accPC.getBounds().Width);
        System.out.println("Parent-BoundsHeight= "+accPC.getBounds().Height);

        XAccessibleComponent accPPC =
                        UnoRuntime.queryInterface(XAccessibleComponent.class,
                        parent.getAccessibleContext().getAccessibleParent());

        System.out.println("P-Parent-BoundsX= "+accPPC.getBounds().X);
        System.out.println("P-Parent-BoundsY= "+accPPC.getBounds().Y);
        System.out.println("P-Parent-BoundsWidth= "+accPPC.getBounds().Width);
        System.out.println("P-Parent-BoundsHeight= "+accPPC.getBounds().Height);

        util.utils.waitForEventIdle(mXMSF);

        System.out.println("Press any key when the header is not visible.");
        try{
            byte[]b = new byte[16];
            System.in.read(b);
        } catch (Exception e) {
            e.printStackTrace();
        }

        long childCount = 0;
        childCount =
                parent.getAccessibleContext().getAccessibleChildCount();
        System.out.println("ChildCount: "+childCount);

        if (childCount != 0)
        {
            fail("Could access header although it was not visible on page.");
        }


        try {
            parent = AccessibilityTools.getAccessibleObjectForRole
                (xRoot, AccessibleRole.FOOTER, "").getAccessibleChild(0);
        } catch (com.sun.star.lang.IndexOutOfBoundsException iabe) {
            fail(iabe.getMessage());
            return;
        }

        accPC =
                UnoRuntime.queryInterface(XAccessibleComponent.class, parent);

        System.out.println("Press any key when the footer is not visible.");
        try{
            byte[]b = new byte[16];
            System.in.read(b);
        } catch (Exception e) {
            e.printStackTrace();
        }

        childCount =
                parent.getAccessibleContext().getAccessibleChildCount();
        System.out.println("ChildCount: "+childCount);

        if (childCount != 0)
        {
            fail("Could access footer although it was not visible on page.");
        }

        XComponent xComp =UnoRuntime.queryInterface(
                                        XComponent.class, xSpreadsheetDoc);
        xComp.dispose();

    }




    /**
     * Check the preview of header cells
     */

    @Test public void checkPreviewHeaderCells() {

        XInterface oObj = null;
        SOfficeFactory SOF = SOfficeFactory.getFactory( mXMSF);
        XSpreadsheetDocument xSpreadsheetDoc = null;

        try {
            System.out.println("Creating a spreadsheet document");
            xSpreadsheetDoc = SOF.createCalcDoc(null);
        } catch (com.sun.star.uno.Exception e) {
            fail(e.getMessage());
            return;
        }

        XModel xModel =
            UnoRuntime.queryInterface(XModel.class, xSpreadsheetDoc);

        XController xController = xModel.getCurrentController();

        //setting value of cell A1
        XCell xCell = null;
        try {
            System.out.println("Getting spreadsheet") ;
            XSpreadsheets oSheets = xSpreadsheetDoc.getSheets() ;
            XIndexAccess oIndexSheets =
            UnoRuntime.queryInterface(XIndexAccess.class, oSheets);
            Object o = oIndexSheets.getByIndex(0);
            XSpreadsheet oSheet = (XSpreadsheet)AnyConverter.toObject(
                            new com.sun.star.uno.Type(XSpreadsheet.class), o);

            System.out.println("Getting a cell from sheet") ;
            xCell = oSheet.getCellByPosition(0, 0);
        } catch(com.sun.star.lang.IllegalArgumentException e) {
            fail(e.getMessage());
        } catch (com.sun.star.lang.WrappedTargetException e) {
            fail(e.getMessage());
            return;
        } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
            fail(e.getMessage());
            return;
        }

        xCell.setFormula("Value");

        //setting property 'PrintHeaders' of the style 'Default'
        XStyleFamiliesSupplier xSFS =
            UnoRuntime.queryInterface(XStyleFamiliesSupplier.class,
                                                            xSpreadsheetDoc);
        XNameAccess xNA = xSFS.getStyleFamilies();
        XPropertySet xPropSet = null;
        try {
            Object oPageStyles = xNA.getByName("PageStyles");
            xNA =
                UnoRuntime.queryInterface(XNameAccess.class, oPageStyles);
            Object oDefStyle = xNA.getByName("Default");
            xPropSet =
                UnoRuntime.queryInterface(XPropertySet.class, oDefStyle);
        } catch(com.sun.star.lang.WrappedTargetException e) {
            fail(e.getMessage());
            return;
        } catch(com.sun.star.container.NoSuchElementException e) {
            fail(e.getMessage());
            return;
        }

        try {
            xPropSet.setPropertyValue("PrintHeaders"Boolean.TRUE);
        } catch(com.sun.star.lang.WrappedTargetException e) {
            fail(e.getMessage());
            return;
        } catch(com.sun.star.lang.IllegalArgumentException e) {
            fail(e.getMessage());
            return;
        } catch(com.sun.star.beans.PropertyVetoException e) {
            fail(e.getMessage());
            return;
        } catch(com.sun.star.beans.UnknownPropertyException e) {
            fail(e.getMessage());
            return;
        }

        //switching to 'Print Preview' mode
        try {
            XDispatchProvider xDispProv =
                UnoRuntime.queryInterface(XDispatchProvider.class, xController);
            XURLTransformer xParser =
                UnoRuntime.queryInterface(XURLTransformer.class,
            mXMSF.createInstance("com.sun.star.util.URLTransformer"));
            URL[] aParseURL = new URL[1];
            aParseURL[0] = new URL();
            aParseURL[0].Complete = ".uno:PrintPreview";
            xParser.parseStrict(aParseURL);
            URL aURL = aParseURL[0];
            XDispatch xDispatcher = xDispProv.queryDispatch(aURL, "", 0);
            if(xDispatcher != null)
            {
                xDispatcher.dispatch( aURL, null );
            }
        } catch (com.sun.star.uno.Exception e) {
            fail(e.getMessage());
            return;
        }

        util.utils.waitForEventIdle(mXMSF);

        XWindow xWindow = AccessibilityTools.getCurrentWindow(xModel);
        XAccessible xRoot = AccessibilityTools.getAccessibleObject(xWindow);

        System.out.println("Press any key when the header cell is on top.");
        try{
            byte[]b = new byte[16];
            System.in.read(b);
        } catch (Exception e) {
            e.printStackTrace();
        }


        try {
            System.out.println("Count: " +AccessibilityTools.getAccessibleObjectForRole
                (xRoot, AccessibleRole.TABLE, "").getAccessibleChildCount());
            System.out.println("Getting child 2");
            oObj = AccessibilityTools.getAccessibleObjectForRole
                (xRoot, AccessibleRole.TABLE, "").getAccessibleChild(2);
        } catch (com.sun.star.lang.IndexOutOfBoundsException iabe) {
            fail(iabe.getMessage());
            return;
        }

        System.out.println("*** DEBUG INFO ***");
        util.dbg.getSuppServices(oObj);
        System.out.println("****** IFC ******");
        util.dbg.printInterfaces(oObj);
        System.out.println("*****************");


        XAccessibleValue accV =
                UnoRuntime.queryInterface(XAccessibleValue.class, oObj);
        Object o = accV.getCurrentValue();
        System.out.println("Getting the value: "+o + " is void " + util.utils.isVoid(o));


        XAccessibleComponent accC =
                UnoRuntime.queryInterface(XAccessibleComponent.class, oObj);

        System.out.println("BoundsX= "+accC.getBounds().X);
        System.out.println("BoundsY= "+accC.getBounds().Y);
        System.out.println("BoundsWidth= "+accC.getBounds().Width);
        System.out.println("BoundsHeight= "+accC.getBounds().Height);

        XComponent xComp = UnoRuntime.queryInterface(
                                        XComponent.class, xSpreadsheetDoc);
        xComp.dispose();

    }





    /**
     * Check the preview of Shapes: load a document with shapes and see, if they
     * are accessible.
     */

    @Test public void checkPreviewShape() {
        SOfficeFactory SOF = SOfficeFactory.getFactory( mXMSF );
        XSpreadsheetDocument xSpreadsheetDoc = null;
        XComponent xComp = null;
        XInterface oObj = null;

        try {
            String docName = "calcshapes.sxc";
            System.out.println("Loading a spreadsheetdocument.");
            String url = TestDocument.getUrl(docName);
            System.out.println("loading document '" + url + "'");
            xComp = SOF.loadDocument(url);
            assertNotNull(xComp);
        }
        catch (com.sun.star.uno.Exception e) {
            fail(e.getMessage());
            return;
        }

        util.utils.waitForEventIdle(mXMSF);

        xSpreadsheetDoc = UnoRuntime.queryInterface(
                                            XSpreadsheetDocument.class, xComp);
        XModel aModel =
            UnoRuntime.queryInterface(XModel.class, xSpreadsheetDoc);

        XController xController = aModel.getCurrentController();

        // switching to 'Page Preview' mode
        try {
            XDispatchProvider xDispProv =
                UnoRuntime.queryInterface(XDispatchProvider.class, xController);
            XURLTransformer xParser =
                UnoRuntime.queryInterface(XURLTransformer.class,
            mXMSF.createInstance("com.sun.star.util.URLTransformer"));
            // Because it's an in/out parameter we must use an
            // array of URL objects.
            URL[] aParseURL = new URL[1];
            aParseURL[0] = new URL();
            aParseURL[0].Complete = ".uno:PrintPreview";
            xParser.parseStrict(aParseURL);
            URL aURL = aParseURL[0];
            XDispatch xDispatcher = xDispProv.queryDispatch(aURL, "", 0);
            if(xDispatcher != null)
            {
                xDispatcher.dispatch( aURL, null );
            }
        } catch (com.sun.star.uno.Exception e) {
            fail("Couldn't change mode");
            return;
        }

        util.utils.waitForEventIdle(mXMSF);

        System.out.println("Press any key when a shape is on top.");
        try{
            byte[]b = new byte[16];
            System.in.read(b);
        } catch (Exception e) {
            e.printStackTrace();
        }

        XWindow xWindow = AccessibilityTools.getCurrentWindow(aModel);
        XAccessible xRoot = AccessibilityTools.getAccessibleObject(xWindow);

        try {
            XAccessibleContext con = AccessibilityTools.getAccessibleObjectForRole
                                (xRoot, AccessibleRole.SHAPE, "");
            System.out.println("Name of AccessibleContext: " + con.getAccessibleName());
            oObj = con;
        } catch (Exception e) {
            fail(e.getMessage());
            return;
        }

        System.out.println("ImplementationName: " + utils.getImplName(oObj));
        util.dbg.printInterfaces(oObj);

        xComp.dispose();
    }

    @BeforeClass public static void setUpConnection() throws Exception {
        connection.setUp();
    }

    @AfterClass public static void tearDownConnection()
        throws InterruptedException, com.sun.star.uno.Exception
    {
        connection.tearDown();
    }

    private static final OfficeConnection connection = new OfficeConnection();

}



Messung V0.5
C=97 H=99 G=97

¤ Dauer der Verarbeitung: 0.3 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge