Bug 130854 [CellEditors] JFace TableViewer ignoring ICellEditor validator state
Using a validator on a TextCellEditor and entering invalid text into a cell results in ICellModifier.modify() being called with a null value, rather than an error being reported and the value being discarded. TableEditorImpl.saveEditorValue() *does actually check for editor validity*, but in the case of invalid values does nothing but no-op with comment "///Do what ???" and then calls cellEditor.getValue() which, for TextCellEditor's anyway, always returns null if its validator has invalidated the current value.
bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerEditor.java
* Subclasses may overwrite to implement their custom logic to edit the next
	 * cell
	 * </p>
	 *
	 * @param columnIndex
	 *            the index of the current column
	 * @param row
	 *            the current row - may only be used for the duration of this
	 *            method call
	 * @param event
	 *            the traverse event
	 */
	protected void processTraverseEvent(int columnIndex, ViewerRow row,
			TraverseEvent event) {
		ViewerCell cell2edit = null;
		if (event.detail == SWT.TRAVERSE_TAB_PREVIOUS) {
			event.doit = false;
			if ((event.stateMask & SWT.CTRL) == SWT.CTRL
					&& (feature & TABBING_VERTICAL) == TABBING_VERTICAL) {
				cell2edit = searchCellAboveBelow(row, viewer, columnIndex, true);
			} else if ((feature & TABBING_HORIZONTAL) == TABBING_HORIZONTAL) {
				cell2edit = searchPreviousCell(row, row.getCell(columnIndex),
						row.getCell(columnIndex), viewer);
			}
		} else if (event.detail == SWT.TRAVERSE_TAB_NEXT) {
			event.doit = false;
			if ((event.stateMask & SWT.CTRL) == SWT.CTRL
					&& (feature & TABBING_VERTICAL) == TABBING_VERTICAL) {
				cell2edit = searchCellAboveBelow(row, viewer, columnIndex,
						false);