La création d'une boîte de dialogue modale dans GWT
Je suis un GWT et Java débutant à essayer de comprendre comment créer un synchrones (modal) boîte de dialogue dans GWT, mais je vais avoir de la difficulté. La Boite de classe a un drapeau qui dit:
modal - vrai si le clavier et la souris événements pour les widgets ne sont pas contenues par le dialogue doit être ignorée
Mais qui ne font pas la boîte de dialogue synchrone.
J'ai lu une suggestion qui a dit que j'ai besoin de placer le code qui traite la boîte de dialogue données saisies par l'utilisateur à l'intérieur du bouton OK gestionnaire. Je n'aime pas parce qu'il rend le dialogue responsable de l'affichage des données et le traitement aussi. Il en résulte une mauvaise "la Séparation des Préoccupations" et viole le "Principe de Responsabilité Unique" de la bonne conception.
J'ai placé le code je veux exécuter dans le bouton OK gestionnaire et que vous voulez avoir mon GWT boîte de dialogue utilisée dans deux endroits dans mon code. Dans un cas, les données de l'utilisateur à partir de la boîte de dialogue est ajouté à une table lorsque le bouton OK est pressée. Dans les autres cas, les données dans le tableau est modifié lorsque le bouton OK est pressée. Si je pouvais créer un véritable dialogue synchrone, je pourrais gérer le bouton OK à l'extérieur de la boîte de dialogue quand il revient d'exécution et réutilisé facilement la boîte de dialogue.
Si obligé d'utiliser mon actuel modèle asynchrone, je vais avoir besoin de passer des données supplémentaires, comme décrit ici. Cela semble être beaucoup de travail pour une tâche commune. Ai-je raté quelque chose? Existe-il d'autres options?
Parce que vous avez accepté seulement 25% des réponses que vous avez reçues.
J'ai accepté de 100% de réponses aux questions que j'ai posées. J'ai accepté de 0% des réponses sont incorrectes, ou hors sujet.
OriginalL'auteur Mitch | 2011-08-20
Vous devez vous connecter pour publier un commentaire.
Le modal drapeau fait, fondamentalement, la boîte de dialogue de prendre l'accent de l'INTERFACE utilisateur. Si rien d'autre ne peut être cliqué ou interagi avec l'exception de ce qui est dans la boîte de dialogue.
Malheureusement, comme vous le savez, JavaScript (GWT) est par nature asynchrone dans le navigateur, il n'y a pas de code JS de l'exécution jusqu'à ce que l'utilisateur fait quelque chose pour déclencher un événement. Il est des événements que nous avons à répondre.
Autant que je suis conscient de GWT ne fournit pas un dialogue synchrone. Si elle le faisait, cela signifierait qu'un blocage de la section de code est introduit. Avec JavaScript étant mono-thread, qui permettrait de verrouiller votre demande en occupé attente - ce qui signifie que tu ne pouvais pas faire tout sens de traitement dans le dialogue lui-même ou n'importe où ailleurs pour cette matière.
C'est la façon dont je le manipuler:
Ceci est très similaire à la fonction de pointeur lien que vous aviez mentionné - vous venais d'écrire votre propre événement.
OriginalL'auteur filip-fku
Découvrez DialogBox. Vous pouvez utiliser l'un des constructeurs pour faire modal.
OriginalL'auteur maneesh
Il ya une meilleure façon que l'approche asynchrone.
Votre application contient jusqu'à ce que l'utilisateur appuie sur " ok " ou "annuler", et vous pouvez traiter le booléen retourné.
Malheureusement, vous ne pouvez pas modifier le texte de la 'ok' et 'annuler' boutons.
OriginalL'auteur B. Miller