2010-11-12 4 views
6

Avant de commencer à me tirer dessus, j'ai vérifié les réponses et j'ai recherché sur google jusqu'à ce que mes doigts saignent, mais je n'ai pas réussi à trouver une réponse simple et concise. Donc je demande à nouveau à tous ceux qui pourraient avoir ce problème.Ouverture d'une nouvelle fenêtre avec un widget dans GWT

Comment ouvrir une nouvelle fenêtre avec un panneau de formulaire dans le côté. J'ai une application qui énumère beaucoup d'articles, je veux que quelqu'un édite une entrée, je veux ouvrir une nouvelle fenêtre pour pouvoir éditer les propriétés, puis cliquer sur Enregistrer. Une chose standard que vous trouvez dans beaucoup d'applications.

Architecture: je un module client appelé l'interface utilisateur, il a une douzaine de classes qui attirent des widgets et de remplir une zone principale lors de la sélection d'un menu. J'ai une seule page html appelée UI.html qui a l'étiquette dans la tête. C'est tout.

options Ive vu

  1. Appel Window.Open() mais vous devez définir un fichier html. Je n'en ai pas. Je peux en créer un vide mais comment injecter un widget dedans?

  2. utilisez jsni $ wnd pour créer une nouvelle fenêtre et obtenir une référence à elle. Mais comment puis-je injecter un panneau de formulaire en elle?

  3. utiliser un popuppanel. Ils ont l'air sucky - plus si l'ouverture d'une fenêtre à travers JS est assez simple je m'attendrais à ce qu'il soit en gwt.

Peut-être que je ne comprends pas comment utiliser GWT je ne sais pas.

Toute aide serait appréciée

Merci

+0

meilleure réponse que je l'ai vu est: https://groups.google.com/forum/?fromgroups#!topic/google-web-toolkit/G73s5fqpYBg –

Répondre

1

Je suis d'accord avec Bogdan: Utilisez un DialogBox.

Si vous ne pouvez pas, vous Window.open() comme vous l'avez mentionné dans l'option 1:

  1. Créer un autre module GWT, et la forme.html qui charger
  2. Window.open("form.html?entry=54")
  3. le module en forme de GWT lu à partir de l'URL, chargez l'entrée, lui permettre d'être édité, et de fournir des boutons Save et Cancel
  4. Fermez la fenêtre lorsque Save ou Cancel est cliquée
+0

Merci les gars pour vos réponses rapides. Mon boeuf avec la boîte de dialogue est il n'a aucun cadre de fenêtre ni l'aspect typique de fenêtre, l'emplacement d'url etc. – Primus

12

La façon dont je suis arrivé que cela fonctionne est la suivante: je l'ai écrit une méthode JSNI pour ouvrir une nouvelle fenêtre

public static native BodyElement getBodyElement() /*-{ 
     var win = window.open("", "win", "width=940,height=400,status=1,resizeable=1,scrollbars=1"); // a window object 
     win.document.open("text/html", "replace"); 

i ajouté un corps de base à la nouvelle fenêtre et a renvoyé l'élément de corps

win.document.write("<HTML><HEAD>"+css1+css2+"</HEAD><BODY><div class=\"mainpanel\"><div style=\"width: 100%; height: 54px;\"><div id=\"mainbody\"class=\"mainbody\" style=\"width: 100%;\"></div></div></div></BODY></HTML>"); 
     win.document.close(); 
     win.focus(); 
     return win.document.body; 
    }-*/; 

i alors appelé cette méthode de ma principale méthode java

BodyElement bdElement = getBodyElement(); 

je puis injecté mon panneau qui a beaucoup de widgets dans l'élément de corps retourné

SystemConfiguration config = new SystemConfiguration();    bdElement.getOwnerDocument().getElementById("mainbody").appendChild(config.getElement()); 
+0

+1 pour partager votre solution aussi. – nikhil

Questions connexes