diff options
Diffstat (limited to 'odk/examples/DevelopersGuide/Accessibility/TextualDisplay.java')
-rw-r--r-- | odk/examples/DevelopersGuide/Accessibility/TextualDisplay.java | 230 |
1 files changed, 0 insertions, 230 deletions
diff --git a/odk/examples/DevelopersGuide/Accessibility/TextualDisplay.java b/odk/examples/DevelopersGuide/Accessibility/TextualDisplay.java deleted file mode 100644 index 3776d635..00000000 --- a/odk/examples/DevelopersGuide/Accessibility/TextualDisplay.java +++ /dev/null @@ -1,230 +0,0 @@ -/************************************************************************* - * - * The Contents of this file are made available subject to the terms of - * the BSD license. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Sun Microsystems, Inc. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE - * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - *************************************************************************/ - -import java.awt.Color; -import java.awt.Font; -import java.awt.Dimension; -import javax.swing.JTextArea; -import javax.swing.JScrollPane; -import java.util.Vector; - -import com.sun.star.accessibility.XAccessible; -import com.sun.star.accessibility.XAccessibleContext; -import com.sun.star.accessibility.XAccessibleComponent; -import com.sun.star.accessibility.XAccessibleStateSet; - -import com.sun.star.uno.AnyConverter; -import com.sun.star.uno.UnoRuntime; - -import com.sun.star.awt.Point; -import com.sun.star.awt.Size; - -/** Display textual information for a given accessible object. This - includes the names of that object of its ancestors as well as some - information retrieved from the XAccessibleContext and - XAccessibleComponent interfaces. -*/ -class TextualDisplay - extends JScrollPane - implements IAccessibleObjectDisplay -{ - /** Create a new scroll pane that contains a text widget which display - information about given accessible objects. - */ - public TextualDisplay () - { - // Create a text widget for displaying the text information... - maText = new JTextArea (80,10); - maText.setBackground (new Color (250,240,230)); - maText.setFont (new Font ("Courier", Font.PLAIN, 11)); - - // ...and set-up the scroll pane to show this widget. - setViewportView (maText); - setVerticalScrollBarPolicy (JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); - setHorizontalScrollBarPolicy (JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); - } - - - - - /** Set the accessible object to display. Call this method e.g. when a - new object has been focused. - */ - public synchronized void setAccessibleObject (XAccessibleContext xContext) - { - // First clear the display area. - msTextContent = new String (); - - if (xContext != null) - { - String sIndentation = showParents (xContext); - showContextInfo (xContext, sIndentation); - showComponentInfo (xContext, sIndentation); - } - - maText.setText (msTextContent); - } - - - - - public synchronized void updateAccessibleObject (XAccessibleContext xContext) - { - setAccessibleObject (xContext); - } - - - - /** Show some of the information available over the given object's - XAccessibleContext interface. - */ - private void showContextInfo (XAccessibleContext xContext, String sIndentation) - { - // Show the description. - msTextContent += sIndentation + "Description: " - + xContext.getAccessibleDescription() + "\n"; - - showStates (xContext, sIndentation); - } - - - - - /** Show a list of all of the the given object's states. Use the - NameConverter class to transform the numerical state ids into human - readable names. - @param xContext - The accessible context for which to show the state names. - */ - private void showStates (XAccessibleContext xContext, String sIndentation) - { - // Get the state set object... - XAccessibleStateSet xStateSet = xContext.getAccessibleStateSet(); - // ...and retrieve an array of numerical ids. - short aStates[] = xStateSet.getStates(); - - // Iterate over the array and print the names of the states. - msTextContent += sIndentation + "States : "; - for (int i=0; i<aStates.length; i++) - { - if (i > 0) - msTextContent += ", "; - msTextContent += NameProvider.getStateName(aStates[i]); - } - msTextContent += "\n"; - } - - - - - /** When the given object supports the XAccessibleComponent interface then - show its size and location on the screen. - */ - private void showComponentInfo (XAccessibleContext xContext, String sIndentation) - { - // Try to cast the given accessible context to the - // XAccessibleComponent interface. - XAccessibleComponent xComponent = - (XAccessibleComponent)UnoRuntime.queryInterface( - XAccessibleComponent.class, xContext); - if (xComponent != null) - { - Point aLocation = xComponent.getLocationOnScreen(); - msTextContent += sIndentation + "Position : " - + aLocation.X + ", " + aLocation.Y + "\n"; - - Size aSize = xComponent.getSize(); - msTextContent += sIndentation + "Size : " - + aSize.Width + ", " + aSize.Height + "\n"; - } - } - - - - - - /** Print the names of the given object and its parents and return an - indentation string that can be used to print further information - about the object. - */ - private String showParents (XAccessibleContext xContext) - { - // Create the path from the given object to its tree's root. - Vector aPathToRoot = new Vector(); - while (xContext != null) - { - aPathToRoot.add (xContext); - // Go up the hierarchy one level to the object's parent. - try - { - XAccessible xParent = xContext.getAccessibleParent(); - if (xParent != null) - xContext = xParent.getAccessibleContext(); - else - xContext = null; - } - catch (Exception e) - { - System.err.println ("caught exception " + e + " while getting path to root"); - } - } - - // Print the path in the accessibility tree from the given context to - // the root. - String sIndentation = new String (); - for (int i=aPathToRoot.size()-1; i>=0; i--) - { - XAccessibleContext xParentContext = (XAccessibleContext)aPathToRoot.get(i); - String sParentName = xParentContext.getAccessibleName(); - if (sParentName.length() == 0) - sParentName = "<unnamed> / Role " - + NameProvider.getRoleName(xParentContext.getAccessibleRole()); - msTextContent += sIndentation + sParentName + "\n"; - sIndentation += msIndentation; - } - - return sIndentation; - } - - - - /// The text widget that is used for the actual text display. - private JTextArea maText; - - /// The indentation with which an object's child is indented. - private final String msIndentation = new String(" "); - - /// The text content displayed by this object. - private String msTextContent = new String (); -} |