Bug 167325 [Viewers]ViewerCell and ViewerRow should provide API to find neighbors
This is a very important feature if we want provide keyboard features in tables and trees and the current EditingSupport has TODO items to make this work in a clear way. I'd propose the following new API functions for ViewerCell: - ViewerCell#getCellLeft() - ViewerCell#getCellRight() - ViewerCell#getCellTop() - ViewerCell#getCellBottom() - ViewerRow#getRowTop() - ViewerRow#getRowBottom() What I'm not 100% sure is if we should provide functions to navigate Tree-Structures: - ViewerCell#getCellTop(boolean samelevel) - ViewerCell#getCellBottom(boolean samelevel) - ViewerRow#getRowTop(boolean samelevel) - ViewerRow#getRowBottom(boolean samelevel)
bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/EditingSupport.java
&& (getTabingStyle() & TABING_VERTICAL) == TABING_VERTICAL) {
				cell2edit = searchCellAboveBelow(row, viewer, columnIndex,
						false);
			} else if ((getTabingStyle() & TABING_HORIZONTAL) == TABING_HORIZONTAL) {
				cell2edit = searchNextCell(row, viewer, columnIndex,
						columnIndex);
			}
		}
		if (cell2edit != null) {
			viewer.editElement(cell2edit.getElement(), cell2edit
					.getColumnIndex());
		}
	}
	private ViewerCell searchCellAboveBelow(ViewerRow row, ColumnViewer viewer,
			int columnIndex, boolean above) {
		ViewerCell rv = null;
		ViewerRow newRow = null;
		if (above) {
			newRow = getRowAbove(row, viewer);
		} else {
			newRow = getRowBelow(row, viewer);
		}
		if (newRow != null) {
			ViewerColumn column = viewer.getViewerColumn(columnIndex);
			if (column != null
					&& column.getEditingSupport().canEdit(
							newRow.getItem().getData())) {
				rv = newRow.getCell(columnIndex);
			} else {
				rv = searchCellAboveBelow(newRow, viewer, columnIndex, above);