diff options
author | Teemu Suo-Anttila <teemusa@vaadin.com> | 2015-09-28 11:40:57 +0300 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2015-10-01 09:43:16 +0000 |
commit | 00dc7ab85e8fd533854ccc50b788012cf1450342 (patch) | |
tree | fb8204bbf18476be0af486dbd11faeff6651c518 /server/src/com/vaadin/ui/AbstractComponent.java | |
parent | cc4f755a6c9cf996442f9c5356f6f0fbdcf41a8f (diff) | |
download | vaadin-framework-00dc7ab85e8fd533854ccc50b788012cf1450342.tar.gz vaadin-framework-00dc7ab85e8fd533854ccc50b788012cf1450342.zip |
Add support for ContextClickEvent in AbstractComponent (#19015)
Change-Id: I93d5d20925b8ac9b4b108ccc6deec2090e68aa0d
Diffstat (limited to 'server/src/com/vaadin/ui/AbstractComponent.java')
-rw-r--r-- | server/src/com/vaadin/ui/AbstractComponent.java | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/server/src/com/vaadin/ui/AbstractComponent.java b/server/src/com/vaadin/ui/AbstractComponent.java index f499cb1fec..42b36b0f21 100644 --- a/server/src/com/vaadin/ui/AbstractComponent.java +++ b/server/src/com/vaadin/ui/AbstractComponent.java @@ -34,6 +34,9 @@ import org.jsoup.nodes.Element; import com.vaadin.event.ActionManager; import com.vaadin.event.ConnectorActionManager; +import com.vaadin.event.ContextClickEvent; +import com.vaadin.event.ContextClickEvent.ContextClickListener; +import com.vaadin.event.ContextClickEvent.ContextClickNotifier; import com.vaadin.event.ShortcutListener; import com.vaadin.server.AbstractClientConnector; import com.vaadin.server.AbstractErrorMessage.ContentMode; @@ -49,6 +52,9 @@ import com.vaadin.server.UserError; import com.vaadin.server.VaadinSession; import com.vaadin.shared.AbstractComponentState; import com.vaadin.shared.ComponentConstants; +import com.vaadin.shared.ContextClickRpc; +import com.vaadin.shared.EventId; +import com.vaadin.shared.MouseEventDetails; import com.vaadin.shared.ui.ComponentStateUtil; import com.vaadin.shared.util.SharedUtil; import com.vaadin.ui.Field.ValueChangeEvent; @@ -67,7 +73,7 @@ import com.vaadin.util.ReflectTools; */ @SuppressWarnings("serial") public abstract class AbstractComponent extends AbstractClientConnector - implements Component { + implements Component, ContextClickNotifier { /* Private members */ @@ -1391,6 +1397,30 @@ public abstract class AbstractComponent extends AbstractClientConnector return false; } + @Override + public void addContextClickListener(ContextClickListener listener) { + // Register default Context Click RPC if needed. This RPC won't be + // called if there are no listeners on the server-side. A client-side + // connector can override this and use a different RPC channel. + if (getRpcManager(ContextClickRpc.class.getName()) == null) { + registerRpc(new ContextClickRpc() { + @Override + public void contextClick(MouseEventDetails details) { + fireEvent(new ContextClickEvent(AbstractComponent.this, + details)); + } + }); + } + + addListener(EventId.CONTEXT_CLICK, ContextClickEvent.class, listener, + ContextClickEvent.CONTEXT_CLICK_METHOD); + } + + @Override + public void removeContextClickListener(ContextClickListener listener) { + removeListener(EventId.CONTEXT_CLICK, ContextClickEvent.class, listener); + } + private static final Logger getLogger() { return Logger.getLogger(AbstractComponent.class.getName()); } |