org.eclipse.jface.viewers.TableViewerEditor Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of org.eclipse.jface Show documentation
Show all versions of org.eclipse.jface Show documentation
This is org.eclipse.jface jar used by Scout SDK
The newest version!
/*******************************************************************************
* Copyright (c) 2007, 2015 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
* Tom Schindl - initial API and implementation
* fixes in bug 198665, 200731
*******************************************************************************/
package org.eclipse.jface.viewers;
import java.util.List;
import org.eclipse.jface.viewers.CellEditor.LayoutData;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.TableEditor;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Item;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
/**
* This is an editor-implementation for {@link Table}
*
* @since 3.3
*
*/
public final class TableViewerEditor extends ColumnViewerEditor {
/**
* This viewer's table editor.
*/
private TableEditor tableEditor;
private SWTFocusCellManager focusCellManager;
/**
* @param viewer
* the viewer the editor is attached to
* @param focusCellManager
* the cell focus manager if one used or null
* @param editorActivationStrategy
* the strategy used to decide about the editor activation
* @param feature
* the feature mask
*/
TableViewerEditor(TableViewer viewer, SWTFocusCellManager focusCellManager,
ColumnViewerEditorActivationStrategy editorActivationStrategy,
int feature) {
super(viewer, editorActivationStrategy, feature);
tableEditor = new TableEditor(viewer.getTable());
this.focusCellManager = focusCellManager;
}
/**
* Create a customized editor with focusable cells
*
* @param viewer
* the viewer the editor is created for
* @param focusCellManager
* the cell focus manager if one needed else null
* @param editorActivationStrategy
* activation strategy to control if an editor activated
* @param feature
* bit mask controlling the editor
*
* - {@link ColumnViewerEditor#DEFAULT}
* - {@link ColumnViewerEditor#TABBING_CYCLE_IN_ROW}
* - {@link ColumnViewerEditor#TABBING_HORIZONTAL}
* - {@link ColumnViewerEditor#TABBING_MOVE_TO_ROW_NEIGHBOR}
* - {@link ColumnViewerEditor#TABBING_VERTICAL}
*
* @see #create(TableViewer, ColumnViewerEditorActivationStrategy, int)
*/
public static void create(TableViewer viewer,
SWTFocusCellManager focusCellManager,
ColumnViewerEditorActivationStrategy editorActivationStrategy,
int feature) {
TableViewerEditor editor = new TableViewerEditor(viewer,
focusCellManager, editorActivationStrategy, feature);
viewer.setColumnViewerEditor(editor);
if (focusCellManager != null) {
focusCellManager.init();
}
}
/**
* Create a customized editor whose activation process is customized
*
* @param viewer
* the viewer the editor is created for
* @param editorActivationStrategy
* activation strategy to control if an editor activated
* @param feature
* bit mask controlling the editor
*
* - {@link ColumnViewerEditor#DEFAULT}
* - {@link ColumnViewerEditor#TABBING_CYCLE_IN_ROW}
* - {@link ColumnViewerEditor#TABBING_HORIZONTAL}
* - {@link ColumnViewerEditor#TABBING_MOVE_TO_ROW_NEIGHBOR}
* - {@link ColumnViewerEditor#TABBING_VERTICAL}
*
*/
public static void create(TableViewer viewer,
ColumnViewerEditorActivationStrategy editorActivationStrategy,
int feature) {
create(viewer, null, editorActivationStrategy, feature);
}
@Override
protected void setEditor(Control w, Item item, int columnNumber) {
tableEditor.setEditor(w, (TableItem) item, columnNumber);
}
@Override
protected void setLayoutData(LayoutData layoutData) {
tableEditor.grabHorizontal = layoutData.grabHorizontal;
tableEditor.horizontalAlignment = layoutData.horizontalAlignment;
tableEditor.minimumWidth = layoutData.minimumWidth;
tableEditor.verticalAlignment = layoutData.verticalAlignment;
if (layoutData.minimumHeight != SWT.DEFAULT) {
tableEditor.minimumHeight = layoutData.minimumHeight;
}
}
@Override
public ViewerCell getFocusCell() {
if (focusCellManager != null) {
return focusCellManager.getFocusCell();
}
return super.getFocusCell();
}
@Override
protected void updateFocusCell(ViewerCell focusCell,
ColumnViewerEditorActivationEvent event) {
// Update the focus cell when we activated the editor with these 2
// events
if (event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC
|| event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL) {
List l = getViewer().getSelectionFromWidget();
if (!l.contains(focusCell.getElement())) {
getViewer().setSelection(
new StructuredSelection(focusCell.getElement()), true);
}
// Set the focus cell after the selection is updated because else
// the cell is not scrolled into view
if (focusCellManager != null) {
focusCellManager.setFocusCell(focusCell);
}
}
}
}