xref: /AOO41X/main/toolkit/test/accessibility/AccessibleTableHandler.java (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1*cdf0e10cSrcweir 
2*cdf0e10cSrcweir import com.sun.star.uno.UnoRuntime;
3*cdf0e10cSrcweir import com.sun.star.accessibility.XAccessibleContext;
4*cdf0e10cSrcweir import com.sun.star.accessibility.XAccessibleTable;
5*cdf0e10cSrcweir 
6*cdf0e10cSrcweir 
7*cdf0e10cSrcweir class AccessibleTableHandler extends NodeHandler
8*cdf0e10cSrcweir {
9*cdf0e10cSrcweir     public NodeHandler createHandler (XAccessibleContext xContext)
10*cdf0e10cSrcweir     {
11*cdf0e10cSrcweir         XAccessibleTable xTable =
12*cdf0e10cSrcweir             (XAccessibleTable) UnoRuntime.queryInterface (
13*cdf0e10cSrcweir                 XAccessibleTable.class, xContext);
14*cdf0e10cSrcweir         if (xTable != null)
15*cdf0e10cSrcweir             return new AccessibleTableHandler (xTable);
16*cdf0e10cSrcweir         else
17*cdf0e10cSrcweir             return null;
18*cdf0e10cSrcweir     }
19*cdf0e10cSrcweir 
20*cdf0e10cSrcweir     public AccessibleTableHandler ()
21*cdf0e10cSrcweir     {
22*cdf0e10cSrcweir     }
23*cdf0e10cSrcweir 
24*cdf0e10cSrcweir     public AccessibleTableHandler (XAccessibleTable xTable)
25*cdf0e10cSrcweir     {
26*cdf0e10cSrcweir         if (xTable != null)
27*cdf0e10cSrcweir             maChildList.setSize (4);
28*cdf0e10cSrcweir     }
29*cdf0e10cSrcweir 
30*cdf0e10cSrcweir     protected static XAccessibleTable getTable(Object aObject)
31*cdf0e10cSrcweir     {
32*cdf0e10cSrcweir         return (XAccessibleTable) UnoRuntime.queryInterface (
33*cdf0e10cSrcweir             XAccessibleTable.class, aObject);
34*cdf0e10cSrcweir     }
35*cdf0e10cSrcweir 
36*cdf0e10cSrcweir     public AccessibleTreeNode createChild (AccessibleTreeNode aParent, int nIndex)
37*cdf0e10cSrcweir     {
38*cdf0e10cSrcweir         AccessibleTreeNode aChild = null;
39*cdf0e10cSrcweir         XAccessibleTable xTable = null;
40*cdf0e10cSrcweir         if (aParent instanceof AccTreeNode)
41*cdf0e10cSrcweir             xTable = ((AccTreeNode)aParent).getTable();
42*cdf0e10cSrcweir         try
43*cdf0e10cSrcweir         {
44*cdf0e10cSrcweir             if( xTable != null )
45*cdf0e10cSrcweir             {
46*cdf0e10cSrcweir                 switch( nIndex )
47*cdf0e10cSrcweir                 {
48*cdf0e10cSrcweir                     case 0:
49*cdf0e10cSrcweir                         aChild = new StringNode ("# table rows: " + xTable.getAccessibleRowCount(), aParent);
50*cdf0e10cSrcweir                         break;
51*cdf0e10cSrcweir                     case 1:
52*cdf0e10cSrcweir                         aChild = new StringNode ("# table columns: " + xTable.getAccessibleColumnCount(), aParent);
53*cdf0e10cSrcweir                         break;
54*cdf0e10cSrcweir                     case 2:
55*cdf0e10cSrcweir 						{
56*cdf0e10cSrcweir 							String sText = "selected rows: ";
57*cdf0e10cSrcweir 							int[] aSelected = xTable.getSelectedAccessibleRows();
58*cdf0e10cSrcweir 							for( int i=0; i < aSelected.length; i++ )
59*cdf0e10cSrcweir 							{
60*cdf0e10cSrcweir 								sText += aSelected[i];
61*cdf0e10cSrcweir 								sText += " ";
62*cdf0e10cSrcweir 							}
63*cdf0e10cSrcweir                         	aChild = new StringNode (sText, aParent);
64*cdf0e10cSrcweir 						}
65*cdf0e10cSrcweir                         break;
66*cdf0e10cSrcweir                     case 3:
67*cdf0e10cSrcweir 						{
68*cdf0e10cSrcweir 							String sText = "selected columns: ";
69*cdf0e10cSrcweir 							int[] aSelected = xTable.getSelectedAccessibleColumns();
70*cdf0e10cSrcweir 							for( int i=0; i < aSelected.length; i++ )
71*cdf0e10cSrcweir 							{
72*cdf0e10cSrcweir 								sText += aSelected[i];
73*cdf0e10cSrcweir 								sText += " ";
74*cdf0e10cSrcweir 							}
75*cdf0e10cSrcweir                         	aChild = new StringNode (sText, aParent);
76*cdf0e10cSrcweir 						}
77*cdf0e10cSrcweir                         break;
78*cdf0e10cSrcweir                     default:
79*cdf0e10cSrcweir                         aChild = new StringNode ("unknown child index " + nIndex, aParent);
80*cdf0e10cSrcweir                 }
81*cdf0e10cSrcweir             }
82*cdf0e10cSrcweir         }
83*cdf0e10cSrcweir         catch (Exception e)
84*cdf0e10cSrcweir         {
85*cdf0e10cSrcweir             // Return empty child.
86*cdf0e10cSrcweir         }
87*cdf0e10cSrcweir 
88*cdf0e10cSrcweir         return aChild;
89*cdf0e10cSrcweir     }
90*cdf0e10cSrcweir }
91