Thanks Thomas. Unfortunately i cannot prevent the use of addDomHandler on the widget.
Sent from my iPad On 19/11/2012, at 22:29, Thomas Broyer <[email protected]> wrote: > 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. -- 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.
