package com.eas.grid.selection;
import com.eas.grid.columns.CheckServiceColumn;
import com.google.gwt.dom.client.BrowserEvents;
import com.google.gwt.dom.client.NativeEvent;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.view.client.CellPreviewEvent;
import com.google.gwt.view.client.DefaultSelectionEventManager.EventTranslator;
import com.google.gwt.view.client.DefaultSelectionEventManager.SelectAction;
public class CheckBoxesEventTranslator<T> implements EventTranslator<T> {
public CheckBoxesEventTranslator() {
super();
}
public boolean clearCurrentSelection(CellPreviewEvent<T> event) {
NativeEvent ne = event.getNativeEvent();
boolean addToSelectionKey = ne.getCtrlKey() || ne.getMetaKey() || ne.getShiftKey();
return !checkBoxClick(event) && !addToSelectionKey;
}
public SelectAction translateSelectionEvent(CellPreviewEvent<T> event) {
return checkBoxClick(event) ? SelectAction.TOGGLE : SelectAction.DEFAULT;
}
protected boolean checkBoxClick(CellPreviewEvent<T> event) {
NativeEvent nativeEvent = event.getNativeEvent();
if (BrowserEvents.CLICK.equals(nativeEvent.getType())) {
if(event.getDisplay() instanceof CellTable<?>){
CellTable<T> table = (CellTable<T>)event.getDisplay();
if(table.getColumn(event.getColumn()) instanceof CheckServiceColumn){
return true;
}
}
}
return false;
}
}