import java.lang.Thread; import com.sun.star.awt.Rectangle; import com.sun.star.awt.XWindow; import com.sun.star.beans.Property; import com.sun.star.beans.PropertyValue; import com.sun.star.beans.XPropertySet; import com.sun.star.beans.XPropertySetInfo; import com.sun.star.container.XIndexAccess; import com.sun.star.container.XChild; import com.sun.star.container.XEnumerationAccess; import com.sun.star.container.XEnumeration; import com.sun.star.frame.XComponentLoader; import com.sun.star.frame.XController; import com.sun.star.frame.XDesktop; import com.sun.star.frame.XFrame; import com.sun.star.frame.XTasksSupplier; import com.sun.star.frame.XTask; import com.sun.star.lang.XComponent; 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.XDrawView; import com.sun.star.drawing.XDrawPage; import com.sun.star.drawing.XShapes; 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 = (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 = (XIndexAccess) 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 = (XAccessibleContext) UnoRuntime.queryInterface ( XAccessibleContext.class, xObject); if (xContext == null) { XAccessible 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 = (XIndexAccess) 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 = (XAccessibleComponent) 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