aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLeif Åstrand <leif@vaadin.com>2012-06-15 13:39:26 +0300
committerLeif Åstrand <leif@vaadin.com>2012-06-15 13:39:26 +0300
commit1cf98eca5d6f861d3cde9ec9ca9fd98117b053e0 (patch)
tree2aaaf54f7138a9369f0073439924d6e1ae2738a9 /src
parent5422622f3536f060f21a000ff2193d6565f944c9 (diff)
downloadvaadin-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.java26
-rw-r--r--src/com/vaadin/terminal/gwt/client/ui/JavaScriptComponentConnector.java17
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();