]> source.dussan.org Git - vaadin-framework.git/commitdiff
Separated construction of MouseEventDetails (depends on GWT classes) to
authorArtur Signell <artur@vaadin.com>
Fri, 2 Mar 2012 08:58:00 +0000 (10:58 +0200)
committerArtur Signell <artur@vaadin.com>
Fri, 2 Mar 2012 08:58:00 +0000 (10:58 +0200)
a separate class to avoid class loading problems on the server.

src/com/vaadin/terminal/gwt/client/MouseEventDetails.java
src/com/vaadin/terminal/gwt/client/MouseEventDetailsBuilder.java [new file with mode: 0644]
src/com/vaadin/terminal/gwt/client/ui/ClickEventHandler.java
src/com/vaadin/terminal/gwt/client/ui/LayoutClickEventHandler.java
src/com/vaadin/terminal/gwt/client/ui/VButton.java
src/com/vaadin/terminal/gwt/client/ui/VCheckBox.java
src/com/vaadin/terminal/gwt/client/ui/VDragAndDropWrapper.java
src/com/vaadin/terminal/gwt/client/ui/VNativeButton.java
src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java
src/com/vaadin/terminal/gwt/client/ui/VTree.java
src/com/vaadin/terminal/gwt/client/ui/dd/VDragAndDropManager.java

index 57b83701fd2c5fe630da7294bcad66f128e9efa7..f5ff707eed476a6d53ef7c57dc6289d6a1e29901 100644 (file)
@@ -5,19 +5,18 @@ package com.vaadin.terminal.gwt.client;
 
 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;
@@ -109,25 +108,6 @@ public class MouseEventDetails implements Serializable {
     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();
@@ -173,17 +153,7 @@ public class MouseEventDetails implements Serializable {
     }
 
     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;
     }
 
 }
diff --git a/src/com/vaadin/terminal/gwt/client/MouseEventDetailsBuilder.java b/src/com/vaadin/terminal/gwt/client/MouseEventDetailsBuilder.java
new file mode 100644 (file)
index 0000000..88b6596
--- /dev/null
@@ -0,0 +1,44 @@
+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();
+    }
+
+}
index c263ec03e6b6d323f4024ddcb1414b66b11e4d71..4029a56e99ca16a689f704f0da89c590100e3f6f 100644 (file)
@@ -21,6 +21,7 @@ import com.vaadin.terminal.gwt.client.ApplicationConnection;
 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 {
@@ -85,8 +86,8 @@ public abstract class ClickEventHandler implements DoubleClickHandler,
         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());
index cfcbb510427d8515b23c5e7e0e3dc3846e8f58dc..d4abbeb985ea2ad5baa014f020e82b57f0c38c0c 100644 (file)
@@ -12,6 +12,7 @@ import com.vaadin.terminal.gwt.client.ApplicationConnection;
 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 {
 
@@ -28,8 +29,8 @@ 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());
 
index f5093ee47b797e4fcd79a4c78f6598d72849a86a..9564d1b3001097d26dfa15ab7b620ca190bbc44e 100644 (file)
@@ -23,6 +23,7 @@ import com.vaadin.terminal.gwt.client.ApplicationConnection;
 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;
@@ -305,8 +306,8 @@ public class VButton extends FocusWidget implements ClickHandler, FocusHandler,
         }
 
         // Add mouse details
-        MouseEventDetails details = new MouseEventDetails(
-                event.getNativeEvent(), getElement());
+        MouseEventDetails details = MouseEventDetailsBuilder
+                .buildMouseEventDetails(event.getNativeEvent(), getElement());
         buttonRpcProxy.click(details);
 
         clickPending = false;
index e1b3bf5fb4e6affcfe5ad5ce23551436bde0ba47..d7be367f979faf525dfb0f5790a7f46ca8aab240 100644 (file)
@@ -17,6 +17,7 @@ import com.google.gwt.user.client.Event;
 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;
 
@@ -50,8 +51,9 @@ public class VCheckBox extends com.google.gwt.user.client.ui.CheckBox implements
                 }
 
                 // 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);
index 779df5812b3da44d18b357b78feebded3bffec16..d2d4ed4f7994508569561f1002b7c935971fe94f 100644 (file)
@@ -26,7 +26,7 @@ import com.vaadin.terminal.gwt.client.ApplicationConnection;
 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;
@@ -118,8 +118,8 @@ public class VDragAndDropWrapper extends VCustomComponent implements
             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);
index a6a50dc8c1ce087b10edc484b9fac9d44806d46b..7866d326abc608031b5b4926d52023153fcfbd88 100644 (file)
@@ -19,6 +19,7 @@ import com.vaadin.terminal.gwt.client.ApplicationConnection;
 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;
@@ -123,8 +124,8 @@ public class VNativeButton extends Button implements ClickHandler,
         }
 
         // Add mouse details
-        MouseEventDetails details = new MouseEventDetails(
-                event.getNativeEvent(), getElement());
+        MouseEventDetails details = MouseEventDetailsBuilder
+                .buildMouseEventDetails(event.getNativeEvent(), getElement());
         buttonRpcProxy.click(details);
 
         clickPending = false;
index fe4919d8ec31a78a730f68f616d548da08c7122a..a4764f25505f20563a317cb82bdd5dfedc875010 100644 (file)
@@ -64,6 +64,7 @@ import com.vaadin.terminal.gwt.client.ComponentState;
 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;
@@ -2320,7 +2321,8 @@ public class VScrollTable extends FlowPanel implements HasWidgets,
         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);
@@ -3377,7 +3379,8 @@ public class VScrollTable extends FlowPanel implements HasWidgets,
         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);
@@ -4731,7 +4734,8 @@ public class VScrollTable extends FlowPanel implements HasWidgets,
                             false);
                 }
 
-                MouseEventDetails details = new MouseEventDetails(event);
+                MouseEventDetails details = MouseEventDetailsBuilder
+                        .buildMouseEventDetails(event);
 
                 client.updateVariable(paintableId, "clickEvent",
                         details.toString(), immediate);
index 6641fe838ecd8a4d2d90f31f0b32b70fdb4fb272..90b45014a06a97b4f141e63ad76784dc04ab05cf 100644 (file)
@@ -42,6 +42,7 @@ import com.vaadin.terminal.gwt.client.BrowserInfo;
 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;
@@ -752,7 +753,8 @@ public class VTree extends FocusElementPanel implements VHasDropHandler,
                     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
index f76f04b501ab51f088f0db61734e8779594be679..4955eea7c6e8117eada8b8d9fc501219cc39dd5d 100644 (file)
@@ -25,6 +25,7 @@ import com.google.gwt.user.client.ui.Widget;
 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;
@@ -606,8 +607,9 @@ public class VDragAndDropManager {
 
         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) {