how add a click listener handler on an gwt frame ( solved ) :
We can't wrap a widget around an element from an iframe but we can add it 
to the event listener.

public class CustomFrame extends Frame {
public CustomFrame(){
sinkEvents(Event.ONLOAD);
setUrl("http://127.0.0.1:8888/test.html";);
setSize("900px","900px");
}
 private void init(){
IFrameElement iframe = IFrameElement.as(this.getElement());
Document iframeDocument = iframe.getContentDocument();
Element el = (Element) iframeDocument.getElementById("testiframe");
Event.setEventListener(el, new EventListener() {
@Override
public void onBrowserEvent(Event event) {
Window.alert("CLIIIICKKK : "+event.getTarget().getId());
}
});
Event.sinkEvents(el, Event.ONCLICK);
}

public void onBrowserEvent(Event event){
super.onBrowserEvent(event);
        switch (DOM.eventGetType(event)){
        case Event.ONLOAD:
        init();
            DOM.eventPreventDefault(event);
            break;
        }
    }    
}

Thanks Fabio for your help. 

On Sunday, October 28, 2012 11:41:13 AM UTC-5, Hugues wrote:
>
> Ok i see why , look at the source code of anchor : 
> public static Anchor wrap(Element element) {
>     // Assert that the element is attached.
>     assert Document.get().getBody().isOrHasChild(element);
>
> This element is not a child of the main Document .... So this wrap can't 
> work
>
> On Sunday, October 28, 2012 11:37:15 AM UTC-5, Hugues wrote:
>>
>> In fact it does not work :-/
>>
>> I don't understand. In my debug i see the correct element but the wrap 
>> fail. I suppose the wrap fail because the element is not attached to the 
>> main DOM. 
>> Is it possible in gwt to wrap an element from an iframe as widget 
>> attached to the main module ?
>>
>> Element currentElement = this.getElement();
>> IFrameElement iframe = IFrameElement.as(currentElement);
>>  Document iframeDocument = iframe.getContentDocument();
>>  Element el= (Element) iframeDocument.getElementById("testiframe");
>>      final Anchor testButton = Anchor.wrap(el);
>>      testButton.addClickHandler(new ClickHandler() {
>> public void onClick(ClickEvent event) {
>> Window.alert("CLIIIICKKK ");
>> }
>> });
>>
>>
>>
>> On Sunday, October 28, 2012 2:40:22 AM UTC-5, Fabio wrote:
>>>
>>>  Well, if it works good for you...
>>>
>>> But if you created a ScriptElement with the function test equal to i.e. 
>>> "function clickMe { window.alert("Click")}"
>>> and then on the ButtonElement you set the value i.e. 
>>> setValue("clickMe()") it worked as well....
>>>
>>> anyway
>>>
>>> you're welcome!!!!
>>>
>>> Il 28/10/2012 01:29, Hugues ha scritto:
>>>  
>>> Just to let you know i tried something like that : 
>>> The wrap work perfectly with an element of the current dom but with an 
>>> element i get from the iframe it does not work
>>>
>>>  Code sample :
>>>
>>>  IFrameElement iframe = IFrameElement.as(this.getElement());
>>> Document iframeDocument = iframe.getContentDocument();
>>> Element el = (Element) iframeDocument.getElementById("myhrefElement");
>>> Anchor testButton = Anchor.wrap(el);
>>> testButton.addClickHandler(new ClickHandler() {
>>>  public void onClick(ClickEvent event) {
>>>  Window.alert("CLIIIICKKK ");
>>>  }
>>> });
>>>  
>>>  By the way , thanks for your help
>>>
>>> On Saturday, October 27, 2012 4:58:16 PM UTC-5, Fabio wrote: 
>>>>
>>>>  EXACTLY
>>>>
>>>> get the Document, creaate a ButtonElement from the Document.
>>>> But you must also create a ScriptElement and set the text of the 
>>>> function and then call click from the ButtonElement
>>>>
>>>>
>>>>
>>>>
>>>> Il 27/10/2012 23:48, Hugues Lara ha scritto:
>>>>  
>>>> So i should get my Document of my iframe. After i get my div element 
>>>> and to this div element i add a child and this child is a ButtonElement 
>>>> ... 
>>>> I can try that
>>>>
>>>> On Saturday, October 27, 2012 4:46:25 PM UTC-5, Fabio wrote: 
>>>>>
>>>>>  Hi Lara
>>>>>
>>>>> you can not replace the element with your button becasue your Button 
>>>>> is a Widget
>>>>> while the button that you want to put in there must be a ButtonElement
>>>>>
>>>>> why ?
>>>>> because the Widget are used by GWT to translate that code into 
>>>>> javascript.
>>>>> Once translated in javascript work is done.
>>>>> In your case you download a web page with the Frame, then google ALSO 
>>>>> provides mechanism to manipulate html page and Javascript
>>>>> so your html page now must be handled by a reverse engineering and 
>>>>> threat that button as a ButtonElement
>>>>>
>>>>> is that clear ?
>>>>>
>>>>> Il 27/10/2012 23:38, Hugues Lara ha scritto:
>>>>>  
>>>>> To be honest i don't get it at all ... 
>>>>> An other idea was to get the Document of the Iframe. That i got it , i 
>>>>> even find the element i want by parsing the html. 
>>>>> But i dunno how replace this Element by a GWT button attached to my 
>>>>> main module ( I think it's necessary to show my popup ).
>>>>>
>>>>> Thanks,
>>>>>
>>>>> On Saturday, October 27, 2012 4:28:03 PM UTC-5, Fabio wrote: 
>>>>>>
>>>>>>  No you can't do that, but you have to take this other way:
>>>>>>
>>>>>> extending our target, you want to add a Widget, because your button 
>>>>>> is a Widget, into a Document as javascript language provides.
>>>>>> Infact you get a Document made by Elements. 
>>>>>>
>>>>>> So I think you have to use the method appendChild where the child is 
>>>>>> a ButtonElement
>>>>>>
>>>>>> see
>>>>>>
>>>>>>  
>>>>>> http://google-web-toolkit.googlecode.com/svn/javadoc/1.5/index.html?com/google/gwt/dom/client/ButtonElement.html
>>>>>>
>>>>>> so you have to simulate javascript.
>>>>>>
>>>>>> The Button you mean is a Widget and use to CREATE a javascript, in 
>>>>>> that case everything has been already translated into javascript
>>>>>>
>>>>>>
>>>>>> is that clear ?
>>>>>>
>>>>>> Il 27/10/2012 22:56, Hugues Lara ha scritto:
>>>>>>  
>>>>>> Hi, 
>>>>>>
>>>>>>  My goal is to set gwt button inside my iFrame. If I do a 
>>>>>> RootPanel.get("my id").add(myButton) , it don't work because the id is 
>>>>>> inside the iFrame.
>>>>>> I find out how get the Document of the iframe and get the Div Element 
>>>>>> but i still don't know how set a button on this div.
>>>>>>
>>>>>>  Thanks,
>>>>>>
>>>>>> On Saturday, October 27, 2012 3:38:59 PM UTC-5, Fabio wrote: 
>>>>>>>
>>>>>>>  Hi 
>>>>>>>
>>>>>>> did you add a ClickHandler ? it doesnt seems to implements a 
>>>>>>> clickHandler
>>>>>>>
>>>>>>> bye
>>>>>>>
>>>>>>>
>>>>>>> Il 27/10/2012 22:07, Hugues Lara ha scritto:
>>>>>>>  
>>>>>>> Hi, 
>>>>>>>
>>>>>>>  I am actually migrate a web application to GWT. In order to reuse 
>>>>>>> the existing page i put them in frame. However i have to develop a new 
>>>>>>> popup for one of them and i would like to let this popup attached to 
>>>>>>> the 
>>>>>>> main module.
>>>>>>> Before i was parsing the html to get the element and with RootPanel 
>>>>>>> attach a button. I can't do that anymore because it's in an Iframe.
>>>>>>> So i try to fire an event on click inside the iFrame to get the 
>>>>>>> current element and if it's the right button show the popup ...
>>>>>>>
>>>>>>>  The ONLOAD event work pretty well but the ONCLICK don't work at 
>>>>>>> all 
>>>>>>>
>>>>>>>  my code sample : 
>>>>>>>
>>>>>>>  package com.exp.client;
>>>>>>>
>>>>>>>  import com.google.gwt.user.client.DOM;
>>>>>>> import com.google.gwt.user.client.Event;
>>>>>>> import com.google.gwt.user.client.ui.Frame;
>>>>>>> import com.google.gwt.user.client.Window;
>>>>>>>
>>>>>>>  public class CustomFrame extends Frame {
>>>>>>>   public CustomFrame(){
>>>>>>>  sinkEvents(Event.ONCLICK);
>>>>>>>  sinkEvents(Event.ONLOAD);
>>>>>>>  setUrl("http://www.google.com"; <http://www.google.com>);
>>>>>>>  setSize("900px","900px");
>>>>>>>  }
>>>>>>>   public void onBrowserEvent(Event event){
>>>>>>>  super.onBrowserEvent(event);
>>>>>>>         switch (DOM.eventGetType(event))
>>>>>>>         {
>>>>>>>         case Event.ONCLICK:
>>>>>>>             Window.alert("ONCLICK : "+ 
>>>>>>> event.getEventTarget().toString() );
>>>>>>>             DOM.eventPreventDefault(event);
>>>>>>>             break;
>>>>>>>         case Event.ONLOAD:
>>>>>>>         Window.alert("ONLOAD");
>>>>>>>             DOM.eventPreventDefault(event);
>>>>>>>             break;
>>>>>>>         }
>>>>>>>     }
>>>>>>> }
>>>>>>>  
>>>>>>>  Thanks for your help
>>>>>>> -- 
>>>>>>> You received this message because you are subscribed to the Google 
>>>>>>> Groups "Google Web Toolkit" group.
>>>>>>> To view this discussion on the web visit 
>>>>>>> https://groups.google.com/d/msg/google-web-toolkit/-/-_OuFX0mHJUJ.
>>>>>>> To post to this group, send email to google-we...@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.
>>>>>>>
>>>>>>>
>>>>>>>   -- 
>>>>>> You received this message because you are subscribed to the Google 
>>>>>> Groups "Google Web Toolkit" group.
>>>>>> To view this discussion on the web visit 
>>>>>> https://groups.google.com/d/msg/google-web-toolkit/-/9ooi7wPMfIAJ.
>>>>>> To post to this group, send email to google-we...@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.
>>>>>>
>>>>>>
>>>>>>   -- 
>>>>> You received this message because you are subscribed to the Google 
>>>>> Groups "Google Web Toolkit" group.
>>>>> To view this discussion on the web visit 
>>>>> https://groups.google.com/d/msg/google-web-toolkit/-/ThnSB9ylmsQJ.
>>>>> To post to this group, send email to google-we...@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.
>>>>>
>>>>>
>>>>>   -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "Google Web Toolkit" group.
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msg/google-web-toolkit/-/ZRNm0TfdPHMJ.
>>>> To post to this group, send email to google-we...@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.
>>>>
>>>>
>>>>   -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "Google Web Toolkit" group.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msg/google-web-toolkit/-/9_ZN-cin6a8J.
>>> To post to this group, send email to google-we...@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.
>>>
>>>
>>>  

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-web-toolkit/-/lfEU5WOdgMcJ.
To post to this group, send email to google-web-toolkit@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