diff options
author | Andre Fischer <af@openoffice.org> | 2003-03-13 16:14:28 +0000 |
---|---|---|
committer | Andre Fischer <af@openoffice.org> | 2003-03-13 16:14:28 +0000 |
commit | 556fa073dd173e663474fb02c93bbd50abcc25ae (patch) | |
tree | e2fdc9457fc7e4633fb23be7d5598a3f0f3161e9 /toolkit/test/accessibility/NodeFactory.java | |
parent | 0a20d897ff8a2374f5015061c7219063eb5cd947 (diff) |
Major restructuring.
Diffstat (limited to 'toolkit/test/accessibility/NodeFactory.java')
-rw-r--r-- | toolkit/test/accessibility/NodeFactory.java | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/toolkit/test/accessibility/NodeFactory.java b/toolkit/test/accessibility/NodeFactory.java new file mode 100644 index 000000000000..3e0667da7282 --- /dev/null +++ b/toolkit/test/accessibility/NodeFactory.java @@ -0,0 +1,145 @@ +import drafts.com.sun.star.accessibility.*; +import java.util.Vector; + +/** This singleton class creates nodes for given accessible objects. +*/ +class NodeFactory +{ + public synchronized static NodeFactory Instance () + { + if (maInstance == null) + { + maInstance = new NodeFactory(); + } + return maInstance; + } + + private NodeFactory () + { + mbVerbose = false; + + maContextHandler = new AccessibleContextHandler(); + maTextHandler = new AccessibleTextHandler(); + maEditableTextHandler = new AccessibleEditableTextHandler(); + maComponentHandler = new AccessibleComponentHandler(); + maExtendedComponentHandler = new AccessibleExtendedComponentHandler(); + maActionHandler = new AccessibleActionHandler(); + maImageHandler = new AccessibleImageHandler(); + maTableHandler = new AccessibleTableHandler(); + maCellHandler = new AccessibleCellHandler(); + maHypertextHandler = new AccessibleHypertextHandler(); + maHyperlinkHandler = new AccessibleHyperlinkHandler(); + maSelectionHandler = new AccessibleSelectionHandler(); + maRelationHandler = new AccessibleRelationHandler(); + maTreeHandler = new AccessibleTreeHandler(); + maUNOHandler = new AccessibleUNOHandler(); + } + + + /** add default handlers based on the supported interfaces */ + private void addDefaultHandlers (AccTreeNode aNode, XAccessibleContext xContext) + { + if (false) + { + // Slow but complete version: try each handler type separately. + aNode.addHandler (maContextHandler.createHandler (xContext)); + aNode.addHandler (maTextHandler.createHandler (xContext)); + aNode.addHandler (maEditableTextHandler.createHandler (xContext)); + aNode.addHandler (maComponentHandler.createHandler (xContext)); + aNode.addHandler (maExtendedComponentHandler.createHandler (xContext)); + aNode.addHandler (maActionHandler.createHandler (xContext)); + aNode.addHandler (maImageHandler.createHandler (xContext)); + aNode.addHandler (maTableHandler.createHandler (xContext)); + aNode.addHandler (maCellHandler.createHandler (xContext)); + aNode.addHandler (maHypertextHandler.createHandler (xContext)); + aNode.addHandler (maHyperlinkHandler.createHandler (xContext)); + aNode.addHandler (maSelectionHandler.createHandler (xContext)); + aNode.addHandler (maRelationHandler.createHandler (xContext)); + aNode.addHandler (maUNOHandler.createHandler (xContext)); + aNode.addHandler (maTreeHandler.createHandler (xContext)); + } + else + { + // Exploit dependencies between interfaces. + NodeHandler aHandler; + aNode.addHandler (maContextHandler.createHandler (xContext)); + + aHandler = maTextHandler.createHandler (xContext); + if (aHandler != null) + { + aNode.addHandler (aHandler); + aNode.addHandler (maEditableTextHandler.createHandler (xContext)); + aNode.addHandler (maHypertextHandler.createHandler (xContext)); + aNode.addHandler (maHyperlinkHandler.createHandler (xContext)); + } + aHandler = maComponentHandler.createHandler (xContext); + if (aHandler != null) + { + aNode.addHandler (aHandler); + aNode.addHandler (maExtendedComponentHandler.createHandler (xContext)); + } + aNode.addHandler (maActionHandler.createHandler (xContext)); + aNode.addHandler (maImageHandler.createHandler (xContext)); + aNode.addHandler (maTableHandler.createHandler (xContext)); + aNode.addHandler (maRelationHandler.createHandler (xContext)); + aNode.addHandler (maCellHandler.createHandler (xContext)); + aNode.addHandler (maSelectionHandler.createHandler (xContext)); + aNode.addHandler (maUNOHandler.createHandler (xContext)); + aNode.addHandler (maTreeHandler.createHandler (xContext)); + } + } + + /** create a node with the default handlers */ + public AccTreeNode createDefaultNode (XAccessible xAccessible, AccessibleTreeNode aParent) + { + // default: aObject + aDisplay + String sDisplay; + + // if we are accessible, we use the context + name instead + XAccessibleContext xContext = null; + if (xAccessible != null) + xContext = xAccessible.getAccessibleContext(); + if (xContext != null) + { + sDisplay = xContext.getAccessibleName(); + if (sDisplay.length()==0) + { + sDisplay = "<no name> Role: " + + NameProvider.getRoleName ( + xContext.getAccessibleRole()); + } + } + else + sDisplay = new String ("not accessible"); + + + // create node, and add default handlers + AccTreeNode aNode = new AccTreeNode (xAccessible, xContext, sDisplay, aParent); + addDefaultHandlers (aNode, xContext); + + if (aNode == null) + System.out.println ("createDefaultNode == null"); + return aNode; + } + + private static NodeFactory maInstance = null; + + private boolean mbVerbose; + + // default handlers + private NodeHandler maContextHandler = new AccessibleContextHandler(); + private NodeHandler maTextHandler = new AccessibleTextHandler(); + private NodeHandler maEditableTextHandler = new AccessibleEditableTextHandler(); + private NodeHandler maComponentHandler = new AccessibleComponentHandler(); + private NodeHandler maExtendedComponentHandler = new AccessibleExtendedComponentHandler(); + private NodeHandler maActionHandler = new AccessibleActionHandler(); + private NodeHandler maImageHandler = new AccessibleImageHandler(); + private NodeHandler maTableHandler = new AccessibleTableHandler(); + private NodeHandler maCellHandler = new AccessibleCellHandler(); + private NodeHandler maHypertextHandler = new AccessibleHypertextHandler(); + private NodeHandler maHyperlinkHandler = new AccessibleHyperlinkHandler(); + private NodeHandler maSelectionHandler = new AccessibleSelectionHandler(); + private NodeHandler maRelationHandler = new AccessibleRelationHandler(); + private NodeHandler maTreeHandler = new AccessibleTreeHandler(); + private NodeHandler maUNOHandler = new AccessibleUNOHandler(); +} |