a separate class to avoid class loading problems on the server.
import java.io.Serializable;
-import com.google.gwt.dom.client.Element;
-import com.google.gwt.dom.client.NativeEvent;
-import com.google.gwt.user.client.Event;
-
/**
* Helper class to store and transfer mouse event details.
*/
public class MouseEventDetails implements Serializable {
- public static final int BUTTON_LEFT = Event.BUTTON_LEFT;
- public static final int BUTTON_MIDDLE = Event.BUTTON_MIDDLE;
- public static final int BUTTON_RIGHT = Event.BUTTON_RIGHT;
+ // From com.google.gwt.dom.client.NativeEvent
+ public static final int BUTTON_LEFT = 1;
+ public static final int BUTTON_MIDDLE = 4;
+ public static final int BUTTON_RIGHT = 2;
private static final char DELIM = ',';
+ // From com.google.gwt.user.client.Event
+ private static final int ONDBLCLICK = 0x00002;
private int button;
private int clientX;
public MouseEventDetails() {
}
- public MouseEventDetails(NativeEvent evt) {
- this(evt, null);
- }
-
- public MouseEventDetails(NativeEvent evt, Element relativeToElement) {
- type = Event.getTypeInt(evt.getType());
- clientX = Util.getTouchOrMouseClientX(evt);
- clientY = Util.getTouchOrMouseClientY(evt);
- button = evt.getButton();
- altKey = evt.getAltKey();
- ctrlKey = evt.getCtrlKey();
- metaKey = evt.getMetaKey();
- shiftKey = evt.getShiftKey();
- if (relativeToElement != null) {
- relativeX = getRelativeX(clientX, relativeToElement);
- relativeY = getRelativeY(clientY, relativeToElement);
- }
- }
-
@Override
public String toString() {
return serialize();
}
public boolean isDoubleClick() {
- return type == Event.ONDBLCLICK;
- }
-
- private static int getRelativeX(int clientX, Element target) {
- return clientX - target.getAbsoluteLeft() + target.getScrollLeft()
- + target.getOwnerDocument().getScrollLeft();
- }
-
- private static int getRelativeY(int clientY, Element target) {
- return clientY - target.getAbsoluteTop() + target.getScrollTop()
- + target.getOwnerDocument().getScrollTop();
+ return type == ONDBLCLICK;
}
}
--- /dev/null
+package com.vaadin.terminal.gwt.client;
+
+import com.google.gwt.dom.client.Element;
+import com.google.gwt.dom.client.NativeEvent;
+import com.google.gwt.user.client.Event;
+
+public class MouseEventDetailsBuilder {
+
+ public static MouseEventDetails buildMouseEventDetails(NativeEvent evt) {
+ return buildMouseEventDetails(evt, null);
+ }
+
+ public static MouseEventDetails buildMouseEventDetails(NativeEvent evt,
+ Element relativeToElement) {
+ MouseEventDetails mouseEventDetails = new MouseEventDetails();
+ mouseEventDetails.setType(Event.getTypeInt(evt.getType()));
+ mouseEventDetails.setClientX(Util.getTouchOrMouseClientX(evt));
+ mouseEventDetails.setClientY(Util.getTouchOrMouseClientY(evt));
+ mouseEventDetails.setButton(evt.getButton());
+ mouseEventDetails.setAltKey(evt.getAltKey());
+ mouseEventDetails.setCtrlKey(evt.getCtrlKey());
+ mouseEventDetails.setMetaKey(evt.getMetaKey());
+ mouseEventDetails.setShiftKey(evt.getShiftKey());
+ if (relativeToElement != null) {
+ mouseEventDetails.setRelativeX(getRelativeX(
+ mouseEventDetails.getClientX(), relativeToElement));
+ mouseEventDetails.setRelativeY(getRelativeY(
+ mouseEventDetails.getClientY(), relativeToElement));
+ }
+ return mouseEventDetails;
+
+ }
+
+ private static int getRelativeX(int clientX, Element target) {
+ return clientX - target.getAbsoluteLeft() + target.getScrollLeft()
+ + target.getOwnerDocument().getScrollLeft();
+ }
+
+ private static int getRelativeY(int clientY, Element target) {
+ return clientY - target.getAbsoluteTop() + target.getScrollTop()
+ + target.getOwnerDocument().getScrollTop();
+ }
+
+}
import com.vaadin.terminal.gwt.client.ComponentConnector;
import com.vaadin.terminal.gwt.client.ConnectorMap;
import com.vaadin.terminal.gwt.client.MouseEventDetails;
+import com.vaadin.terminal.gwt.client.MouseEventDetailsBuilder;
public abstract class ClickEventHandler implements DoubleClickHandler,
ContextMenuHandler, MouseUpHandler {
String pid = ConnectorMap.get(getApplicationConnection())
.getConnectorId(paintable);
- MouseEventDetails mouseDetails = new MouseEventDetails(event,
- getRelativeToElement());
+ MouseEventDetails mouseDetails = MouseEventDetailsBuilder
+ .buildMouseEventDetails(event, getRelativeToElement());
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("mouseDetails", mouseDetails.serialize());
import com.vaadin.terminal.gwt.client.ComponentConnector;
import com.vaadin.terminal.gwt.client.ConnectorMap;
import com.vaadin.terminal.gwt.client.MouseEventDetails;
+import com.vaadin.terminal.gwt.client.MouseEventDetailsBuilder;
public abstract class LayoutClickEventHandler extends ClickEventHandler {
String pid = ConnectorMap.get(getApplicationConnection())
.getConnectorId(paintable);
- MouseEventDetails mouseDetails = new MouseEventDetails(event,
- getRelativeToElement());
+ MouseEventDetails mouseDetails = MouseEventDetailsBuilder
+ .buildMouseEventDetails(event, getRelativeToElement());
ComponentConnector childComponent = getChildComponent((Element) event
.getEventTarget().cast());
import com.vaadin.terminal.gwt.client.BrowserInfo;
import com.vaadin.terminal.gwt.client.EventId;
import com.vaadin.terminal.gwt.client.MouseEventDetails;
+import com.vaadin.terminal.gwt.client.MouseEventDetailsBuilder;
import com.vaadin.terminal.gwt.client.Util;
import com.vaadin.terminal.gwt.client.VTooltip;
import com.vaadin.terminal.gwt.client.ui.ButtonConnector.ButtonServerRpc;
}
// Add mouse details
- MouseEventDetails details = new MouseEventDetails(
- event.getNativeEvent(), getElement());
+ MouseEventDetails details = MouseEventDetailsBuilder
+ .buildMouseEventDetails(event.getNativeEvent(), getElement());
buttonRpcProxy.click(details);
clickPending = false;
import com.vaadin.terminal.gwt.client.ApplicationConnection;
import com.vaadin.terminal.gwt.client.EventId;
import com.vaadin.terminal.gwt.client.MouseEventDetails;
+import com.vaadin.terminal.gwt.client.MouseEventDetailsBuilder;
import com.vaadin.terminal.gwt.client.Util;
import com.vaadin.terminal.gwt.client.VTooltip;
}
// Add mouse details
- MouseEventDetails details = new MouseEventDetails(
- event.getNativeEvent(), getElement());
+ MouseEventDetails details = MouseEventDetailsBuilder
+ .buildMouseEventDetails(event.getNativeEvent(),
+ getElement());
client.updateVariable(id, "mousedetails", details.serialize(),
false);
client.updateVariable(id, VARIABLE_STATE, getValue(), immediate);
import com.vaadin.terminal.gwt.client.ComponentConnector;
import com.vaadin.terminal.gwt.client.Connector;
import com.vaadin.terminal.gwt.client.ConnectorMap;
-import com.vaadin.terminal.gwt.client.MouseEventDetails;
+import com.vaadin.terminal.gwt.client.MouseEventDetailsBuilder;
import com.vaadin.terminal.gwt.client.RenderInformation;
import com.vaadin.terminal.gwt.client.RenderInformation.Size;
import com.vaadin.terminal.gwt.client.Util;
VDragEvent dragEvent = VDragAndDropManager.get().startDrag(
transferable, event, true);
- transferable.setData("mouseDown",
- new MouseEventDetails(event).serialize());
+ transferable.setData("mouseDown", MouseEventDetailsBuilder
+ .buildMouseEventDetails(event).serialize());
if (dragStartMode == WRAPPER) {
dragEvent.createDragImage(getElement(), true);
import com.vaadin.terminal.gwt.client.BrowserInfo;
import com.vaadin.terminal.gwt.client.EventId;
import com.vaadin.terminal.gwt.client.MouseEventDetails;
+import com.vaadin.terminal.gwt.client.MouseEventDetailsBuilder;
import com.vaadin.terminal.gwt.client.Util;
import com.vaadin.terminal.gwt.client.VTooltip;
import com.vaadin.terminal.gwt.client.ui.ButtonConnector.ButtonServerRpc;
}
// Add mouse details
- MouseEventDetails details = new MouseEventDetails(
- event.getNativeEvent(), getElement());
+ MouseEventDetails details = MouseEventDetailsBuilder
+ .buildMouseEventDetails(event.getNativeEvent(), getElement());
buttonRpcProxy.click(details);
clickPending = false;
import com.vaadin.terminal.gwt.client.ConnectorMap;
import com.vaadin.terminal.gwt.client.Focusable;
import com.vaadin.terminal.gwt.client.MouseEventDetails;
+import com.vaadin.terminal.gwt.client.MouseEventDetailsBuilder;
import com.vaadin.terminal.gwt.client.TooltipInfo;
import com.vaadin.terminal.gwt.client.UIDL;
import com.vaadin.terminal.gwt.client.Util;
private void fireHeaderClickedEvent(Event event) {
if (client.hasEventListeners(VScrollTable.this,
HEADER_CLICK_EVENT_ID)) {
- MouseEventDetails details = new MouseEventDetails(event);
+ MouseEventDetails details = MouseEventDetailsBuilder
+ .buildMouseEventDetails(event);
client.updateVariable(paintableId, "headerClickEvent",
details.toString(), false);
client.updateVariable(paintableId, "headerClickCID", cid, true);
private void fireFooterClickedEvent(Event event) {
if (client.hasEventListeners(VScrollTable.this,
FOOTER_CLICK_EVENT_ID)) {
- MouseEventDetails details = new MouseEventDetails(event);
+ MouseEventDetails details = MouseEventDetailsBuilder
+ .buildMouseEventDetails(event);
client.updateVariable(paintableId, "footerClickEvent",
details.toString(), false);
client.updateVariable(paintableId, "footerClickCID", cid, true);
false);
}
- MouseEventDetails details = new MouseEventDetails(event);
+ MouseEventDetails details = MouseEventDetailsBuilder
+ .buildMouseEventDetails(event);
client.updateVariable(paintableId, "clickEvent",
details.toString(), immediate);
import com.vaadin.terminal.gwt.client.ComponentConnector;
import com.vaadin.terminal.gwt.client.ConnectorMap;
import com.vaadin.terminal.gwt.client.MouseEventDetails;
+import com.vaadin.terminal.gwt.client.MouseEventDetailsBuilder;
import com.vaadin.terminal.gwt.client.UIDL;
import com.vaadin.terminal.gwt.client.Util;
import com.vaadin.terminal.gwt.client.VTooltip;
focus();
}
}
- final MouseEventDetails details = new MouseEventDetails(evt);
+ final MouseEventDetails details = MouseEventDetailsBuilder
+ .buildMouseEventDetails(evt);
ScheduledCommand command = new ScheduledCommand() {
public void execute() {
// Determine if we should send the event immediately to the
import com.vaadin.terminal.gwt.client.ApplicationConnection;
import com.vaadin.terminal.gwt.client.ComponentConnector;
import com.vaadin.terminal.gwt.client.MouseEventDetails;
+import com.vaadin.terminal.gwt.client.MouseEventDetailsBuilder;
import com.vaadin.terminal.gwt.client.UIDL;
import com.vaadin.terminal.gwt.client.Util;
import com.vaadin.terminal.gwt.client.ValueMap;
if (currentDrag.getCurrentGwtEvent() != null) {
try {
- MouseEventDetails mouseEventDetails = new MouseEventDetails(
- currentDrag.getCurrentGwtEvent());
+ MouseEventDetails mouseEventDetails = MouseEventDetailsBuilder
+ .buildMouseEventDetails(currentDrag
+ .getCurrentGwtEvent());
currentDrag.getDropDetails().put("mouseEvent",
mouseEventDetails.serialize());
} catch (Exception e) {