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.