Jul 202009
 

4ème article de la série où nous allons mettre à jour les onglets pour que l’expérience utilisateur soit plus pertinente. En effet, nous allons faire en sorte que l’onglet “actif” apparaisse d’une façon différente des autres onglets.

Comme dans l’étape 3, nous allons “encapsuler” nos onglets dans un WebMarkupContainer pour pouvoir le mettre à jour via Ajax :

ps : on voit aussi apparaitre assez salement une variable qui nous permeterra de connaitre l’onglet en cours. L’étape 5 se chargera de son cas.

avec le code html correspondant :


Ensuite, on reprend le code de notre ListView de l’étape 3, et on modifie le code de l’AjaxLink :

Ce que l’on fait dans le code du onClick c’est de dire à Wicket de refaire le render du panel des onglets (nommé ongletsContainer).

Cependant, si on s’arrete là, le panel se rafraichira correctement, mais au final, le résultat sera le même.

Il faut donc ajouter un AttributeModifier sur nos ListItem pour pouvoir appliquer une classe Css en accord avec le “statut” de chacun des onglets.

On reprend donc le code de notre ListView et on va implémenter une méthode supplémentaire newItem(int _index) qui surcharge la méthode de la classe abstraite ListView. Cela donne donc le code suivant:

Surcharger cette méthode newItem(int _index) nous permet de pouvoir manipuler l’instance de ListItem qui sera utilisée, pour pouvoir lui définir sa méthode onBeforeRender(), qui permettra dès lors d’ajouter à la volée, un AttributeModifier.

Déjà c’est pas mal, mais qu’est ce qu’on va donner à manger à notre AttributeModifier ?

J’ai créé une petite classe qui permet en fonction des différents index (index de l’onglet actif, index de l’onglet que l’on traite, le nombre total d’onglets) de retrouver les bonnes classes css à appliquer à chaque onglet. Voilà cette classe :

Bravo! Vous avez reussi à réaliser un système d’onglets, complètement dynamique, tant sur le nombre d’onglets, que sur le chargement du contenu associé.

Bon, les puristes vous diront que c’est pas mal crado…

C’est pour ca que le 5ème et dernier épisode existe. Il sera consacré au rangement de tout ce bazar… Amusons nous avec Wicket & Ajax : Onglets dynamiques 5/5

Imprimer cet article Imprimer cet article

Leave a Reply