Moving this thread to the general GWT forum, where I've written a bit more about it:
http://groups.google.com/group/google-web-toolkit/browse_thread/thread/2ed199a42c500156/b54c0c00cd73ed8f#b54c0c00cd73ed8f /dmc On Thu, Oct 21, 2010 at 12:32 PM, Aigeec <[email protected]> wrote: > Hey guys, > > Thanks David for your thoughts on how it could be implemented. > > Perhaps you could provide an example of using the > PlaceHistoryMapperWithFactory. > > Regards, > > Aodhagán > > On Oct 20, 7:02 pm, David <[email protected]> wrote: >> Why not include Gin in GWT 2.1 ? It could maybe be useful inside the >> GWT codebase as well ? >> >> >> >> >> >> >> >> On Wed, Oct 20, 2010 at 5:32 PM, David Chandler <[email protected]> >> wrote: >> > Hmmm, I see my comments about GIN in the ActivityMapper have caught up >> > with me. I haven't worked this out fully yet, but was thinking of >> > something along the lines of gwt-presenter's <a >> > href="http://code.google.com/p/gwt-presenter/source/browse/src/main/java/ne...">PresenterPlace</a>. >> > My thought is to use GIN in place of the ClientFactory, and to write >> > ActivityMapper.getActivity() like this: >> >> > public Activity getActivity(Place place) { >> > if (place instanceof ActivityPlace) >> > { >> > return ((ActivityPlace) place).getActivity(); >> > } >> > } >> >> > where an ActivityPlace would be obtained from a GIN-aware >> > PlaceHistoryMapperWithFactory implementation so it can be injected >> > with the EventBus, etc. >> >> > On Wed, Oct 20, 2010 at 8:54 AM, Aigeec <[email protected]> wrote: >> >> Hey Guys, >> >> >> I am also interested in an implementation of GWT 2.1 MVP using GIN. >> >> >> I have made some head way with it. >> >> >> This has been done mostly by extending the ActivityManager, >> >> PlaceController and PlaceHistoryHandler classes and overriding their >> >> constructors to use GIN injection. I don't know if this is the correct >> >> implementation and if anyone has comments please let me know. But I >> >> have been able to remove the need for the ClientFactory and use GIN >> >> injection to instantiate everything but the Activity classes. >> >> >> However, I do not know how to tackle the ActivityMapper class. >> >> >> As Tolga says how do we replace the nested if statement with a GIN >> >> module? >> >> >> I would much prefer to be able to instantiate the Activity Class this >> >> way as I am using the SecureDispatchAsync as would like to use DI to >> >> pass it to the Activity. >> >> >> Regards, >> >> >> Aigeec >> >> >> On Oct 20, 1:31 am, Tolga Tarhan <[email protected]> wrote: >> >>> Folks, >> >> >>> I'm trying to make GWT 2.1 MVP work nicely with GIN. It looks like this >> >>> use >> >>> case was specifically considered when >> >>> creating PlaceHistoryMapperWithFactory, but no such thing seems to exist >> >>> for >> >>> ActivityMapper. There is a passing reference to using Gin in >> >>> DevGuideMvpActivitiesAndPlaces.html , where it says "... ClientFactory is >> >>> used by HelloActivity to obtain a reference to the HelloView as well as >> >>> the >> >>> EventBus and PlaceController. Any of these could alternatively be >> >>> injected >> >>> via GIN." and also when it says "A better way to implement the chain of >> >>> nested ifs would be with a GIN module", in reference to ActivityMapper. >> >> >>> The problem, however, is that we cannot both inject application-level >> >>> objects (EventBus, PlaceController, etc) and also pass the Place as >> >>> constructor arguments to the Activity. We could have all of the >> >>> dependencies >> >>> for every Activity (like all the views) injected into our ActivityMapper >> >>> and >> >>> pass them thru, but this leaks a lot of details into what should be a >> >>> very >> >>> simple mapper class. If done incorrectly, it would also cause >> >>> code-splitting >> >>> issues. >> >> >>> One way around this is to inject a Provider<MyActivity> or >> >>> AsyncProvider<MyActivity> in the ActivityMapper and then do something >> >>> like >> >>> myActivityProvider.get().initPlace(place) - which is like the assisted >> >>> injection that's discussed in the Guice docs. I'm wondering if there's a >> >>> more elegant way that was considered? >> >> >>> Additionally, I'm not sure I understand how to "implement the chain of >> >>> nested ifs" in a GIN module. This sounds like a great idea, but what did >> >>> you >> >>> have in mind to make GIN do this for us? We can have GIN differentiate >> >>> on a >> >>> bunch of things (annotations, generics, interfaces, etc), but I don't >> >>> know >> >>> how you could replace the if-block with GIN. Could someone point me in >> >>> the >> >>> right direction here? >> >> >>> Thanks, >> >>> Tolga >> >> >> -- >> >>http://groups.google.com/group/Google-Web-Toolkit-Contributors >> >> > -- >> > David Chandler >> > Developer Programs Engineer, Google Web Toolkit >> >http://googlewebtoolkit.blogspot.com/ >> >> > -- >> >http://groups.google.com/group/Google-Web-Toolkit-Contributors > > -- > http://groups.google.com/group/Google-Web-Toolkit-Contributors > -- David Chandler Developer Programs Engineer, Google Web Toolkit http://googlewebtoolkit.blogspot.com/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
