Solution #1 doesn't work for me. I get this error:

Second attempt to set initializer for field "f_DialogBox1", from "new
com.google.gwt.user.client.ui.DialogBox(false, true)" to
"owner.thatsJustMe()"

Hints or suggestions?


On Tue, Feb 9, 2010 at 5:44 PM, Thomas Broyer <[email protected]> wrote:

>
> On Feb 9, 12:00 pm, Ovidiu Gheorghies <[email protected]> wrote:
> > Hello,
> >
> > The DialogBox API (http://google-web-toolkit.googlecode.com/svn/
> > javadoc/2.0/com/google/gwt/user/client/ui/DialogBox.html) notes that a
> > DialogBox can be defined as a UIBinder template as follows:
> >
> >  <g:DialogBox autoHide="true" modal="true">
> >    <g:caption><b>Caption text</b></g:caption>
> >    <g:HTMLPanel>
> >      Body text
> >      <g:Button ui:field='cancelButton'>Cancel</g:Button>
> >      <g:Button ui:field='okButton'>Okay</g:Button>
> >    </g:HTMLPanel>
> >  </g:DialogBox>
> >
> > What is the proper way of using this definition from Java code?
> > Supposing that the above definition is contained in
> > NotificationWindow.ui.xml, the following naive approach to
> > NotificationWindow.java does not work:
> >
> > public class NotificationWindow extends Composite {
> >         private static NotificationWindowUiBinder uiBinder =
> > GWT.create(NotificationWindowUiBinder.class);
> >         interface NotificationWindowUiBinder extends UiBinder<Widget,
> > NotificationWindow> {}
> >
> >         @UiField DialogBox dialogBox;
> >
> >         public NotificationWindow() {
> >                 initWidget(uiBinder.createAndBindUi(this));
> >         }
> >
> >         public void show() {
> >             dialogBox.show();
> >     }
> >
> > }
> >
> > If the EntryPoint-derived class calls:
> >
> > (new NotificationWindow()).show();
> >
> > then the following exception is logged:
> >
> > java.lang.IllegalStateException: This widget's parent does not
> > implement HasWidgets
> >
> > How is the <g:DialogBox> definition from the DialogBox API used
> > correctly from Java code?
>
> There are two possibilities: inheriting DialogBox or having a
> DialogBox field (but then not inheriting a Widget).
>
> Solution #1: inheriting a DialogBox
>
> class NotificationWindow extends DialogBox {
>   ...
>
>   public NotificationWindow() {
>     // we don't care about the returned value, it'll be 'this'
>     uiBinder.createAndBindUi(this);
>   }
>
>   @UiFactory
>   DialogBox thatsJustMe() {
>      // UiBinder will call this to get a DialogBox instance
>      // and this is the DialogBox instance we want to use
>      return this;
>   }
>
>   ...
> }
>
>
> Solution #2: not inheriting DialogBox
>
> // Note: do NOT inherit Composite, Widget or UIObject!
> class NotificationWindow {
>   ...
>
>   private DialogBox dialogBox;
>
>   public NotificationWindow() {
>      dialogBox = uiBinder.createAndBind(this);
>    }
>
>   public void show() {
>      dialogBox.show();
>   }
>
>    ...
> }
>
> --
> You received this message because you are subscribed to the Google Groups
> "Google Web Toolkit" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<google-web-toolkit%[email protected]>
> .
> 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 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-web-toolkit?hl=en.

Reply via email to