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.