views:

111

answers:

2

I want to disable/enable user interaction (mouse click more specificly) on many widgets like hyperlink, button, etc which are contained in a composite (flextable)

there are more than one click handlers, and I don't want to bother with removing and adding listeners according to mode (interaction enabled/disabled)

Any ideas would be appriciated...

+4  A: 

You forgot to mention the version of GWT. In GWT 2.0 you can use this code snippet or something similar. This feature allows you to cancel events before they are handed over to the target widget.

Event.addNativePreviewHandler(new Event.NativePreviewHandler() {
                public void onPreviewNativeEvent(NativePreviewEvent pEvent) {
                    final Element target = pEvent.getNativeEvent().getEventTarget().cast();

                    // block all events targetted at the children of the composite.
                    if (DOM.isOrHasChild(getElement(), target)) {
                        pEvent.cancel();
                    }
                }
            });
David Nouls
In GWT 1.x there was something similar available (but I forget the exact class/method/listener, 2.0 is really much better)
David Nouls
I am using GWT 2.0, this is close to what I want, but not the exactly. Is there a way I can intercept for instance, Event.ONCLICK and disable all other listeners
dkberktas
Well, you can get access to the actual event with<pre>pEvent.getNativeEvent();</pre>and on that object you can get the type and see if it is an ClickEvent Type.
David Nouls
+1  A: 

There is a GlassPanel compoent in google-web-toolkit-incubator. I am almost sure it does what you need. Either way, it is a good idea to cover a disabled component whit one of these.

ciczan
+1 I was going to recommend GlassPanel as well.
Jack Leow
I consider this but, I better prefer a way that user cannot overcome with Firebug :)
dkberktas