package com.topsun.posclient.common.ui.utils;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.ColumnViewerEditor;
import org.eclipse.jface.viewers.ColumnViewerEditorActivationEvent;
import org.eclipse.jface.viewers.ColumnViewerEditorActivationStrategy;
import org.eclipse.jface.viewers.FocusCellOwnerDrawHighlighter;
import org.eclipse.jface.viewers.ICellEditorListener;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerEditor;
import org.eclipse.jface.viewers.TableViewerFocusCellManager;
import org.eclipse.jface.viewers.ViewerCell;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Table;
import com.topsun.posclient.common.core.keyboard.SoftKeyUtil;
public class TableUtils {
public static final int TABLE_HEIGHT = 30;
public static void setTabelHeight(Table table){
table.addListener(SWT.MeasureItem, new Listener() {
public void handleEvent(Event event) {
event.height =TABLE_HEIGHT;
}
});
}
public static void addCellEditSupport(CellEditor cellEditor){
cellEditor.addListener(new ICellEditorListener() {
@Override
public void editorValueChanged(boolean oldValidState, boolean newValidState) {
}
@Override
public void cancelEditor() {
}
@Override
public void applyEditorValue() {
SoftKeyUtil.disposeInGrid();
}
});
}
public static void addTableEditSupport(TableViewer tableViewer,final int[] enableCloums){
final TableViewerFocusCellManager mgr = new
TableViewerFocusCellManager(tableViewer, new
FocusCellOwnerDrawHighlighter(tableViewer));
final ColumnViewerEditorActivationStrategy actSupport = new
ColumnViewerEditorActivationStrategy(tableViewer) {
@Override
protected boolean isEditorActivationEvent
(ColumnViewerEditorActivationEvent event) {
ViewerCell cell = (ViewerCell)event.getSource();
int index = cell.getColumnIndex();
for (int i : enableCloums) {
if(index == i){
SoftKeyUtil.showInGrid();
break;
}
}
return event.eventType ==
ColumnViewerEditorActivationEvent.TRAVERSAL
|| event.eventType ==
ColumnViewerEditorActivationEvent.MOUSE_CLICK_SELECTION
|| event.eventType ==
ColumnViewerEditorActivationEvent.KEY_PRESSED
&& (event.keyCode == SWT.CR || event.character == ' ')
|| event.eventType ==
ColumnViewerEditorActivationEvent.PROGRAMMATIC;
}
};
TableViewerEditor.create(tableViewer, mgr, actSupport,
ColumnViewerEditor.TABBING_HORIZONTAL
| ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR |
ColumnViewerEditor.TABBING_VERTICAL
| ColumnViewerEditor.KEYBOARD_ACTIVATION);
}
}