Thanks a lot, André. I wasn't 'brave' enough to inspect what Panel.adopt(Widget) does, but if calling Widget.onAttach() is the trick then it isn't that bad after all. :P
Thank you very much! Best regards J. Záruba 2010/6/19 André Moraes <[email protected]> > Jaroslav, this code does more or less what you want. > > package br.com.andre.gwt.samples.client; > > import com.google.gwt.core.client.EntryPoint; > import com.google.gwt.dom.client.Element; > import com.google.gwt.event.dom.client.ClickEvent; > import com.google.gwt.event.dom.client.ClickHandler; > import com.google.gwt.user.client.Window; > import com.google.gwt.user.client.ui.Button; > import com.google.gwt.user.client.ui.RootPanel; > > /** > * Entry point classes define <code>onModuleLoad()</code>. > */ > public class Samples implements EntryPoint { > @Override > public void onModuleLoad() { > MyButton button = new MyButton("<h1> this is a nice > html</h1>"); > Element htmlEl = button.getElement(); > > button.addClickHandler(new ClickHandler() { > > @Override > public void onClick(ClickEvent event) { > Window.alert("Houston We have lift-off!"); > } > }); > > RootPanel myRoot = RootPanel.get("placeholder"); > if (myRoot != null) { > Element myRootParent = > myRoot.getElement().getParentElement(); > if (myRootParent != null) { > myRootParent.insertAfter(htmlEl, > myRoot.getElement()); > > myRootParent.removeChild(myRoot.getElement()); > } > } > > button.attach(); > > } > > public class MyButton extends Button { > > public MyButton(String html) { > super(html); > } > > public void attach() { > this.onAttach(); > > RootPanel.detachOnWindowClose(this); > } > } > } > > I used the Idea which was implemented in the method wrap of the Button > class > > Button.wrap(element); > > As far as i read the docs, the onAttach() allows the element to start > receiving events from the browser. > > Hope it helps, > > > On 19 jun, 13:27, Jaroslav Záruba <[email protected]> wrote: > > I'm creating widget that is supposed to check whether there's an <a/> > > element with known id in the page. If the element is found my widget > reads > > the href attribute and loads stuff from that URL, then displays > > the (processed) content exactly where user indicated by that <a/>. > (Placing > > my widget into <a/> has several obvious side-effect I don't like.) > > If the element is not found then the link works as usually. > > > > Is the fact that this is impossible to do a mere result of 'no one > thought > > anyone would need that'? :) > > > > 2010/6/19 Jaroslav Záruba <[email protected]> > > > > > > > > > 2010/6/19 André Moraes <[email protected]> > > > > > Jaroslav, > > > > >> Maybe instead of reaplacing you delete than insert again the element?! > > > > > I don't understand. What would be the benefit? :) > > > Let's say the placeholder element was third node within its parent. How > can > > > I place my widget in its place? > > > (I do apologize, I'm still new to GWT.) > > > > >> I think that the problem of not getting Clicks is because of the way > > >> GWT handles clicks. > > > > > I believe I would have to call Panel.adopt(widget), judging by > > > GWT-sources... Unfortunately RootPanel does not expose adopt. :( > > > > >> Another approach will be make that placehoder element be an actual GWT > > >> Widget (FlowPanel is simply a DIV) and then you add your widgets to > > >> that panel. > > > > > I only know id of the placeholder element, I'm not creating it, > therefore I > > > can't make it a Widget. > > > After a widget is created it should replace that element and the > element > > > should go to eternity. > > -- > 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.
