Table accessibility. Also fixed many bugs when accessible was attached to a Control but didn't override any values.
diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/accessibility/CTable.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/accessibility/CTable.java
index 5886723..1d39a3a 100644
--- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/accessibility/CTable.java
+++ b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/accessibility/CTable.java
@@ -1885,7 +1885,7 @@
 			if (0 <= index && index < itemsCount) {
 				CTableItem row = items [index];
 				index = e.column;
-				if (0 <= index && index < columns.length) {
+				if (columns.length == 0 || 0 <= index && index < columns.length) {
 					e.accessible = row.getAccessible (accessibleTable, index);
 				}
 			}
@@ -1898,7 +1898,10 @@
 			// TODO: What is a description? How does it differ from name? Should app supply?
 			e.result = "This is the Custom Table's Test Description for column " + e.column;
 		}
-		public void getColumnHeader(AccessibleTableEvent e) {
+//		public void getColumnHeader(AccessibleTableEvent e) {
+//			e.accessible = header.getAccessible();
+//		}
+		public void getColumnHeaderCells(AccessibleTableEvent e) {
 			if (columns.length == 0) {
 				/* The CTable is being used as a list, and there are no headers. */
 				e.accessibles = null;
diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/accessibility/CTable2.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/accessibility/CTable2.java
index baa8fb7..7289bd6 100644
--- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/accessibility/CTable2.java
+++ b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/accessibility/CTable2.java
@@ -939,15 +939,7 @@
 			public void getColumnDescription(AccessibleTableEvent e) {
 			}
 			public void getColumnHeader(AccessibleTableEvent e) {
-				// TODO: Not sure which of these the Mac wants for columns (getColumnHeader* or getColumnHeaderCells)
-				if (columns.length == 0) {
-					/* The CTable2 is being used as a list, and there is no column header. */
-					e.accessible = null;
-				} else {
-					/* A CTable2 column has one header cell. */
-					CTableColumn2 column = columns [columnIndex];
-					e.accessible = column.getAccessible (header.getAccessible());
-				}
+				e.accessible = header.getAccessible();
 			}
 			public void getColumnHeaderCells(AccessibleTableEvent e) {
 				// TODO: Not sure which of these the Mac wants for columns (getColumnHeader* or getColumnHeaderCells)
diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/accessibility/CTableItem.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/accessibility/CTableItem.java
index b04a591..57c53a8 100644
--- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/accessibility/CTableItem.java
+++ b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/accessibility/CTableItem.java
@@ -438,6 +438,10 @@
 					e.childID = ACC.CHILDID_NONE;
 				}
 			}
+			public void getFocus(AccessibleControlEvent e) {
+				e.childID = (parent.focusItem == CTableItem.this && parent.isFocusControl()) ? 
+						ACC.CHILDID_SELF : ACC.CHILDID_NONE;
+			}
 			public void getLocation(AccessibleControlEvent e) {
 				Rectangle location = getBounds(columnIndex);
 				Point pt = parent.toDisplay(location.x, location.y);