/** * Enable activation of cell editors by keyboard * * @param enable <code>true</code> to enable */ public void setEnableEditorActivationWithKeyboard(boolean enable) { if (enable) { if (keyboardActivationListener == null) { keyboardActivationListener = new KeyListener() { @Override public void keyPressed(KeyEvent e) { ViewerCell cell = getFocusCell(); if (cell != null) { viewer.triggerEditorActivationEvent( new ColumnViewerEditorActivationEvent(cell, e)); } } @Override public void keyReleased(KeyEvent e) {} }; viewer.getControl().addKeyListener(keyboardActivationListener); } } else { if (keyboardActivationListener != null) { viewer.getControl().removeKeyListener(keyboardActivationListener); keyboardActivationListener = null; } } }
@Override public void setFocusCell(Object element, int column) { final ViewerCell oldCell = getFocusCell(); if (oldCell != null && (column == oldCell.getColumnIndex()) && (element == oldCell.getElement())) return; final ColumnViewer viewer = getViewer(); final TableItem item = (TableItem) viewer.findItem(element); if (item == null) return; final ViewerRow row = viewer.getViewerRowFromItem(item); final ViewerCell cell = row.getCell(column); if (cell == null) return; setFocusCell(cell); }
/** * @param event the event triggering the action * @return <code>true</code> if this event should open the editor */ protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) { boolean singleSelect = ((IStructuredSelection) viewer.getSelection()).size() == 1; boolean isLeftMouseSelect = event.eventType == ColumnViewerEditorActivationEvent.MOUSE_CLICK_SELECTION && ((MouseEvent) event.sourceEvent).button == 1; return singleSelect && (isLeftMouseSelect || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC || event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL); }
/** * Create a ViewerLabelProvider for the column at index * * @param labelProvider The labelProvider to convert * @return ViewerLabelProvider */ /* package */ static CellLabelProvider createViewerLabelProvider( ColumnViewer viewer, IBaseLabelProvider labelProvider) { boolean noColumnTreeViewer = viewer instanceof AbstractTreeViewer && viewer.doGetColumnCount() == 0; if (!noColumnTreeViewer && (labelProvider instanceof ITableLabelProvider || labelProvider instanceof ITableColorProvider || labelProvider instanceof ITableFontProvider)) return new TableColumnViewerLabelProvider(labelProvider); if (labelProvider instanceof CellLabelProvider) return (CellLabelProvider) labelProvider; return new WrappedViewerLabelProvider(labelProvider); }
/** @return the cell holding the current focus */ private ViewerCell getFocusCell() { return viewer.getColumnViewerEditor().getFocusCell(); }
/** * Sets the content provider used by this <code>AbstractTableViewer</code>. * * <p>Content providers for abstract table viewers must implement either {@link * IStructuredContentProvider} or {@link ILazyContentProvider}. */ @Override public void setContentProvider(IContentProvider provider) { // the actual check is in assertContentProviderType super.setContentProvider(provider); }
@Override protected void handleDispose(DisposeEvent event) { super.handleDispose(event); virtualManager = null; }
@Override protected void hookControl(Control control) { super.hookControl(control); initializeVirtualManager(getControl().getStyle()); }