1*1b0aaa91SAndrew Rist /**************************************************************
2*1b0aaa91SAndrew Rist  *
3*1b0aaa91SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*1b0aaa91SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*1b0aaa91SAndrew Rist  * distributed with this work for additional information
6*1b0aaa91SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*1b0aaa91SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*1b0aaa91SAndrew Rist  * "License"); you may not use this file except in compliance
9*1b0aaa91SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*1b0aaa91SAndrew Rist  *
11*1b0aaa91SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*1b0aaa91SAndrew Rist  *
13*1b0aaa91SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*1b0aaa91SAndrew Rist  * software distributed under the License is distributed on an
15*1b0aaa91SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*1b0aaa91SAndrew Rist  * KIND, either express or implied.  See the License for the
17*1b0aaa91SAndrew Rist  * specific language governing permissions and limitations
18*1b0aaa91SAndrew Rist  * under the License.
19*1b0aaa91SAndrew Rist  *
20*1b0aaa91SAndrew Rist  *************************************************************/
21*1b0aaa91SAndrew Rist 
22cdf0e10cSrcweir 
23cdf0e10cSrcweir import com.sun.star.uno.UnoRuntime;
24cdf0e10cSrcweir import com.sun.star.accessibility.XAccessibleContext;
25cdf0e10cSrcweir import com.sun.star.accessibility.XAccessibleTable;
26cdf0e10cSrcweir 
27cdf0e10cSrcweir 
28cdf0e10cSrcweir class AccessibleTableHandler extends NodeHandler
29cdf0e10cSrcweir {
createHandler(XAccessibleContext xContext)30cdf0e10cSrcweir     public NodeHandler createHandler (XAccessibleContext xContext)
31cdf0e10cSrcweir     {
32cdf0e10cSrcweir         XAccessibleTable xTable =
33cdf0e10cSrcweir             (XAccessibleTable) UnoRuntime.queryInterface (
34cdf0e10cSrcweir                 XAccessibleTable.class, xContext);
35cdf0e10cSrcweir         if (xTable != null)
36cdf0e10cSrcweir             return new AccessibleTableHandler (xTable);
37cdf0e10cSrcweir         else
38cdf0e10cSrcweir             return null;
39cdf0e10cSrcweir     }
40cdf0e10cSrcweir 
AccessibleTableHandler()41cdf0e10cSrcweir     public AccessibleTableHandler ()
42cdf0e10cSrcweir     {
43cdf0e10cSrcweir     }
44cdf0e10cSrcweir 
AccessibleTableHandler(XAccessibleTable xTable)45cdf0e10cSrcweir     public AccessibleTableHandler (XAccessibleTable xTable)
46cdf0e10cSrcweir     {
47cdf0e10cSrcweir         if (xTable != null)
48cdf0e10cSrcweir             maChildList.setSize (4);
49cdf0e10cSrcweir     }
50cdf0e10cSrcweir 
getTable(Object aObject)51cdf0e10cSrcweir     protected static XAccessibleTable getTable(Object aObject)
52cdf0e10cSrcweir     {
53cdf0e10cSrcweir         return (XAccessibleTable) UnoRuntime.queryInterface (
54cdf0e10cSrcweir             XAccessibleTable.class, aObject);
55cdf0e10cSrcweir     }
56cdf0e10cSrcweir 
createChild(AccessibleTreeNode aParent, int nIndex)57cdf0e10cSrcweir     public AccessibleTreeNode createChild (AccessibleTreeNode aParent, int nIndex)
58cdf0e10cSrcweir     {
59cdf0e10cSrcweir         AccessibleTreeNode aChild = null;
60cdf0e10cSrcweir         XAccessibleTable xTable = null;
61cdf0e10cSrcweir         if (aParent instanceof AccTreeNode)
62cdf0e10cSrcweir             xTable = ((AccTreeNode)aParent).getTable();
63cdf0e10cSrcweir         try
64cdf0e10cSrcweir         {
65cdf0e10cSrcweir             if( xTable != null )
66cdf0e10cSrcweir             {
67cdf0e10cSrcweir                 switch( nIndex )
68cdf0e10cSrcweir                 {
69cdf0e10cSrcweir                     case 0:
70cdf0e10cSrcweir                         aChild = new StringNode ("# table rows: " + xTable.getAccessibleRowCount(), aParent);
71cdf0e10cSrcweir                         break;
72cdf0e10cSrcweir                     case 1:
73cdf0e10cSrcweir                         aChild = new StringNode ("# table columns: " + xTable.getAccessibleColumnCount(), aParent);
74cdf0e10cSrcweir                         break;
75cdf0e10cSrcweir                     case 2:
76cdf0e10cSrcweir 						{
77cdf0e10cSrcweir 							String sText = "selected rows: ";
78cdf0e10cSrcweir 							int[] aSelected = xTable.getSelectedAccessibleRows();
79cdf0e10cSrcweir 							for( int i=0; i < aSelected.length; i++ )
80cdf0e10cSrcweir 							{
81cdf0e10cSrcweir 								sText += aSelected[i];
82cdf0e10cSrcweir 								sText += " ";
83cdf0e10cSrcweir 							}
84cdf0e10cSrcweir                         	aChild = new StringNode (sText, aParent);
85cdf0e10cSrcweir 						}
86cdf0e10cSrcweir                         break;
87cdf0e10cSrcweir                     case 3:
88cdf0e10cSrcweir 						{
89cdf0e10cSrcweir 							String sText = "selected columns: ";
90cdf0e10cSrcweir 							int[] aSelected = xTable.getSelectedAccessibleColumns();
91cdf0e10cSrcweir 							for( int i=0; i < aSelected.length; i++ )
92cdf0e10cSrcweir 							{
93cdf0e10cSrcweir 								sText += aSelected[i];
94cdf0e10cSrcweir 								sText += " ";
95cdf0e10cSrcweir 							}
96cdf0e10cSrcweir                         	aChild = new StringNode (sText, aParent);
97cdf0e10cSrcweir 						}
98cdf0e10cSrcweir                         break;
99cdf0e10cSrcweir                     default:
100cdf0e10cSrcweir                         aChild = new StringNode ("unknown child index " + nIndex, aParent);
101cdf0e10cSrcweir                 }
102cdf0e10cSrcweir             }
103cdf0e10cSrcweir         }
104cdf0e10cSrcweir         catch (Exception e)
105cdf0e10cSrcweir         {
106cdf0e10cSrcweir             // Return empty child.
107cdf0e10cSrcweir         }
108cdf0e10cSrcweir 
109cdf0e10cSrcweir         return aChild;
110cdf0e10cSrcweir     }
111cdf0e10cSrcweir }
112