Kaydet (Commit) d98e9740 authored tarafından Vladimir Glazounov's avatar Vladimir Glazounov

INTEGRATION: CWS sdk02 (1.1.2); FILE ADDED

2003/05/21 16:14:42 af 1.1.2.2: #109790# Adaption to recent UAA changes.
2003/05/09 10:31:16 jsc 1.1.2.1: #109045# insert new and remove example zip file
üst d26e5818
import java.awt.event.ActionListener;
import javax.swing.*;
import java.awt.*;
import java.util.*;
import com.sun.star.awt.XTopWindowListener;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.bridge.XUnoUrlResolver;
import com.sun.star.lang.XMultiServiceFactory;
import com.sun.star.accessibility.*;
import com.sun.star.awt.XExtendedToolkit;
/** This class is used as a thread and registers or unregsiters a listener
given the constructor at all nodes of a tree of accessibility objects.
*/
public class RegistrationThread
implements Runnable
{
/** Start a new thread that adds or removes the given listener at all
accessible objects in the sub-tree rooted in the given accessible
object.
@param aListener
The listener that is added or removed.
@param xRoot
The root of the sub-tree of accessibility objects.
@param bRegister
This flag decides whether to add or remove the listener.
*/
public RegistrationThread (
EventListenerProxy aListener,
XAccessibleContext xRoot,
boolean bRegister,
boolean bShowMessages)
{
maListener = aListener;
mxRoot = xRoot;
mbRegister = bRegister;
mbShowMessages = bShowMessages;
if (mxRoot != null)
{
if (mbShowMessages)
MessageArea.println ("starting to register at " + mxRoot.getAccessibleName());
new Thread (this, "RegistrationThread").start();
}
}
public void run ()
{
System.out.println ("starting registration");
long nNodeCount = traverseTree (mxRoot);
System.out.println ("ending registration");
if (mbShowMessages)
{
if ( ! mbRegister)
MessageArea.print ("un");
MessageArea.println ("registered at " + nNodeCount
+ " objects in accessibility tree of " + mxRoot.getAccessibleName());
}
}
/** Register this object as listener for accessibility events at all nodes
of the given tree.
@param xRoot
The root node of the tree at which to register.
*/
public long traverseTree (XAccessibleContext xRoot)
{
long nNodeCount = 0;
if (xRoot != null)
{
// Register the root node.
XAccessibleEventBroadcaster xBroadcaster =
(XAccessibleEventBroadcaster) UnoRuntime.queryInterface (
XAccessibleEventBroadcaster.class,
xRoot);
if (xBroadcaster != null)
{
if (mbRegister)
xBroadcaster.addEventListener (maListener);
else
xBroadcaster.removeEventListener (maListener);
nNodeCount += 1;
}
// Call this method recursively to register all sub-trees.
try
{
int nChildCount = xRoot.getAccessibleChildCount();
for (int i=0; i<nChildCount; i++)
{
XAccessible xChild = xRoot.getAccessibleChild (i);
if (xChild != null)
nNodeCount += traverseTree (xChild.getAccessibleContext());
}
}
catch (com.sun.star.lang.IndexOutOfBoundsException aException)
{
// The set of children has changed since our last call to
// getAccesibleChildCount(). Don't try any further on this
// sub-tree.
}
catch (com.sun.star.lang.DisposedException aException)
{
// The child has been destroyed since our last call to
// getAccesibleChildCount(). That is OK. Don't try any
// further on this sub-tree.
}
}
return nNodeCount;
}
private EventListenerProxy maListener;
private XAccessibleContext mxRoot;
private boolean mbRegister;
private boolean mbShowMessages;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment