Add only *your* click handler on the image, and add the others use 
addHandler (*not* addDomHandler), then from your click handler, either fire 
the event on the widget to trigger the "external" click handlers, or ignore 
it.

On Monday, November 19, 2012 10:19:53 PM UTC+1, Thomas Lefort wrote:
>
> I have potentially several click handlers on a widget. The first one is 
> used to capture click events on an image (then the event is fired on the 
> image) within the widget and created at creation time. The other ones are 
> added "outside" of the widget's code.
>
> I would like to cancel (not remove) the other handlers if it's the image 
> that is being clicked but I just can't find a way to do so. Any help would 
> be appreciated.
>
> Here's the code I use... for some reason if I don't capture teh click and 
> fire the event on the image (in the constructor) it just doesn't trigger 
> the event. May be if I can solve that problem another way to start with? I 
> have the feeling the issue comes form the DOM.appendChild.
>
> public class IconAnchorActions extends IconAnchor {
>
>     private List<Image> actions = new ArrayList<Image>();
>
>     public IconAnchorActions(){
>         super();
>         addClickHandler(new ClickHandler() {
>             
>             @Override
>             public void onClick(ClickEvent event) {
>                 for(Image image : actions) {
>                     
> if(event.getNativeEvent().getEventTarget().equals(image.getElement())) {
>                         image.fireEvent(new GwtEvent<ClickHandler>() {
>                             @Override
>                             public 
> com.google.gwt.event.shared.GwtEvent.Type<ClickHandler> getAssociatedType() 
> {
>                                 return ClickEvent.getType();
>                             }
>                             @Override
>                             protected void dispatch(ClickHandler handler) {
>                                 handler.onClick(null);
>                             }
>                         });
>                         event.stopPropagation();
>                         return;
>                     }
>                 }
>             }
>         });
>     }
>     
>     public void addClickAction(ImageResource imageResource, ClickHandler 
> clickHandler, boolean left) {
>         Image image  = new Image(imageResource);
>         actions.add(image);
>         
> image.getElement().getStyle().setVerticalAlign(VerticalAlign.MIDDLE);
>         if(left) {
>             image.getElement().getStyle().setFloat(Float.LEFT);
>             span.getStyle().setMarginLeft(5, Unit.PX);
>         } else {
>             image.getElement().getStyle().setFloat(Float.RIGHT);
>             span.getStyle().setMarginRight(5, Unit.PX);
>         }
>         image.getElement().getStyle().setCursor(Cursor.POINTER);
>         image.addClickHandler(clickHandler);
>         DOM.appendChild(getElement(), image.getElement());
>     }
>     
> }
>
>

-- 
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/-/wMBr7vOenXAJ.
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