Wednesday, April 25, 2012

Re: Activity how to react on event that is triggered in start-method

Ok so either i use Scheduler and loose test ability or i refactor and use a delegate/handler as used in async-services, right? (no answer means yes :-))

On Wednesday, 25 April 2012 09:11:22 UTC+2, Chris Price wrote:
I think your only two choices are to either avoid the event bus for
the async data call, or as you suggest with the Scheduler.

On Wed, Apr 25, 2012 at 7:54 AM, tanteanni  wrote:
>
> Thanks!
> I understand (some time ago i had a similar problem but in my "main"-Class -
> it didn't react on first place change event)
> but the solution is ugly:
> ...Scheduler.get().scheduleFinally(new ScheduledCommand()...
>
> is there another way to get this working? i need the dataModel in start to
> restore the state given by place.
>
>
> On Wednesday, 25 April 2012 08:21:58 UTC+2, Chris Price wrote:
>>
>> Ah yes, the code you pasted exactly fits the problem I described. The
>> activity start method is called by the ActivityManager from within the
>>  PlaceChangeEvent.Handler [1]. The SimpleEventBus, uses deferred
>> methods to only apply changes to the handler lists after the current
>> round of events have fired [2]. i.e. if you are currently in a
>> handler, add a handler and then immediately fire that event, your
>> handler won't be called.
>>
>> [1]
>> http://code.google.com/p/google-web-toolkit/source/browse/branches/2.1/bikeshed/src/com/google/gwt/app/place/ActivityManager.java?r=8009#85
>> [2]
>> http://code.google.com/p/google-web-toolkit/source/browse/trunk/user/src/com/google/web/bindery/event/shared/SimpleEventBus.java#156
>>
>> On Wed, Apr 25, 2012 at 7:11 AM, tanteanni wrote:
>>
>>
>> > i think this is not the problem. first i register for event then i fetch
>> > the
>> > data that triggers the event. here is the code of start method:
>> >
>> >     @Override
>> >     public final void start(final AcceptsOneWidget panel, final
>> > com.google.gwt.event.shared.EventBus eventBus) {
>> >         this.eb = new ResettableEventBus(eventBus);
>> >         view.setPresenter(this);
>> >         this.eb.addHandler(DynamicTableHashResolvedEvent.TYPE,
>> > this);//handler registration
>> >         stateResolver.resolveState(((DynamicTablePlace)
>> > pc.getWhere()).getTablehash(), eb);//triggers event
>> >         panel.setWidget(view);
>> >     }
>> >
>> > the event triggered in start method will be received when next event is
>> > triggered - so after the start method i am one event too "late".
>> >
>> >
>> > On Tuesday, 24 April 2012 19:19:28 UTC+2, Chris Price wrote:
>> >>
>> >> Does your data fetch include the event bus in some way? If so you may
>> >> be
>> >> running into the problem that handler changes (adds/removes) are only
>> >> applied after the current event has completed. In this case that event
>> >> would
>> >> be the place change eventually calling the activity start.
>> >>
>> >> Sorry for the lack of references, im not at a pc
>> >>
>> >> On 24 Apr 2012 14:49, "tanteanni" wrote:
>> >>
>> >>> i have an activity that needs another class to resolve the state (ids
>> >>> to
>> >>> real objects) brought by current place. this class'
>> >>> "getData(StateObject)"
>> >>> is called within start-method right after registering for the class'
>> >>> gotData-event. But the activitie's onGotData-data method isn't called
>> >>> the
>> >>> first time. If the activity calls getData after the start method all
>> >>> works
>> >>> fine.
>> >>> i have the feeling that this can't work but how to get it working? The
>> >>> data class need an object provided by a special kind of place (the
>> >>> same
>> >>> place as the activity starts on).
>> >>>
>> >>> --
>> >>> You received this message because you are subscribed to the Google
>> >>> Groups
>> >>> "Google Web Toolkit" group.
>> >>> To view this discussion on the web visit
>> >>> https://groups.google.com/d/msg/google-web-toolkit/-/6MNHc8yNbm0J.
>> >>> To post to this group, send email to
>> >>> google-web-toolkit@googlegroups.com.
>> >>> To unsubscribe from this group, send email to
>> >>> google-web-toolkit+unsubscribe@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 view this discussion on the web visit
>> > https://groups.google.com/d/msg/google-web-toolkit/-/BLVNKJReNVAJ.
>> >
>> > To post to this group, send email to
>> > google-web-toolkit@googlegroups.com.
>> > To unsubscribe from this group, send email to
>> > google-web-toolkit+unsubscribe@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 view this discussion on the web visit
> https://groups.google.com/d/msg/google-web-toolkit/-/ttj2N8rpsIIJ.
>
> To post to this group, send email to google-web-toolkit@googlegroups.com.
> To unsubscribe from this group, send email to
> google-web-toolkit+unsubscribe@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 view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/oXUpaR5fzNIJ.
To post to this group, send email to google-web-toolkit@googlegroups.com.
To unsubscribe from this group, send email to google-web-toolkit+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.

No comments:

Post a Comment