Mettre en place un Lazy Tree avec GWT

Le but de ce billet est de présenter une technique simple pour mettre en place un arbre paresseux (lazy tree) avec GWT.

GWT offre des primitives basiques pour la création d’un arbre, qui sont :

  • Le composant TreeItem : représente un noeud dans l’arbre et peut contenir de sous noeuds du même type.
  • Le composant Tree : représente la racine de l’arbre et peut contenir des TreeItems

Construire un arbre revient donc à créer autant d’instances de TreeItem que nécessaire et des les assembler pour obtenir l’hiérarchie souhaitée.
Cependant, cette méthode n’est pas applicable dans le cas où :

  • On dispose d’un grand nombre des noeuds (des centaines voire des milliers)
  • La récupération des noeuds est coûteuse : accès à la base de données et/ou au réseau

Dans des cas pareils, mieux vaut être paresseux et ne charger des noeuds que quand nécessaire (ne charger les fils d’un noeud que quand l’utilisateur l’ouvre).
Dans le cadre de ce billet, et comme source de données pour l’arbre, on suppose disposer d’un service exposé en RPC dont voici l’interface :

Read more of this post