The way I'm doing it will be to have the dependency injection
framework create a SuggestOracle. Then have the view be injected with
that oracle:

@Inject
MyView(MySuggestOracle oracle) {
  this.suggestBox = new SuggestBox(oracle);

  ...
}

Seems like a fairly simple solution, and does not require the use of
setter methods.

On Dec 21, 12:41 pm, Nathan Wells <nwwe...@gmail.com> wrote:
> The way (I think) we do it is our View has a method:
>
> <pre>
> HasText getSuggestBox(SuggestOracle oracle) {
>     if (oracle != this.oracle || this.suggestBox == null)
>         //create a new suggest box with the oracle
>         createOrReplaceSuggestBox(oracle);
>     }
>     return suggestBox;}
>
> </pre>
>
> This way everything stays separate. you can also include a no-args
> getSuggestBox method that might call this one with a default, or
> simply return the suggestBox field (though that would have the obvious
> possibility of returning null.
>
> On Dec 21, 7:52 am, Paul Robinson <ukcue...@gmail.com> wrote:
>
>
>
> > Another option is to create a SuggestOracle subclass that delegates
> > method calls to another object (perhaps another oracle). Make the first
> > oracle have get/set methods to set the delegatee.
>
> > FKereki wrote:
> > > If I understand it correctly, that poses a chicken-and-egg problem,
> > > because the Presenter constructor requires a View, and the View
> > > constructor would require something created by the Presenter? With
> > > MVP, I first create a View, and then inject it into the Presenter. If
> > > the View requires an oracle, then I must create the Presenter first --
> > > but in that case I cannot inject the View!?
>
> > > I solved this --and am not happy about it-- by (1st) creating the
> > > View, WITHOUT the SuggestBox, (2nd) injecting the View into the
> > > Presenter, and (3rd) having the Presenter create the oracle and
> > > provide it to the View, so the latter can add the missing SuggestBox.
> > > While this does work, it goes against UiBinder; the best I can do is
> > > to reserve a space for the SuggestBox, and I cannot get to use
> > > @UiHandler annotations.

--

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