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