if you are in javascript its not $wnd its just window :) 2010/10/5 Boris Lenzinger <boris.lenzin...@gmail.com>
> Sorry for the javascript : there is a mistake : variable name is not > buttonnode but button at return step of the method... > Anyway the problem still stands ;-) > > Boris > > 2010/10/5 Boris Lenzinger <boris.lenzin...@gmail.com> > >> Hi, >> >> I'm currently trying to call a "java" method from a javascript that lives >> outside of the generated javascript from GWT. >> >> What I want to do is the following : >> make the gwt component communicates with a javascript component (in both >> ways). >> I have to say that I don't know at all javascript...... >> >> The problem I encounter is the following : >> * call to javascript method (generated by GWT) from my handwritten >> javascript does not work : firebug says : $wnd does not exist. >> I thought this variable was always existing in javascript but this >> assumption is may be false. >> >> I think it is quite basic (probably a problem of understanding in >> javascript). I have read the following (this is where I found most of the >> code for doing the stuff) : >> >> http://www.gwtapps.com/doc/html/com.google.gwt.doc.DeveloperGuide.JavaScriptNativeInterface.JavaFromJavaScript.html >> plus others (like >> http://www.mail-archive.com/google-web-toolkit@googlegroups.com/msg38714.html) >> but I'm stuck there. >> >> Here the very basic code to test the feature : >> >> ============================ >> The GWT Component >> ============================ >> package test.app.client; >> >> import com.google.gwt.core.client.EntryPoint; >> import com.google.gwt.dom.client.DivElement; >> import com.google.gwt.dom.client.Document; >> import com.google.gwt.event.dom.client.ClickEvent; >> import com.google.gwt.event.dom.client.ClickHandler; >> import com.google.gwt.user.client.ui.Button; >> import com.google.gwt.user.client.ui.DialogBox; >> import com.google.gwt.user.client.ui.HTML; >> import com.google.gwt.user.client.ui.RootPanel; >> import com.google.gwt.user.client.ui.VerticalPanel; >> import com.google.gwt.user.client.ui.Widget; >> >> /** >> * Entry point classes define <code>onModuleLoad()</code>. >> */ >> public class GwtAndJavascript implements EntryPoint { >> >> JsButton jsButton; >> >> public void onModuleLoad() { >> final Button gwtButton = new Button("Add item to JS !"); >> >> final VerticalPanel panel = new VerticalPanel(); >> panel.add(gwtButton); >> >> RootPanel.get("sendButtonContainer").add(panel); >> MyUtilityClass.exportStaticMethod(); >> >> >> final ClickHandler handler = new ClickHandler() { >> >> public void onClick(ClickEvent event) { >> jsButton.callSayHello("User"); >> } >> }; >> gwtButton.addClickHandler(handler); >> >> // Now I want to add javascript button that lives in a js script... >> jsButton = new JsButton(); >> panel.add(jsButton); >> >> } >> >> private class JsButton extends Widget { >> >> public JsButton() { >> DivElement element = Document.get().createDivElement(); >> makeMyGraphicalObject(element); >> setElement(element); >> } >> >> private native void makeMyGraphicalObject(DivElement element) /*-{ >> $wnd.createButton(element); >> }-*/; >> >> public native void callSayHello(String name) /*-{ >> $wnd.javascriptSayHello(name); >> }-*/; >> >> } >> >> } >> >> ======================= >> The class that should help to trigger the java method from javascript >> ======================= >> package test.app.client; >> >> import com.google.gwt.user.client.Window; >> >> public class MyUtilityClass { >> >> public static void sayHello() { >> Window.alert("Say Hello !"); >> } >> >> public static native void exportStaticMethod() /*-{ >> $wnd.sayHello = @test.app.client.MyUtilityClass::sayHello(); >> }-*/; >> >> } >> >> ==================== >> The HTML page >> ==================== >> >> <html> >> <head> >> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> >> >> <!-- --> >> <!-- Consider inlining CSS to reduce the number of requested files --> >> <!-- --> >> <link type="text/css" rel="stylesheet" href="GwtAndJavascript.css"> >> >> <!-- --> >> <!-- Any title is fine --> >> <!-- --> >> <title>Web Application Starter Project</title> >> >> <!-- --> >> <!-- This script loads your compiled module. --> >> <!-- If you add any GWT meta tags, they must --> >> <!-- be added before this line. --> >> <!-- --> >> <script type="text/javascript" language="javascript" >> src="gwtandjavascript/gwtandjavascript.nocache.js"></script> >> <script type="text/javascript" language="javascript" >> src="button.js"></script> >> </head> >> >> <!-- --> >> <!-- The body can have arbitrary html, or --> >> <!-- you can leave the body empty if you want --> >> <!-- to create a completely dynamic UI. --> >> <!-- --> >> <body> >> >> <!-- OPTIONAL: include this if you want history support --> >> <iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' >> style="position:absolute;width:0;height:0;border:0"></iframe> >> >> <!-- RECOMMENDED if your web app will not function without JavaScript >> enabled --> >> <noscript> >> <div style="width: 22em; position: absolute; left: 50%; margin-left: >> -11em; color: red; background-color: white; border: 1px solid red; padding: >> 4px; font-family: sans-serif"> >> Your web browser must have JavaScript enabled >> in order for this application to display correctly. >> </div> >> </noscript> >> >> <table align="center"> >> <tr> >> <td id="sendButtonContainer"></td> >> </tr> >> <tr> >> <td colspan="2" style="color:red;" id="errorLabelContainer"></td> >> </tr> >> </table> >> </body> >> </html> >> >> >> ==================== >> The javascript code >> ==================== >> >> function createButton(divElement) { >> var button= document.createElement('input'); >> button.setAttribute('type','button'); >> button.setAttribute('name','button'); >> button.setAttribute('value','JS Button'); >> divElement.appendChild(button); >> button.onclick = function() { $wnd.sayHello; }; >> >> return button; >> >> } >> >> // This is called from java >> function javascriptSayHello(name) { >> alert("Hello " + name); >> } >> >> ============ >> >> >> Any help would be highly appreciated :-) >> >> thanks in advance >> >> Boris >> > > -- > You received this message because you are subscribed to the Google Groups > "Google Web Toolkit" group. > To post to this group, send email to google-web-tool...@googlegroups.com. > To unsubscribe from this group, send email to > google-web-toolkit+unsubscr...@googlegroups.com<google-web-toolkit%2bunsubscr...@googlegroups.com> > . > For more options, visit this group at > http://groups.google.com/group/google-web-toolkit?hl=en. > -- You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to google-web-tool...@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.