A partir de ce découpage vous pouvez simplifiez les écrans, originellement définit par un MOA, en créant un écran de gestion du bean définissant chacun de vos modules. L'idée est d'obtenir un écran par bean, et donc par module.

Maintenant, à l'aide de l'objet History, vous allez stocker un jeton contenant l'ID de l'écran que vous souhaitez ouvrir et l'ID du bean qui sera géré par cet écran. Je vous conseille de définir un jetons bien spécifique à votre application que vous pourrez parser afin de vérifier qu'il ne s'agit pas d'un lien venant d'une autre page Web.

Utilisez votre moulinette sur tous les liens et boutons qui appellent un écran. Définissez un manager (singleton) qui contiendra une méthode unique qui sera appeler pour ouvrir un écran. Cette méthode prendra en paramètre l'identifiant de l'écran et du bean à gérer (voir également un troisième pour l'id de l'onglet s'il y a onglets). Elle se chargera d'afficher l'écran, et de stocker votre jeton dans l'historique via l'objet History. Et lorsque l'utilisateur appuiera sur le bouton back du navigateur, l'objet History appellera le manager, en lui donnant en argument les ID requis pour ouvrir l'écran adéquat.

Dans une application de gestion standard, un bean aura besoin d'un écran de création, un de mise à jour, un de consulation et un écran de recherche dans lequel on pourra les supprimer. Chacun de ces écrans aura un ID spécifique. Vous pouvez factoriser votre code de manière à réutiliser un maximum de code entre les écran de création, de mise à jour et de consultation, qui sont finalement très proche.

Créer des liens directs interne à votre application GWT

Avec ce mécanisme, lors du démarrage de l'application, dans l'EntryPoint, vous pouvez récupérer le jeton qui se trouverait dans l'URL d'appel à l'application. S'il y a un jeton, injectez-le dans le manager définit précédemment. Ceci permettra aux utilisateur de créer des liens hypertextes vers des écrans de votre application GWT.