2010-01-14 17 views
1

Je veux désactiver/activer l'interaction utilisateur (clic de souris plus specificly) sur de nombreux widgets comme lien hypertexte, bouton, etc qui sont contenus dans un matériau composite (flextable)Désactiver l'interaction de l'utilisateur dans un conteneur GWT?

il y a plus d'un des gestionnaires de clic, et je n » t veulent embêter avec la suppression et l'ajout d'auditeurs en fonction du mode (interaction activée/désactivée)

Toutes les idées appriciated ...

+1

mettre un "écran de protection"? c'est-à-dire un conteneur transparent sur le dessus qui bloque l'interaction. juste mes 2cents. – jldupont

Répondre

5

Vous avez oublié de mentionner la version de GWT. Dans GWT 2.0, vous pouvez utiliser cet extrait de code ou quelque chose de similaire. Cette fonctionnalité vous permet d'annuler des événements avant qu'ils ne soient transmis au widget cible.

 
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(); 
        } 
       } 
      }); 
+0

Dans GWT 1.x il y avait quelque chose de similaire disponible (mais j'oublie la classe/méthode/écouteur exact, 2.0 est vraiment beaucoup mieux) –

+0

J'utilise GWT 2.0, c'est proche de ce que je veux, mais pas exactement. Y at-il un moyen que je puisse intercepter par exemple, Event.ONCLICK et désactiver tous les autres écouteurs –

+0

Eh bien, vous pouvez accéder à l'événement réel avec

 pEvent.getNativeEvent(); 
et sur cet objet, vous pouvez obtenir le type et voir si c'est un type ClickEvent . –

1

Il y a un GlassPanel compoent dans google-web-boîte à outils-incubateur. Je suis presque sûr qu'il fait ce dont vous avez besoin. De toute façon, c'est une bonne idée de couvrir un composant désactivé avec l'un d'entre eux.

+0

+1 J'allais aussi recommander GlassPanel. –

+0

Je considère cela mais, je préfère mieux un moyen que l'utilisateur ne peut pas surmonter avec Firebug :) –