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.
