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); } }