Garmin Communicator API

73 views
Skip to first unread message

Stephen Walsh

unread,
Nov 21, 2009, 2:25:50 PM11/21/09
to google-we...@googlegroups.com
I am trying to use the above api to implement some JSNI code in my onModuleLoad method.  I am having the darnedest time trying to get it to recognize that I have the extra javascript files available.  The JS debugger in Chrome keeps saying that Garmin is undefined (see below).  Here's the dilemma: when I create my JSNI it gets compiled in the main JS code and evidently the Garmin JS code is out of the scope of where the call happens in the compiled JS.  I'm somewhat new to GWT, and I'm not sure if I'm doing something incorrectly or not. Here's what I've got in my project:

src
---public
------communicator-api
---------miscellaneous garmin folders in the original structure
---garmin_project.gwt.xml

com.stephenlwalsh.garmin_project.client
---garmin_project.java

Contents of garmin_project.gwt.xml  The script src tags are doing a fine job of pulling in the js needed and the entire communicator-api folder on compile.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.7.1//EN" "http://google-web-toolkit.googlecode.com/svn/tags/1.7.1/distro-source/core/src/gwt-module.dtd">
<module rename-to='garmin_favorites_sync'>
  <!-- Inherit the core Web Toolkit stuff.                        -->
  <inherits name='com.google.gwt.user.User'/>

  <!-- Inherit the default GWT style sheet.  You can change       -->
  <!-- the theme of your GWT application by uncommenting          -->
  <!-- any one of the following lines.                            -->
  <inherits name='com.google.gwt.user.theme.standard.Standard'/>
  <!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> -->
  <!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/>     -->

  <!-- Other module inherits                                      -->
  <script src="http://www.google.com/uds/api?file=uds.js&amp;v=1.0&amp;gwt=1"/>
  <script src="communicator-api/garmin/device/GarminDeviceDisplay.js"/>
  <script src="communicator-api/prototype/prototype.js"/>
  <stylesheet src="communicator-api/garmin/device/style/communicator.css"/>
  <!-- Specify the app entry point class.                         -->
  <entry-point class='com.stephenlwalsh.garminsync.client.Garmin_Favorites_Sync'/>
</module>

JSNI function within EntryPoint()

    private native void load() /*-{
        var display = new Garmin.DeviceDisplay("garminDisplay", {
            pathKeyPairsArray:      ["http://developer.garmin.com","49048b3369edffd4a511d920202a6214"],
            autoFindDevices: true, //start searching for devices
            showStatusElement: true, //basic feedback provided
            showReadDataElement: false //don't offer to read data
            //add other options per the documentation
            });
    }-*/;

From within onModuleLoad() I have the function called and it works fine.  The problem lies within the line above in the var display declaration.  It says that "Garmin" is undefined.  I have moved files and reworded and everything trying to give that function access to the JS that it should have access to.  It's interesting that when I place the js load function in the html, it works just fine even when GWT is compiling the external javascript.

Any thoughts?

Thanks,
Stephen Walsh

Adam T

unread,
Nov 22, 2009, 10:57:50 AM11/22/09
to Google Web Toolkit
Stephen,

You're most likely going to need to use the $wnd or $doc variable
within your JSNI code as the Garmin JS is not loaded into the same
area as GWT code (http://code.google.com/webtoolkit/doc/1.6/
DevGuideCodingBasics.html#DevGuideJavaScriptNativeInterface)

i.e. var display = new $wnd.Garmin.DeviceDisplay("garminDisplay",
{........

//Adam

On 21 Nov, 20:25, Stephen Walsh <stephenwalsh....@gmail.com> wrote:
> I am trying to use the above api to implement some JSNI code in my
> onModuleLoad method.  I am having the darnedest time trying to get it to
> recognize that I have the extra javascript files available.  The JS debugger
> in Chrome keeps saying that Garmin is undefined (see below).  Here's the
> dilemma: when I create my JSNI it gets compiled in the main JS code and
> evidently the Garmin JS code is out of the scope of where the call happens
> in the compiled JS.  I'm somewhat new to GWT, and I'm not sure if I'm doing
> something incorrectly or not. Here's what I've got in my project:
>
> src
> ---public
> ------communicator-api
> ---------miscellaneous garmin folders in the original structure
> ---garmin_project.gwt.xml
>
> com.stephenlwalsh.garmin_project.client
> ---garmin_project.java
>
> Contents of garmin_project.gwt.xml  The script src tags are doing a fine job
> of pulling in the js needed and the entire communicator-api folder on
> compile.
>
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.7.1//EN" "http://google-web-toolkit.googlecode.com/svn/tags/1.7.1/distro-source...
> ">
> <module rename-to='garmin_favorites_sync'>
>   <!-- Inherit the core Web Toolkit stuff.                        -->
>   <inherits name='com.google.gwt.user.User'/>
>
>   <!-- Inherit the default GWT style sheet.  You can change       -->
>   <!-- the theme of your GWT application by uncommenting          -->
>   <!-- any one of the following lines.                            -->
>   <inherits name='com.google.gwt.user.theme.standard.Standard'/>
>   <!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> -->
>   <!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/>     -->
>
>   <!-- Other module inherits                                      -->
>   <script src="http://www.google.com/uds/api?file=uds.js&v=1.0&gwt=1

Stephen Walsh

unread,
Nov 22, 2009, 11:54:31 AM11/22/09
to google-we...@googlegroups.com
Well that worked sort of.  It got past the Garmin is undefined error.  Does the load() function look like JSON to you?  I'm simultaneously trying to learn GWT and the communicator-api, so I'm not too familiar with either code structure just yet.

Thanks for the reply, Adam!

Stephen Walsh


--

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-we...@googlegroups.com.
To unsubscribe from this group, send email to google-web-tool...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=.



Reply all
Reply to author
Forward
0 new messages