summaryrefslogtreecommitdiffstats
path: root/toolkit/test/accessibility/TopWindowListener.java
diff options
context:
space:
mode:
authorAndre Fischer <af@openoffice.org>2002-08-21 10:39:07 +0000
committerAndre Fischer <af@openoffice.org>2002-08-21 10:39:07 +0000
commitcf06a6b0fed36a0a05546b663fee5b0bca030af7 (patch)
treef2b20821ac6d6947b5a2f921894ade7e8c487d89 /toolkit/test/accessibility/TopWindowListener.java
parent#101700# In OutputDevice::GetTextOutlines, finished fall back to bitmap conve... (diff)
downloadcore-cf06a6b0fed36a0a05546b663fee5b0bca030af7.tar.gz
core-cf06a6b0fed36a0a05546b663fee5b0bca030af7.zip
#100622# Added support of top level windows created during run time.
Diffstat (limited to 'toolkit/test/accessibility/TopWindowListener.java')
-rw-r--r--toolkit/test/accessibility/TopWindowListener.java150
1 files changed, 127 insertions, 23 deletions
diff --git a/toolkit/test/accessibility/TopWindowListener.java b/toolkit/test/accessibility/TopWindowListener.java
index 1d92f4d224b9..b1539b275e98 100644
--- a/toolkit/test/accessibility/TopWindowListener.java
+++ b/toolkit/test/accessibility/TopWindowListener.java
@@ -4,6 +4,7 @@ import drafts.com.sun.star.awt.XExtendedToolkit;
import drafts.com.sun.star.accessibility.XAccessible;
import com.sun.star.uno.XInterface;
import com.sun.star.uno.UnoRuntime;
+import javax.swing.event.TreeModelEvent;
/** Listen for top window events and create or delete children of the tree
model accordingly.
@@ -17,36 +18,88 @@ class TopWindowListener
maOffice = aOffice;
}
- // XTopWindowListener
- public void windowOpened (final com.sun.star.lang.EventObject aEvent) throws RuntimeException
+
+
+
+ /** Use this function to initially fill the accessibility object tree
+ view with nodes for top level windows.
+ */
+ public void Initialize ()
{
- System.out.println ("Top window opened: " + aEvent.Source);
- if (maModel != null)
+ XExtendedToolkit xToolkit = maOffice.getExtendedToolkit();
+ if (xToolkit != null)
{
- Object aObject = maModel.getRoot();
- if (aObject instanceof VectorNode)
+ maModel.lock ();
+ int nTopWindowCount = xToolkit.getTopWindowCount();
+ for (int i=0; i<nTopWindowCount; i++)
{
- VectorNode aRoot = (VectorNode) aObject;
- InformationWriter aIW = new InformationWriter();
- aIW.showInterfaces ((XInterface)aEvent.Source);
- XWindow xWindow = (XWindow) UnoRuntime.queryInterface(
- XWindow.class, aEvent.Source);
- if (xWindow == null)
- System.out.println ("event source is no XWindow");
- else
+ try
{
- XAccessible xAccessible = maOffice.getAccessibleObject(xWindow);
- if (xAccessible == null)
- System.out.println ("event source is no XAccessible");
- else
- {
- XAccessible xRoot = maOffice.getAccessibleRoot (xAccessible);
- aRoot.addChild (
- AccessibilityTreeModel.createDefaultNode (xRoot, aRoot));
- }
+ AddTopLevelNode (maOffice.getAccessibleObject(
+ xToolkit.getTopWindow (i)));
+ }
+ catch (Exception e)
+ {
+ System.out.println ("caught exception; " + e);
}
}
+ maModel.unlock ((AccessibleTreeNode)maModel.getRoot());
+ }
+ }
+
+
+
+ /** Add a new top level node which, to be exact, will be placed on the
+ second layer of the tree.
+ @param xNewTopLevelObject
+ The accessible object of the new top level window.
+ */
+ private void AddTopLevelNode (XAccessible xNewTopLevelObject)
+ {
+ Object aObject = maModel.getRoot();
+ System.out.println ("adding node to " + aObject);
+ if (aObject instanceof VectorNode && xNewTopLevelObject != null)
+ {
+ System.out.println ("adding node for " + xNewTopLevelObject);
+ VectorNode aRoot = (VectorNode) aObject;
+ AccessibleTreeNode aNode =
+ AccessibilityTreeModel.createDefaultNode (xNewTopLevelObject, aRoot);
+ aRoot.addChild (aNode);
+ maModel.fireTreeNodesInserted (maModel.createEvent (aRoot, aNode));
+ }
+ }
+
+
+
+
+ /** Remove an existing top level node from the tree.
+ @param xNewTopLevelObject
+ The accessible object to remove.
+ */
+ private void RemoveTopLevelNode (XAccessible xTopLevelObject)
+ {
+ Object aObject = maModel.getRoot();
+ if (aObject instanceof VectorNode && xTopLevelObject != null)
+ {
+ System.out.println ("removing node " + xTopLevelObject);
+ VectorNode aRoot = (VectorNode) aObject;
+ AccessibleTreeNode aNode = maModel.getNode (xTopLevelObject);
+ TreeModelEvent aEvent = maModel.createEvent (aRoot, aNode);
+ maModel.removeChild (aNode);
+ System.out.println (aNode);
+ maModel.fireTreeNodesRemoved (aEvent);
}
+ }
+
+
+
+
+
+ /** This method exists for debugging. It prints a list of all top
+ level windows.
+ */
+ private void ShowAllTopLevelWindows ()
+ {
XExtendedToolkit xToolkit = maOffice.getExtendedToolkit();
if (xToolkit != null)
{
@@ -64,14 +117,65 @@ class TopWindowListener
}
}
}
+
+
+
+
+ // XTopWindowListener
+ public void windowOpened (final com.sun.star.lang.EventObject aEvent) throws RuntimeException
+ {
+ System.out.println ("Top window opened: " + aEvent.Source);
+ if (maModel != null)
+ {
+ XWindow xWindow = (XWindow) UnoRuntime.queryInterface(
+ XWindow.class, aEvent.Source);
+ if (xWindow == null)
+ System.out.println ("event source is no XWindow");
+ else
+ {
+ XAccessible xAccessible = maOffice.getAccessibleObject(xWindow);
+ if (xAccessible == null)
+ System.out.println ("event source is no XAccessible");
+ else
+ AddTopLevelNode (xAccessible);
+ }
+ }
+ }
+
+
+
+
public void windowClosing (final com.sun.star.lang.EventObject aEvent) throws RuntimeException
{
System.out.println ("Top window closing: " + aEvent);
}
+
+
+
+
public void windowClosed (final com.sun.star.lang.EventObject aEvent) throws RuntimeException
{
System.out.println ("Top window closed: " + aEvent);
+ if (maModel != null)
+ {
+ XWindow xWindow = (XWindow) UnoRuntime.queryInterface(
+ XWindow.class, aEvent.Source);
+ if (xWindow == null)
+ System.out.println ("event source is no XWindow");
+ else
+ {
+ XAccessible xAccessible = maOffice.getAccessibleObject(xWindow);
+ if (xAccessible == null)
+ System.out.println ("event source is no XAccessible");
+ else
+ RemoveTopLevelNode (xAccessible);
+ }
+ }
}
+
+
+
+
public void windowMinimized (final com.sun.star.lang.EventObject aEvent) throws RuntimeException
{
System.out.println ("Top window minimized: " + aEvent);