Source:
public Snippet052DouleClickCellEditor(Shell shell) { int style = SWT.BORDER | SWT.FULL_SELECTION; final TableViewer viewer = new TableViewer(shell, style); viewer.setContentProvider(new MyContentProvider()); viewer.setCellEditors(new CellEditor[] { new TextCellEditor(viewer.getTable()), new TextCellEditor(viewer.getTable()), new TextCellEditor(viewer.getTable()) }); viewer.setCellModifier(new ICellModifier() { @Override public boolean canModify(Object element, String property) { return true; } @Override public Object getValue(Object element, String property) { return "Column " + property + " => " + element.toString(); } @Override public void modify(Object element, String property, Object value) { } }); viewer.setColumnProperties(new String[] { "1", "2", "3" }); ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy( viewer) { @Override protected boolean isEditorActivationEvent( ColumnViewerEditorActivationEvent event) { return event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL || event.eventType == ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC; } }; int feature = ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION; TableViewerEditor.create(viewer, actSupport, feature); String[] labels = { "Column 1", "Column 2", "Column 3" }; for (String label : labels) { createColumnFor(viewer, label); } MyModel[] model = createModel(); viewer.setInput(model); viewer.getTable().setLinesVisible(true); viewer.getTable().setHeaderVisible(true); }

Target:
public Snippet052DouleClickCellEditor(Shell shell) { final TableViewer viewer = new TableViewer(shell, SWT.BORDER | SWT.FULL_SELECTION); viewer.setContentProvider(ArrayContentProvider.getInstance()); viewer.setCellEditors(new CellEditor[] { new TextCellEditor(viewer.getTable()), new TextCellEditor(viewer.getTable()), new TextCellEditor(viewer.getTable()) }); viewer.setCellModifier(new ICellModifier() { @Override public boolean canModify(Object element, String property) { return true; } @Override public Object getValue(Object element, String property) { return "Column " + property + " => " + element.toString(); } @Override public void modify(Object element, String property, Object value) { } }); viewer.setColumnProperties(new String[] { "1", "2", "3" }); ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy( viewer) { @Override protected boolean isEditorActivationEvent( ColumnViewerEditorActivationEvent event) { return event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL || event.eventType == ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC; } }; int feature = ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION; TableViewerEditor.create(viewer, actSupport, feature); String[] labels = { "Column 1", "Column 2", "Column 3" }; for (String label : labels) { createColumnFor(viewer, label); } MyModel[] model = createModel(); viewer.setInput(model); viewer.getTable().setLinesVisible(true); viewer.getTable().setHeaderVisible(true); }