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.

Reply via email to