diff options
author | Leif Åstrand <leif@vaadin.com> | 2012-06-15 13:39:26 +0300 |
---|---|---|
committer | Leif Åstrand <leif@vaadin.com> | 2012-06-15 13:39:26 +0300 |
commit | 1cf98eca5d6f861d3cde9ec9ca9fd98117b053e0 (patch) | |
tree | 2aaaf54f7138a9369f0073439924d6e1ae2738a9 /src | |
parent | 5422622f3536f060f21a000ff2193d6565f944c9 (diff) | |
download | vaadin-framework-1cf98eca5d6f861d3cde9ec9ca9fd98117b053e0.tar.gz vaadin-framework-1cf98eca5d6f861d3cde9ec9ca9fd98117b053e0.zip |
Add support for getting the dom element for any connector id (#8888)
Diffstat (limited to 'src')
-rw-r--r-- | src/com/vaadin/terminal/gwt/client/JavaScriptConnectorHelper.java | 26 | ||||
-rw-r--r-- | src/com/vaadin/terminal/gwt/client/ui/JavaScriptComponentConnector.java | 17 |
2 files changed, 20 insertions, 23 deletions
diff --git a/src/com/vaadin/terminal/gwt/client/JavaScriptConnectorHelper.java b/src/com/vaadin/terminal/gwt/client/JavaScriptConnectorHelper.java index 7b86439790..006105fed6 100644 --- a/src/com/vaadin/terminal/gwt/client/JavaScriptConnectorHelper.java +++ b/src/com/vaadin/terminal/gwt/client/JavaScriptConnectorHelper.java @@ -14,6 +14,7 @@ import java.util.Set; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.core.client.JsArray; import com.google.gwt.json.client.JSONArray; +import com.google.gwt.user.client.Element; import com.vaadin.terminal.gwt.client.communication.MethodInvocation; import com.vaadin.terminal.gwt.client.communication.StateChangeEvent; import com.vaadin.terminal.gwt.client.communication.StateChangeEvent.StateChangeHandler; @@ -148,17 +149,13 @@ public class JavaScriptConnectorHelper { private JavaScriptObject getConnectorWrapper() { if (connectorWrapper == null) { - connectorWrapper = createConnectorWrapper(); + connectorWrapper = createConnectorWrapper(this, nativeState, + rpcMap, connector.getConnectorId(), rpcObjects); } return connectorWrapper; } - protected JavaScriptObject createConnectorWrapper() { - return createConnectorWrapper(this, nativeState, rpcMap, - connector.getConnectorId(), rpcObjects); - } - private static native void fireNativeStateChange( JavaScriptObject connectorWrapper) /*-{ @@ -185,6 +182,9 @@ public class JavaScriptConnectorHelper { } return rpcObjects.@java.util.Map::get(Ljava/lang/Object;)(iface); }), + 'getWidgetElement': $entry(function(connectorId) { + return h.@com.vaadin.terminal.gwt.client.JavaScriptConnectorHelper::getWidgetElement(Ljava/lang/String;)(connectorId); + }), 'registerRpc': function(iface, rpcHandler) { //registerRpc(handler) -> registerRpc('', handler); if (!rpcHandler) { @@ -208,6 +208,20 @@ public class JavaScriptConnectorHelper { }); }-*/; + private Element getWidgetElement(String connectorId) { + if (connectorId == null) { + connectorId = connector.getConnectorId(); + } + + ServerConnector target = ConnectorMap.get(connector.getConnection()) + .getConnector(connectorId); + if (target instanceof ComponentConnector) { + return ((ComponentConnector) target).getWidget().getElement(); + } else { + return null; + } + } + private void fireRpc(String iface, String method, JsArray<JavaScriptObject> arguments) { if (iface == null) { diff --git a/src/com/vaadin/terminal/gwt/client/ui/JavaScriptComponentConnector.java b/src/com/vaadin/terminal/gwt/client/ui/JavaScriptComponentConnector.java index 9ae60de1f7..ab5280fee9 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/JavaScriptComponentConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/JavaScriptComponentConnector.java @@ -3,8 +3,6 @@ */ package com.vaadin.terminal.gwt.client.ui; -import com.google.gwt.core.client.JavaScriptObject; -import com.google.gwt.user.client.Element; import com.vaadin.terminal.gwt.client.JavaScriptConnectorHelper; import com.vaadin.terminal.gwt.client.communication.HasJavaScriptConnectorHelper; import com.vaadin.ui.AbstractJavaScriptComponent; @@ -20,23 +18,8 @@ public class JavaScriptComponentConnector extends AbstractComponentConnector java.util.ArrayList<String> attemptedNames) { getWidget().showNoInitFound(attemptedNames); } - - @Override - protected JavaScriptObject createConnectorWrapper() { - JavaScriptObject connectorWrapper = super.createConnectorWrapper(); - addGetWidgetElement(connectorWrapper, getWidget().getElement()); - return connectorWrapper; - } }; - private static native void addGetWidgetElement( - JavaScriptObject connectorWrapper, Element element) - /*-{ - connectorWrapper.getWidgetElement = function() { - return element; - }; - }-*/; - @Override public JavaScriptWidget getWidget() { return (JavaScriptWidget) super.getWidget(); |