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 import com.sun.star.accessibility.XAccessible; 27cdf0e10cSrcweir 28cdf0e10cSrcweir 29cdf0e10cSrcweir class AccessibleCellHandler extends NodeHandler 30cdf0e10cSrcweir { createHandler(XAccessibleContext xContext)31cdf0e10cSrcweir public NodeHandler createHandler (XAccessibleContext xContext) 32cdf0e10cSrcweir { 33cdf0e10cSrcweir AccessibleCellHandler aCellHandler = null; 34cdf0e10cSrcweir if (xContext != null) 35cdf0e10cSrcweir { 36cdf0e10cSrcweir XAccessible xParent = xContext.getAccessibleParent(); 37cdf0e10cSrcweir if (xParent != null) 38cdf0e10cSrcweir { 39cdf0e10cSrcweir XAccessibleTable xTable = 40cdf0e10cSrcweir (XAccessibleTable) UnoRuntime.queryInterface ( 41cdf0e10cSrcweir XAccessibleTable.class, xParent.getAccessibleContext()); 42cdf0e10cSrcweir if (xTable != null) 43cdf0e10cSrcweir aCellHandler = new AccessibleCellHandler (xTable); 44cdf0e10cSrcweir } 45cdf0e10cSrcweir } 46cdf0e10cSrcweir return aCellHandler; 47cdf0e10cSrcweir 48cdf0e10cSrcweir } 49cdf0e10cSrcweir AccessibleCellHandler()50cdf0e10cSrcweir public AccessibleCellHandler () 51cdf0e10cSrcweir { 52cdf0e10cSrcweir } 53cdf0e10cSrcweir AccessibleCellHandler(XAccessibleTable xTable)54cdf0e10cSrcweir public AccessibleCellHandler (XAccessibleTable xTable) 55cdf0e10cSrcweir { 56cdf0e10cSrcweir if (xTable != null) 57cdf0e10cSrcweir maChildList.setSize (8); 58cdf0e10cSrcweir } 59cdf0e10cSrcweir getTable(Object aObject)60cdf0e10cSrcweir protected static XAccessibleTable getTable(Object aObject) 61cdf0e10cSrcweir { 62cdf0e10cSrcweir return (XAccessibleTable) UnoRuntime.queryInterface ( 63cdf0e10cSrcweir XAccessibleTable.class, aObject); 64cdf0e10cSrcweir } 65cdf0e10cSrcweir createChild(AccessibleTreeNode aParent, int nIndex)66cdf0e10cSrcweir public AccessibleTreeNode createChild (AccessibleTreeNode aParent, int nIndex) 67cdf0e10cSrcweir { 68cdf0e10cSrcweir AccessibleTreeNode aChild = null; 69cdf0e10cSrcweir XAccessibleTable xTable = null; 70cdf0e10cSrcweir XAccessibleContext xContext = null; 71cdf0e10cSrcweir AccessibleTreeNode aGrandParent = aParent.getParent(); 72cdf0e10cSrcweir if (aGrandParent instanceof AccTreeNode) 73cdf0e10cSrcweir { 74cdf0e10cSrcweir xTable = ((AccTreeNode)aGrandParent).getTable(); 75cdf0e10cSrcweir xContext = ((AccTreeNode)aGrandParent).getContext(); 76cdf0e10cSrcweir } 77cdf0e10cSrcweir if (aParent instanceof AccTreeNode) 78cdf0e10cSrcweir { 79cdf0e10cSrcweir xContext = ((AccTreeNode)aParent).getContext(); 80cdf0e10cSrcweir } 81cdf0e10cSrcweir try 82cdf0e10cSrcweir { 83cdf0e10cSrcweir if( xTable != null && xContext != null ) 84cdf0e10cSrcweir { 85cdf0e10cSrcweir switch( nIndex ) 86cdf0e10cSrcweir { 87cdf0e10cSrcweir case 0: 88cdf0e10cSrcweir { 89cdf0e10cSrcweir int nChild = xContext.getAccessibleIndexInParent(); 90cdf0e10cSrcweir int nRow = xTable.getAccessibleRow( nChild ); 91cdf0e10cSrcweir 92cdf0e10cSrcweir aChild = new StringNode ("# table row: " + nRow, aParent); 93cdf0e10cSrcweir } 94cdf0e10cSrcweir break; 95cdf0e10cSrcweir case 1: 96cdf0e10cSrcweir { 97cdf0e10cSrcweir int nChild = xContext.getAccessibleIndexInParent(); 98cdf0e10cSrcweir int nCol = xTable.getAccessibleColumn( nChild ); 99cdf0e10cSrcweir 100cdf0e10cSrcweir aChild = new StringNode ("# table column: " + nCol, aParent); 101cdf0e10cSrcweir } 102cdf0e10cSrcweir break; 103cdf0e10cSrcweir case 2: 104cdf0e10cSrcweir { 105cdf0e10cSrcweir int nChild = xContext.getAccessibleIndexInParent(); 106cdf0e10cSrcweir int nRow = xTable.getAccessibleRow( nChild ); 107cdf0e10cSrcweir int nCol = xTable.getAccessibleColumn( nChild ); 108cdf0e10cSrcweir int nExt = xTable.getAccessibleRowExtentAt( nRow, nCol ); 109cdf0e10cSrcweir 110cdf0e10cSrcweir aChild = new StringNode ("# table row extend: " + nExt, aParent); 111cdf0e10cSrcweir } 112cdf0e10cSrcweir break; 113cdf0e10cSrcweir case 3: 114cdf0e10cSrcweir { 115cdf0e10cSrcweir int nChild = xContext.getAccessibleIndexInParent(); 116cdf0e10cSrcweir int nRow = xTable.getAccessibleRow( nChild ); 117cdf0e10cSrcweir int nCol = xTable.getAccessibleColumn( nChild ); 118cdf0e10cSrcweir int nExt = xTable.getAccessibleColumnExtentAt( nRow, nCol ); 119cdf0e10cSrcweir 120cdf0e10cSrcweir aChild = new StringNode ("# table column extend: " + nExt, aParent); 121cdf0e10cSrcweir } 122cdf0e10cSrcweir break; 123cdf0e10cSrcweir case 4: 124cdf0e10cSrcweir { 125cdf0e10cSrcweir int nChild = xContext.getAccessibleIndexInParent(); 126cdf0e10cSrcweir int nRow = xTable.getAccessibleRow( nChild ); 127cdf0e10cSrcweir int nCol = xTable.getAccessibleColumn( nChild ); 128cdf0e10cSrcweir XAccessible xChild = 129cdf0e10cSrcweir xTable.getAccessibleCellAt( nRow, nCol ); 130cdf0e10cSrcweir 131cdf0e10cSrcweir aChild = new StringNode ("# cell name retrieved from table: " + xChild.getAccessibleContext().getAccessibleName(), aParent); 132cdf0e10cSrcweir } 133cdf0e10cSrcweir break; 134cdf0e10cSrcweir case 5: 135cdf0e10cSrcweir { 136cdf0e10cSrcweir int nChild = xContext.getAccessibleIndexInParent(); 137cdf0e10cSrcweir int nRow = xTable.getAccessibleRow( nChild ); 138cdf0e10cSrcweir int nCol = xTable.getAccessibleColumn( nChild ); 139cdf0e10cSrcweir boolean bSelected = 140cdf0e10cSrcweir xTable.isAccessibleSelected( nRow, nCol ); 141cdf0e10cSrcweir 142cdf0e10cSrcweir aChild = new StringNode ("cell is selected: " + bSelected, aParent); 143cdf0e10cSrcweir } 144cdf0e10cSrcweir break; 145cdf0e10cSrcweir case 6: 146cdf0e10cSrcweir { 147cdf0e10cSrcweir int nChild = xContext.getAccessibleIndexInParent(); 148cdf0e10cSrcweir int nRow = xTable.getAccessibleRow( nChild ); 149cdf0e10cSrcweir boolean bSelected = 150cdf0e10cSrcweir xTable.isAccessibleRowSelected( nRow ); 151cdf0e10cSrcweir 152cdf0e10cSrcweir aChild = new StringNode ("table row is selected: " + bSelected, aParent); 153cdf0e10cSrcweir } 154cdf0e10cSrcweir break; 155cdf0e10cSrcweir case 7: 156cdf0e10cSrcweir { 157cdf0e10cSrcweir int nChild = xContext.getAccessibleIndexInParent(); 158cdf0e10cSrcweir int nCol = xTable.getAccessibleColumn( nChild ); 159cdf0e10cSrcweir boolean bSelected = 160cdf0e10cSrcweir xTable.isAccessibleColumnSelected( nCol ); 161cdf0e10cSrcweir 162cdf0e10cSrcweir aChild = new StringNode ("table column is selected: " + bSelected, aParent); 163cdf0e10cSrcweir } 164cdf0e10cSrcweir break; 165cdf0e10cSrcweir default: 166cdf0e10cSrcweir aChild = new StringNode ("unknown child index " + nIndex, aParent); 167cdf0e10cSrcweir } 168cdf0e10cSrcweir } 169cdf0e10cSrcweir } 170cdf0e10cSrcweir catch (Exception e) 171cdf0e10cSrcweir { 172cdf0e10cSrcweir // Return empty child. 173cdf0e10cSrcweir } 174cdf0e10cSrcweir 175cdf0e10cSrcweir return aChild; 176cdf0e10cSrcweir } 177cdf0e10cSrcweir } 178