/* * 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 . */ import com.sun.star.beans.Property; import com.sun.star.beans.XPropertySet; import com.sun.star.beans.XPropertySetInfo; import com.sun.star.container.XIndexAccess; import com.sun.star.lang.XMultiServiceFactory; import com.sun.star.lang.XServiceInfo; import com.sun.star.lang.XServiceName; import com.sun.star.lang.XTypeProvider; import com.sun.star.uno.UnoRuntime; import com.sun.star.uno.XInterface; import com.sun.star.uno.Type; import com.sun.star.drawing.XDrawPage; import com.sun.star.drawing.XShape; import com.sun.star.drawing.XShapeDescriptor; import com.sun.star.accessibility.XAccessible; import com.sun.star.accessibility.XAccessibleContext; import com.sun.star.accessibility.XAccessibleComponent; import com.sun.star.accessibility.XAccessibleRelationSet; import com.sun.star.accessibility.XAccessibleStateSet; public class InformationWriter { public InformationWriter () { } public void drawPageTest (XInterface xPage) { try { printProperty (xPage, "BorderBottom ", "BorderBottom"); printProperty (xPage, "BorderLeft ", "BorderLeft"); printProperty (xPage, "BorderRight ", "BorderRight"); printProperty (xPage, "BorderTop ", "BorderTop"); printProperty (xPage, "Height ", "Height"); printProperty (xPage, "Width ", "Width"); printProperty (xPage, "Number ", "Number"); } catch (Exception e) { System.out.println ("caught exception while testing draw page:" + e); } } public void printProperty (XInterface xObject, String prefix, String name) { try { XPropertySet xPropertySet = UnoRuntime.queryInterface( XPropertySet.class, xObject); MessageArea.println (prefix + xPropertySet.getPropertyValue (name)); } catch (Exception e) { MessageArea.println ("caught exception while getting property " + name + " : " + e); } } public void showShapes (XDrawPage xPage) { try { XIndexAccess xShapeList = UnoRuntime.queryInterface( XIndexAccess.class, xPage); MessageArea.println ("There are " + xShapeList.getCount() + " shapes"); for (int i=0; i 0) sIndent += " "; // Get XAccessibleContext object if given object does not // already support this interface. XAccessibleContext xContext = UnoRuntime.queryInterface ( XAccessibleContext.class, xObject); if (xContext == null) { XAccessible xAccessible = UnoRuntime.queryInterface ( XAccessible.class, xObject); if (xAccessible == null) { MessageArea.println (sIndent + "given object " + xObject + " is not accessible"); return false; } else xContext = xAccessible.getAccessibleContext(); } // Print information about the accessible context. if (xContext != null) { MessageArea.println (sIndent + "Name : " + xContext.getAccessibleName()); MessageArea.println (sIndent + "Description : " + xContext.getAccessibleDescription()); MessageArea.println (sIndent + "Role : " + xContext.getAccessibleRole()); String sHasParent; if (xContext.getAccessibleParent() != null) { MessageArea.println (sIndent + "Has parent : yes"); MessageArea.println (sIndent + "Parent index : " + xContext.getAccessibleIndexInParent()); } else MessageArea.println (sIndent + "Has parent : no"); MessageArea.println (sIndent + "Child count : " + xContext.getAccessibleChildCount()); MessageArea.print (sIndent + "Relation set : "); XAccessibleRelationSet xRelationSet = xContext.getAccessibleRelationSet(); if (xRelationSet != null) { MessageArea.print (xRelationSet.getRelationCount() + " ("); for (int i=0; i 0) MessageArea.print (", "); MessageArea.print (xRelationSet.getRelation(i).toString()); } MessageArea.println (")"); } else MessageArea.println ("no relation set"); MessageArea.print (sIndent + "State set : "); XAccessibleStateSet xStateSet = xContext.getAccessibleStateSet(); if (xStateSet != null) { XIndexAccess xStates = UnoRuntime.queryInterface ( XIndexAccess.class, xStateSet); MessageArea.print (xStates.getCount() + " ("); for (int i=0; i 0) MessageArea.print (", "); MessageArea.print (xStates.getByIndex(i).toString()); } MessageArea.println (")"); } else MessageArea.println ("no state set"); showAccessibleComponent (xContext, sIndent); } else MessageArea.println ("object has no accessible context."); // showInfo (xContext); // showServices (xContext); // showInterfaces (xContext); } catch (Exception e) { System.out.println ("caught exception in showAccessibility :" + e); } return true; } /** @descr Print information about the given accessible component. */ public void showAccessibleComponent (XInterface xObject, String sIndent) { try { XAccessibleComponent xComponent = UnoRuntime.queryInterface ( XAccessibleComponent.class, xObject); // Print information about the accessible context. if (xComponent != null) { MessageArea.println (sIndent + "Position : " + xComponent.getLocation().X+", " + xComponent.getLocation().Y); MessageArea.println (sIndent + "Screen position : " + xComponent.getLocationOnScreen().X+", " + xComponent.getLocationOnScreen().Y); MessageArea.println (sIndent + "Size : " + xComponent.getSize().Width+", " + xComponent.getSize().Height); } } catch (Exception e) { System.out.println ( "caught exception in showAccessibleComponent : " + e); } } /** Show a textual representation of the accessibility subtree rooted in xRoot. */ public boolean showAccessibilityTree (XAccessible xRoot, int depth) { try { if ( ! showAccessibility (xRoot, depth)) return false; String sIndent = ""; for (int i=0; i