public void getState(AccessibleControlEvent e) {
			int state = ACC.STATE_NORMAL;
			int childID = e.childID;
			if (childID == ACC.CHILDID_SELF) { // table
				state |= ACC.STATE_FOCUSABLE;
				if (isFocusControl()) {
					state |= ACC.STATE_FOCUSED;
				}
			} else if (columns.length > 0 && 0 <= childID && childID < columns.length) { // header cell
				/* CTable does not support header cell focus or selection. */
				state |= ACC.STATE_SIZEABLE;
			} else { // item cell
				int columnCount = columns.length > 0 ? columns.length : 1;
				if (columns.length > 0) childID -= columnCount;
				if (0 <= childID && childID < itemsCount * columnCount) {
					/* CTable does not support cell selection (only row selection). */
					int rowIndex = childID / columnCount;
					state |= ACC.STATE_SELECTABLE;
					if (isFocusControl()) {
						state |= ACC.STATE_FOCUSABLE;
					}
					if (items[rowIndex].isSelected()) {
						state |= ACC.STATE_SELECTED;
						if (isFocusControl()) {
							state |= ACC.STATE_FOCUSED;
						}
					}
				}
			}
			e.detail = state;
		}