summaryrefslogtreecommitdiffstats
path: root/client/src
diff options
context:
space:
mode:
authorTeemu Suo-Anttila <teemusa@vaadin.com>2015-09-28 11:40:57 +0300
committerVaadin Code Review <review@vaadin.com>2015-10-01 09:43:16 +0000
commit00dc7ab85e8fd533854ccc50b788012cf1450342 (patch)
treefb8204bbf18476be0af486dbd11faeff6651c518 /client/src
parentcc4f755a6c9cf996442f9c5356f6f0fbdcf41a8f (diff)
downloadvaadin-framework-00dc7ab85e8fd533854ccc50b788012cf1450342.tar.gz
vaadin-framework-00dc7ab85e8fd533854ccc50b788012cf1450342.zip
Add support for ContextClickEvent in AbstractComponent (#19015)
Change-Id: I93d5d20925b8ac9b4b108ccc6deec2090e68aa0d
Diffstat (limited to 'client/src')
-rw-r--r--client/src/com/vaadin/client/ui/AbstractComponentConnector.java45
-rw-r--r--client/src/com/vaadin/client/ui/absolutelayout/AbsoluteLayoutConnector.java10
-rw-r--r--client/src/com/vaadin/client/ui/browserframe/BrowserFrameConnector.java5
-rw-r--r--client/src/com/vaadin/client/ui/csslayout/CssLayoutConnector.java10
-rw-r--r--client/src/com/vaadin/client/ui/embedded/EmbeddedConnector.java5
-rw-r--r--client/src/com/vaadin/client/ui/flash/FlashConnector.java5
-rw-r--r--client/src/com/vaadin/client/ui/link/LinkConnector.java5
7 files changed, 45 insertions, 40 deletions
diff --git a/client/src/com/vaadin/client/ui/AbstractComponentConnector.java b/client/src/com/vaadin/client/ui/AbstractComponentConnector.java
index 1f09c14fb0..643adffe12 100644
--- a/client/src/com/vaadin/client/ui/AbstractComponentConnector.java
+++ b/client/src/com/vaadin/client/ui/AbstractComponentConnector.java
@@ -18,12 +18,16 @@ package com.vaadin.client.ui;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.JsArrayString;
import com.google.gwt.dom.client.Element;
+import com.google.gwt.event.dom.client.ContextMenuEvent;
+import com.google.gwt.event.dom.client.ContextMenuHandler;
+import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.ui.Focusable;
import com.google.gwt.user.client.ui.HasEnabled;
import com.google.gwt.user.client.ui.Widget;
import com.vaadin.client.ComponentConnector;
import com.vaadin.client.HasComponentsConnector;
import com.vaadin.client.LayoutManager;
+import com.vaadin.client.MouseEventDetailsBuilder;
import com.vaadin.client.Profiler;
import com.vaadin.client.ServerConnector;
import com.vaadin.client.StyleConstants;
@@ -31,6 +35,7 @@ import com.vaadin.client.TooltipInfo;
import com.vaadin.client.UIDL;
import com.vaadin.client.Util;
import com.vaadin.client.VConsole;
+import com.vaadin.client.annotations.OnStateChange;
import com.vaadin.client.communication.StateChangeEvent;
import com.vaadin.client.metadata.NoDataException;
import com.vaadin.client.metadata.Type;
@@ -39,12 +44,16 @@ import com.vaadin.client.ui.ui.UIConnector;
import com.vaadin.shared.AbstractComponentState;
import com.vaadin.shared.ComponentConstants;
import com.vaadin.shared.Connector;
+import com.vaadin.shared.ContextClickRpc;
+import com.vaadin.shared.EventId;
import com.vaadin.shared.ui.ComponentStateUtil;
import com.vaadin.shared.ui.TabIndexState;
public abstract class AbstractComponentConnector extends AbstractConnector
implements ComponentConnector {
+ private HandlerRegistration contextHandler = null;
+
private Widget widget;
private String lastKnownWidth = "";
@@ -64,6 +73,42 @@ public abstract class AbstractComponentConnector extends AbstractConnector
public AbstractComponentConnector() {
}
+ @OnStateChange("registeredEventListeners")
+ void handleContextClickListenerChange() {
+ if (contextHandler == null && hasEventListener(EventId.CONTEXT_CLICK)) {
+ contextHandler = getWidget().addDomHandler(
+ new ContextMenuHandler() {
+ @Override
+ public void onContextMenu(ContextMenuEvent event) {
+ sendContextClickEvent(event);
+ }
+ }, ContextMenuEvent.getType());
+ } else if (contextHandler != null
+ && !hasEventListener(EventId.CONTEXT_CLICK)) {
+ contextHandler.removeHandler();
+ contextHandler = null;
+ }
+ }
+
+ /**
+ * This method sends the context menu event to the server-side. Can be
+ * overridden to provide extra information through an alternative RPC
+ * interface.
+ *
+ * @since
+ * @param event
+ */
+ protected void sendContextClickEvent(ContextMenuEvent event) {
+ event.preventDefault();
+ event.stopPropagation();
+
+ // The default context click implementation only provides the mouse
+ // coordinates relative to root element of widget.
+ getRpcProxy(ContextClickRpc.class).contextClick(
+ MouseEventDetailsBuilder.buildMouseEventDetails(
+ event.getNativeEvent(), getWidget().getElement()));
+ }
+
/**
* Creates and returns the widget for this VPaintableWidget. This method
* should only be called once when initializing the paintable.
diff --git a/client/src/com/vaadin/client/ui/absolutelayout/AbsoluteLayoutConnector.java b/client/src/com/vaadin/client/ui/absolutelayout/AbsoluteLayoutConnector.java
index e1234d436a..19b66fb72f 100644
--- a/client/src/com/vaadin/client/ui/absolutelayout/AbsoluteLayoutConnector.java
+++ b/client/src/com/vaadin/client/ui/absolutelayout/AbsoluteLayoutConnector.java
@@ -74,16 +74,6 @@ public class AbsoluteLayoutConnector extends
}
};
- /*
- * (non-Javadoc)
- *
- * @see com.vaadin.client.ui.AbstractComponentConnector#init()
- */
- @Override
- protected void init() {
- super.init();
- }
-
/**
* Returns the deepest nested child component which contains "element". The
* child component is also returned if "element" is part of its caption.
diff --git a/client/src/com/vaadin/client/ui/browserframe/BrowserFrameConnector.java b/client/src/com/vaadin/client/ui/browserframe/BrowserFrameConnector.java
index 8ff8a0b72d..95d64b61d0 100644
--- a/client/src/com/vaadin/client/ui/browserframe/BrowserFrameConnector.java
+++ b/client/src/com/vaadin/client/ui/browserframe/BrowserFrameConnector.java
@@ -26,11 +26,6 @@ import com.vaadin.shared.ui.browserframe.BrowserFrameState;
public class BrowserFrameConnector extends AbstractComponentConnector {
@Override
- protected void init() {
- super.init();
- }
-
- @Override
public VBrowserFrame getWidget() {
return (VBrowserFrame) super.getWidget();
}
diff --git a/client/src/com/vaadin/client/ui/csslayout/CssLayoutConnector.java b/client/src/com/vaadin/client/ui/csslayout/CssLayoutConnector.java
index bef506b492..1ec395280d 100644
--- a/client/src/com/vaadin/client/ui/csslayout/CssLayoutConnector.java
+++ b/client/src/com/vaadin/client/ui/csslayout/CssLayoutConnector.java
@@ -64,16 +64,6 @@ public class CssLayoutConnector extends AbstractLayoutConnector {
/*
* (non-Javadoc)
*
- * @see com.vaadin.client.ui.AbstractComponentConnector#init()
- */
- @Override
- protected void init() {
- super.init();
- }
-
- /*
- * (non-Javadoc)
- *
* @see com.vaadin.client.ui.AbstractLayoutConnector#getState()
*/
@Override
diff --git a/client/src/com/vaadin/client/ui/embedded/EmbeddedConnector.java b/client/src/com/vaadin/client/ui/embedded/EmbeddedConnector.java
index 38995cf800..7b837726a7 100644
--- a/client/src/com/vaadin/client/ui/embedded/EmbeddedConnector.java
+++ b/client/src/com/vaadin/client/ui/embedded/EmbeddedConnector.java
@@ -52,11 +52,6 @@ public class EmbeddedConnector extends AbstractComponentConnector implements
private String resourceUrl;
@Override
- protected void init() {
- super.init();
- }
-
- @Override
public void onStateChanged(StateChangeEvent stateChangeEvent) {
super.onStateChanged(stateChangeEvent);
// if theme has changed the resourceUrl may need to be updated
diff --git a/client/src/com/vaadin/client/ui/flash/FlashConnector.java b/client/src/com/vaadin/client/ui/flash/FlashConnector.java
index 7d01f6f560..e859e9cbf1 100644
--- a/client/src/com/vaadin/client/ui/flash/FlashConnector.java
+++ b/client/src/com/vaadin/client/ui/flash/FlashConnector.java
@@ -26,11 +26,6 @@ import com.vaadin.shared.ui.flash.FlashState;
public class FlashConnector extends AbstractComponentConnector {
@Override
- protected void init() {
- super.init();
- }
-
- @Override
public VFlash getWidget() {
return (VFlash) super.getWidget();
}
diff --git a/client/src/com/vaadin/client/ui/link/LinkConnector.java b/client/src/com/vaadin/client/ui/link/LinkConnector.java
index 5a12445655..1e77fb51b4 100644
--- a/client/src/com/vaadin/client/ui/link/LinkConnector.java
+++ b/client/src/com/vaadin/client/ui/link/LinkConnector.java
@@ -32,11 +32,6 @@ import com.vaadin.ui.Link;
public class LinkConnector extends AbstractComponentConnector {
@Override
- protected void init() {
- super.init();
- }
-
- @Override
public LinkState getState() {
return (LinkState) super.getState();
}