|
|
|
|
|
|
|
|
import com.google.gwt.dom.client.TableSectionElement; |
|
|
import com.google.gwt.dom.client.TableSectionElement; |
|
|
import com.google.gwt.event.dom.client.ClickEvent; |
|
|
import com.google.gwt.event.dom.client.ClickEvent; |
|
|
import com.google.gwt.event.dom.client.ClickHandler; |
|
|
import com.google.gwt.event.dom.client.ClickHandler; |
|
|
|
|
|
import com.google.gwt.event.dom.client.KeyCodes; |
|
|
|
|
|
import com.google.gwt.event.dom.client.KeyUpEvent; |
|
|
|
|
|
import com.google.gwt.event.dom.client.KeyUpHandler; |
|
|
import com.google.gwt.event.dom.client.MouseDownEvent; |
|
|
import com.google.gwt.event.dom.client.MouseDownEvent; |
|
|
import com.google.gwt.event.dom.client.MouseDownHandler; |
|
|
import com.google.gwt.event.dom.client.MouseDownHandler; |
|
|
import com.google.gwt.event.dom.client.TouchStartEvent; |
|
|
import com.google.gwt.event.dom.client.TouchStartEvent; |
|
|
|
|
|
|
|
|
import com.google.gwt.user.client.Event.NativePreviewEvent; |
|
|
import com.google.gwt.user.client.Event.NativePreviewEvent; |
|
|
import com.google.gwt.user.client.Event.NativePreviewHandler; |
|
|
import com.google.gwt.user.client.Event.NativePreviewHandler; |
|
|
import com.google.gwt.user.client.ui.CheckBox; |
|
|
import com.google.gwt.user.client.ui.CheckBox; |
|
|
|
|
|
import com.vaadin.client.VConsole; |
|
|
import com.vaadin.client.WidgetUtil; |
|
|
import com.vaadin.client.WidgetUtil; |
|
|
import com.vaadin.client.renderers.ClickableRenderer; |
|
|
import com.vaadin.client.renderers.ClickableRenderer; |
|
|
import com.vaadin.client.widget.grid.CellReference; |
|
|
import com.vaadin.client.widget.grid.CellReference; |
|
|
|
|
|
|
|
|
*/ |
|
|
*/ |
|
|
private final class CheckBoxEventHandler |
|
|
private final class CheckBoxEventHandler |
|
|
implements MouseDownHandler, TouchStartHandler, ClickHandler, |
|
|
implements MouseDownHandler, TouchStartHandler, ClickHandler, |
|
|
GridEnabledHandler, GridSelectionAllowedHandler { |
|
|
|
|
|
|
|
|
GridEnabledHandler, GridSelectionAllowedHandler, KeyUpHandler { |
|
|
private final CheckBox checkBox; |
|
|
private final CheckBox checkBox; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
|
|
|
|
|
|
event.stopPropagation(); |
|
|
event.stopPropagation(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public void onKeyUp(KeyUpEvent event) { |
|
|
|
|
|
if (event.getNativeKeyCode() != KeyCodes.KEY_SPACE || !checkBox.isEnabled()) { |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
int logicalRow = getLogicalRowIndex(grid, checkBox.getElement()); |
|
|
|
|
|
setSelected(logicalRow, !isSelected(logicalRow)); |
|
|
|
|
|
event.preventDefault(); |
|
|
|
|
|
event.stopPropagation(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public void onEnabled(boolean enabled) { |
|
|
public void onEnabled(boolean enabled) { |
|
|
updateEnable(); |
|
|
updateEnable(); |
|
|
|
|
|
|
|
|
checkBox.sinkBitlessEvent(BrowserEvents.MOUSEDOWN); |
|
|
checkBox.sinkBitlessEvent(BrowserEvents.MOUSEDOWN); |
|
|
checkBox.sinkBitlessEvent(BrowserEvents.TOUCHSTART); |
|
|
checkBox.sinkBitlessEvent(BrowserEvents.TOUCHSTART); |
|
|
checkBox.sinkBitlessEvent(BrowserEvents.CLICK); |
|
|
checkBox.sinkBitlessEvent(BrowserEvents.CLICK); |
|
|
|
|
|
checkBox.sinkBitlessEvent(BrowserEvents.KEYUP); |
|
|
|
|
|
|
|
|
// Add handlers |
|
|
// Add handlers |
|
|
checkBox.addMouseDownHandler(handler); |
|
|
checkBox.addMouseDownHandler(handler); |
|
|
checkBox.addTouchStartHandler(handler); |
|
|
checkBox.addTouchStartHandler(handler); |
|
|
checkBox.addClickHandler(handler); |
|
|
checkBox.addClickHandler(handler); |
|
|
|
|
|
checkBox.addKeyUpHandler(handler); |
|
|
grid.addEnabledHandler(handler); |
|
|
grid.addEnabledHandler(handler); |
|
|
grid.addSelectionAllowedHandler(handler); |
|
|
grid.addSelectionAllowedHandler(handler); |
|
|
|
|
|
|