Change-Id: Ie9e11810df6484e34d3895be175d6a180911252ftags/7.0.0.beta10
@@ -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); | |||
} | |||
}-*/; | |||
} |
@@ -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(); | |||
} | |||
} |
@@ -54,4 +54,10 @@ public final class JavaScriptComponentConnector extends | |||
public JavaScriptComponentState getState() { | |||
return (JavaScriptComponentState) super.getState(); | |||
} | |||
@Override | |||
public void onUnregister() { | |||
super.onUnregister(); | |||
helper.onUnregister(); | |||
} | |||
} |
@@ -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> |
@@ -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 |
@@ -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"); | |||
} |