Ok. I get it now. Now digging in... On Thu, Feb 11, 2010 at 10:10 AM, Kayode Odeyemi <[email protected]> wrote:
> I really want to explore the approach you took Doug(i.e the GWT only > approach). But my question is how do you include the module file and the > JSNI implementation in the Wave gadget > > > On Thu, Feb 11, 2010 at 6:37 AM, Jonas Huckestein <[email protected] > > wrote: > >> Wow, I never knew the gadget linker did not support any of these >> features. Is there any reason for that? In that case we could also try >> to improve on the linker :) >> >> I didn't know about shindig either, but from the looks of it, we would >> have to build a GWT wrapper around it first. >> >> So here's what my final goal and masterplan is: >> - I want to develop wave gadgets using ALL of GWTs features >> - I want to test in hosted mode with multiple versions of the gadget >> running side by side >> - I want to be able to simulate mode changes and participant updates >> all from one interface >> >> I thought I was pretty close but the gadget linker not working with >> some of GWTs power features is a real letdown! So does anybody have >> any ideas how to build what I want to build in another way? >> >> I didn't understand your point about why you cannot put a web >> application in a gadget container, though. Using JSONP you can develop >> any application you want and connect it to a webservice. There is no >> reason for this to be slower than anything that doesn't run in a >> gadget container. (I don't know what opensocial's makerequest does, >> though). >> >> Cheers, Jonas >> >> On Feb 10, 8:11 pm, dougx <[email protected]> wrote: >> > Hm. >> > >> > I've never been a fan of gadgets. It's always seemed rather contrived >> > to me, to suggest you can have an entire web application all wrapped >> > up in a single xml file. >> > >> > All of the open social applications you'll find in the real world make >> > use of makeRequest() and server side services; the way you would >> > expect a modern web application to. In fact, I'd argue the huge delay >> > in adding makeRequest() and the REST api is why Hi5 and Myspace >> > applications never took off the way Facebook ones did (traffic too, to >> > be fair). >> > >> > Still, practically speaking I strongly advise you not to use the >> > gadget linker. It's old, barely supported (seriously, look at the >> > change log...), generates very large files (no cute splitting into per- >> > browser components like the normal linker does), and makes several of >> > the powerful GWT features available; specifically RPC, code splitting, >> > debugging and resource bundles. >> > >> > Still, you know. It's kind of fun for tooling around and making little >> > bits and pieces with I guess. >> > >> > Regarding the wave container... I suspect we're re-inventing the >> > wheel; I wonder if it wouldn't be a better plan to implement an >> > independent wave client container on top of shindig (http:// >> > shindig.apache.org/) ... >> > >> > ~ >> > Doug. >> > >> > On Feb 11, 10:32 am, Jonas Huckestein <[email protected]> wrote: >> > >> > > Hi Doug, >> > >> > > nice, I didn't think of using a normal GWT application as a wave >> > > gadget like that before. But I think that is just a way of manually >> > > doing what the Gadget API for GWT is doing for you. >> > >> > > What you said about being able to see two different views of the >> > > gadget side by side in local testing is easily accomplished in >> > > WaveConnector (actually it's the primary design goal). We can view two >> > > versions of the Gadget (which is no more than a GWT widget) side by >> > > side in a browser. All we need to do is give them two different >> > > eventBuses (to prevent them from interfering with one another) and >> > > make sure that wave-related events are shared across the buses. (more >> > > generally using singletons in the GWT widget might cause problems). >> > >> > > I don't think there is need to include a server in order to test the >> > > gadget with more than one participant :) >> > >> > > We can also add a user interface to add/remove participants, switch >> > > the wave mode etc.. I will try to get this done next week. >> > >> > > Thanks for your feedback. I'm glad you liked it! >> > >> > > Cheers, Jonas >> > >> > > On Feb 10, 6:08 pm, dougx <[email protected]> wrote: >> > >> > > > Mmm... did you realize you can use a normal GWT application in wave >> as >> > > > a gadget? >> > >> > > > All you need is a frame: >> > > > <?xml version="1.0" encoding="UTF-8" ?> >> > > > <Module> >> > > > <ModulePrefs title="State Example" height="220"> >> > > > <Require feature="wave" /> >> > > > </ModulePrefs> >> > > > <Content type="html"> >> > > > <![CDATA[ >> > > > <html> >> > > > <head> >> > > > <meta http-equiv="content-type" content="text/html; >> > > > charset=UTF-8"> >> > > > <script type="text/javascript" src="http://xxx.appspot.com/xxx/ >> > > > xxx.nocache.js"></script> >> > > > <link type="text/css" rel="stylesheet" href="http:/ >> xxx.appspot.com/ >> > > > xxx/xxx.css"> >> > > > <title>Jewels</title> >> > > > </head> >> > > > <body> >> > > > </body> >> > > > </html> >> > > > ]]> >> > > > </Content> >> > > > </Module> >> > >> > > > Then use the cross domain compiler to compile the code (this is >> > > > actually exactly what it's for...): >> > > > <?xml version="1.0" encoding="UTF-8"?> >> > > > <!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit >> 1.7.0// >> > > > EN" " >> http://google-web-toolkit.googlecode.com/svn/tags/1.7.0/distro- >> > > > source/core/src/gwt-module.dtd"> >> > > > <module rename-to='xxx'> >> > > > <inherits name='com.google.gwt.user.User'/> >> > > > <inherits name='com.google.gwt.user.theme.standard.Standard'/> >> > > > <entry-point class='com.hax.wave.xxx.client.XXXWidget'/> >> > > > <add-linker name="xs"/> <-- You _must_ include this step to access >> > > > teh wave API. >> > > > </module> >> > >> > > > And finally, use JSNI to access the wave api: >> > > > public static native boolean isInWaveContainer() throws Exception >> /*-{ >> > > > var rtn = false; >> > > > if (($wnd.wave) && ($wnd.wave.isInWaveContainer())) >> > > > rtn = true; >> > > > return(rtn); >> > >> > > > }-*/; >> > >> > > > ... >> > >> > > > So yeah. Might find that helpful. Note that in 2.0 you can't debug >> > > > using the xs linker, so you'll need to comment that line out while >> > > > you're developing your widget, and then put it back when you do a >> > > > deployment build. >> > >> > > > That wave connector is very cool; nice work! :) >> > >> > > > Hm... I wonder if we could add an app engine based data store based >> > > > state so just when you're debugging locally you can have two browser >> > > > windows open and it'll treat those as different viewers of the >> gadget, >> > > > so you can do full testing. That'd involve defining separate servlet >> > > > end points though; perhaps it'd be better as a separate gwt >> > > > application, and you can include it on your testing pages... >> > >> > > > ~ >> > > > Doug. >> > >> > > > On Feb 11, 7:42 am, Jonas Huckestein <[email protected]> >> wrote: >> > >> > > > > Hi Everybody, >> > >> > > > > I have just released WaveConnector - a turnkey solution for >> developing >> > > > > wave gadgets using GWT and testing them in hosted mode. Please >> head >> > > > > over to my blog athttp://thezukunft.comortheprojectpage athttp:// >> code.google.com/p/waveconnector-gwt/fordetails. It's as easy >> > > > > as downloading a zip archive :D >> > >> > > > > Chris, how di you achieve the 90%? I assume you must also decouple >> the >> > > > > GWT code from the Gadget/Wave API? I have simply implemented a >> mock >> > > > > version of the wave API. That way I think I can do all testing >> > > > > locally. >> > >> > > > > Kayode, WaveConnector is exactly the mock framework (+ some >> > > > > convenience functions) I was talking about :) >> > >> > > > > Sorry for this shameless selfpromotion on this board but I think >> this >> > > > > might actually help a lot of people or get them to develop for >> Wave in >> > > > > the first place. >> > >> > > > > What do all of you think of a dedicated Wave+GWT group? I asked >> that >> > > > > question on the GWT groups earlier and people seemed to be >> interested. >> > >> > > > > Cheers, Jonas >> > >> > > > > This is my first ever open source contribution so please give me >> > > > > comments and feedback on my blog or the project page. >> > >> > > > > On Feb 10, 2:07 am, HaiColon <[email protected]> wrote: >> > >> > > > > > What I do is I write the gadget in a way that makes it work both >> > > > > > locally (or as a website on a remote server) and then I add a >> layer on >> > > > > > top that makes it work with Google Wave. That way I can test 90% >> of >> > > > > > the gadget locally, no problem. And for the other 10% I just use >> the >> > > > > > debug features of the sandbox Wave client. That has worked good >> so far >> > > > > > even for bigger/more involved gadgets and the bonus is that your >> > > > > > gadget then doesn't need to be Wave exclusive. >> > >> > > > > > If you'd want to use a test-driven development approach you >> could only >> > > > > > test this 90% non-Wave part of the application but none of the >> Google >> > > > > > Wave specific stuff in the other 10%, so this approach may not >> be good >> > > > > > enough for everyone. >> > >> > > > > > Cheers, >> > > > > > Chris >> > >> > > > > > On Feb 9, 6:52 am, Jonas Huckestein <[email protected]> >> wrote: >> > >> > > > > > > Hi guys, >> > >> > > > > > > so I just started developing Wave Gadgets and I'm currently >> using GWT. >> > > > > > > While there are obvious benefits such as unit testability, >> cross- >> > > > > > > browser support and code-splitting, there are also some >> downsides. For >> > > > > > > instance I cannot easily test gadgets locally (not to mention >> testing >> > > > > > > robots!). I had to create a local mock implementation of the >> wave API >> > > > > > > for testing and every time I use a new API feature I have to >> add it to >> > > > > > > my mock implementation. All in all it feels kind of clunky and >> > > > > > > strange. >> > >> > > > > > > Are there any easier ways to develop (possibly very complex) >> wave >> > > > > > > gadgets? What do you guys use? >> > >> > > > > > > In case you are interested, I wrote a tutorial in how to get >> started >> > > > > > > developing gadgets with gwt. Also, I guess I will be uploading >> my >> > > > > > > WaveMock framework to Google Cloud this week (if anybody is >> > > > > > > interested): >> > >> > > > > > > >> http://thezukunft.com/2010/02/08/a-wave-gadget-robot-using-gwt-2-0-an... >> > >> > > > > > > Cheers, Jonas >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Google Wave API" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]<google-wave-api%[email protected]> >> . >> For more options, visit this group at >> http://groups.google.com/group/google-wave-api?hl=en. >> >> > > > -- > Odeyemi 'Kayode O. > > Application Developer & Systems Engineer (Sun Certified Professional), > Drupal Developer > > Tel: +2348053063373 > P.O.Box 682, Ita-elewa, Ikorodu, > Lagos, Nigeria, West-Africa. > > Website: http://www.sinati.com > Socialize with me: http://profile.to/charyorde, > http://twitter.com/charyorde > > -- Odeyemi 'Kayode O. Application Developer & Systems Engineer (Sun Certified Professional), Drupal Developer Tel: +2348053063373 P.O.Box 682, Ita-elewa, Ikorodu, Lagos, Nigeria, West-Africa. Website: http://www.sinati.com Socialize with me: http://profile.to/charyorde, http://twitter.com/charyorde -- You received this message because you are subscribed to the Google Groups "Google Wave API" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-wave-api?hl=en.
