aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Englund <marc@vaadin.com>2012-11-23 19:06:20 +0000
committerVaadin Code Review <review@vaadin.com>2012-11-23 19:06:20 +0000
commit4b6ef93fa96fc175854294f5b02ab8f333e30e1a (patch)
tree270cc080c8fd4e0d14b55298d0718422d958c00b
parente2c2624ef2b5de8d1719dd505c9dc6aee9e9b7c4 (diff)
parent62eff6b8165bed7c347fd0129d43b7b2bbe8728e (diff)
downloadvaadin-framework-4b6ef93fa96fc175854294f5b02ab8f333e30e1a.tar.gz
vaadin-framework-4b6ef93fa96fc175854294f5b02ab8f333e30e1a.zip
Merge "Allow JavaScriptConnectors to get unRegister events (#9292)"
-rw-r--r--client/src/com/vaadin/client/JavaScriptConnectorHelper.java22
-rw-r--r--client/src/com/vaadin/client/JavaScriptExtension.java6
-rw-r--r--client/src/com/vaadin/client/ui/JavaScriptComponentConnector.java6
-rw-r--r--uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.html10
-rw-r--r--uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.java14
-rw-r--r--uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponentConnector.js4
6 files changed, 52 insertions, 10 deletions
diff --git a/client/src/com/vaadin/client/JavaScriptConnectorHelper.java b/client/src/com/vaadin/client/JavaScriptConnectorHelper.java
index 80d5297d33..b275cd0a68 100644
--- a/client/src/com/vaadin/client/JavaScriptConnectorHelper.java
+++ b/client/src/com/vaadin/client/JavaScriptConnectorHelper.java
@@ -96,7 +96,7 @@ public class JavaScriptConnectorHelper {
inited = true;
}
- fireNativeStateChange(wrapper);
+ invokeIfPresent(wrapper, "onStateChange");
}
});
}
@@ -165,14 +165,6 @@ public class JavaScriptConnectorHelper {
return connectorWrapper;
}
- private static native void fireNativeStateChange(
- JavaScriptObject connectorWrapper)
- /*-{
- if (typeof connectorWrapper.onStateChange == 'function') {
- connectorWrapper.onStateChange();
- }
- }-*/;
-
private static native JavaScriptObject createConnectorWrapper(
JavaScriptConnectorHelper h, ApplicationConnection c,
JavaScriptObject nativeState, JavaScriptObject registeredRpc,
@@ -382,4 +374,16 @@ public class JavaScriptConnectorHelper {
return (JavaScriptConnectorState) connector.getState();
}
+ public void onUnregister() {
+ invokeIfPresent(connectorWrapper, "onUnregister");
+ }
+
+ private static native void invokeIfPresent(
+ JavaScriptObject connectorWrapper, String functionName)
+ /*-{
+ if (typeof connectorWrapper[functionName] == 'function') {
+ connectorWrapper[functionName].apply(connectorWrapper, arguments);
+ }
+ }-*/;
+
}
diff --git a/client/src/com/vaadin/client/JavaScriptExtension.java b/client/src/com/vaadin/client/JavaScriptExtension.java
index 0a3d6b81ba..bf1bb5b56a 100644
--- a/client/src/com/vaadin/client/JavaScriptExtension.java
+++ b/client/src/com/vaadin/client/JavaScriptExtension.java
@@ -43,4 +43,10 @@ public final class JavaScriptExtension extends AbstractExtensionConnector
public JavaScriptExtensionState getState() {
return (JavaScriptExtensionState) super.getState();
}
+
+ @Override
+ public void onUnregister() {
+ super.onUnregister();
+ helper.onUnregister();
+ }
}
diff --git a/client/src/com/vaadin/client/ui/JavaScriptComponentConnector.java b/client/src/com/vaadin/client/ui/JavaScriptComponentConnector.java
index 82ab32e23e..0dab9e21a6 100644
--- a/client/src/com/vaadin/client/ui/JavaScriptComponentConnector.java
+++ b/client/src/com/vaadin/client/ui/JavaScriptComponentConnector.java
@@ -54,4 +54,10 @@ public final class JavaScriptComponentConnector extends
public JavaScriptComponentState getState() {
return (JavaScriptComponentState) super.getState();
}
+
+ @Override
+ public void onUnregister() {
+ super.onUnregister();
+ helper.onUnregister();
+ }
}
diff --git a/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.html b/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.html
index 56d86fdc6c..d7024b2972 100644
--- a/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.html
+++ b/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.html
@@ -56,6 +56,16 @@
<td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::/VVerticalLayout[0]/VVerticalLayout[0]/JavaScriptWidget[0]/domChild[3]</td>
<td>1. Parent element className: v-verticallayout v-layout v-vertical v-widget v-has-width</td>
</tr>
+<tr>
+ <td>click</td>
+ <td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::PID_SRemoveButton/domChild[0]/domChild[0]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::PID_SRemoveButton</td>
+ <td>Remove componentDon't mess with me</td>
+</tr>
</tbody></table>
</body>
</html>
diff --git a/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.java b/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.java
index 9e316e77f1..8fdd0fee87 100644
--- a/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.java
+++ b/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.java
@@ -35,6 +35,8 @@ import com.vaadin.shared.ui.JavaScriptComponentState;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.tests.util.Log;
import com.vaadin.ui.AbstractJavaScriptComponent;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.HasComponents;
import com.vaadin.ui.JavaScriptFunction;
@@ -142,9 +144,19 @@ public class BasicJavaScriptComponent extends AbstractTestUI {
protected void setup(VaadinRequest request) {
addComponent(log);
- ExampleWidget c = new ExampleWidget();
+ final ExampleWidget c = new ExampleWidget();
c.setCaption("Component caption");
addComponent(c);
+
+ Button removeButton = new Button("Remove component",
+ new Button.ClickListener() {
+ @Override
+ public void buttonClick(ClickEvent event) {
+ removeComponent(c);
+ }
+ });
+ removeButton.setId("RemoveButton");
+ addComponent(removeButton);
}
@Override
diff --git a/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponentConnector.js b/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponentConnector.js
index b0ece6217d..004d34040e 100644
--- a/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponentConnector.js
+++ b/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponentConnector.js
@@ -35,6 +35,10 @@ window.com_vaadin_tests_components_javascriptcomponent_BasicJavaScriptComponent_
}
});
+ this.onUnregister = function() {
+ document.getElementById('RemoveButton').appendChild(document.createTextNode("Don't mess with me"));
+ };
+
this.messageToClient = function(message) {
this.messageToServer(message + " processed");
}