Notre dernier article TreeMLBuilder, builder Groovy pour prefuse présentait un builder Groovy capable de générer un document XML au format TreeML ; ce document était ensuite utilisé comme source de données dans une vue prefuse de type TreeView affichée dans une applet Java.
Nous avions également mentionné la possibilité d'utiliser un builder comme implémentation d'un Domain Specific Language ; alors que le builder TreeMLBuilder possède une syntaxe proche de la structure d'élément XML que celui-ce génère, cet article présente un nouveau builder : le builder MapMindBuilder, dont la syntaxte (via les pseudo-méthodes utilisables) permet de définir un MapMind qui sera affiché par la librairie prefuse dans le même type de vue.
Voyons d'abord comment un MapMind est défini au travers d'une instance de notre builder MindMapBuilder (dont le code source est fourni en pièce jointe à cet article) :
node 'MapMindBuilder', {
node 'Builders Groovy', {
node 'Groovy', url: 'http://groovy.codehaus.org/', {
node 'Documentation', url: 'http://groovy.codehaus.org/Documentation'
node 'JavaDoc', url: 'http://groovy.codehaus.org/api/index.html'
node 'GDK', url: 'http://groovy.codehaus.org/groovy-jdk/'
}
}
node 'prefuse', url: 'http://prefuse.org/'
node 'odelia technologies', {
node 'Site web', url: 'http://www.odelia-technologies.com'
node 'bientôt', url: 'http://www.grailsworks.com'
}
}
}
Chaque élément node, qui est en réalité un appel de méthode, permet de définir un nœud du MapMind : chaque nœud possède un texte et éventuellement une URL, qui sera utilisée pour permettre une navigation interactive vers celle-ci au cours de l'affichage du MapMind dans une applet Java.
Il est possible d'aller plus loin, comme par exemple, d'associer des notes à un nœud, qui pourraient être affichées d'une manière particulière.
L'implémentation du builder MapMindBuilder s'appuie sur la classe Groovy groovy.util.BuilderSupport comme classe de base, ainsi que sur la classe groovy.util.Node pour construire un document XML de type TreeML ; par simplification, le code source de la classe MapMindBuilder en pièce jointe n'inclut pas la création de l'applet.
Techniquement, le document TreeML construit définit trois attributs (au sens du format TreeML) : les attributs text, url et image. Les deux premiers n'appellent pas d'explication ; par contre, pour le troisième, sa valeur sert à définir une image à afficher à la droite du texte, et le builder ne génèrera automatiquement un attribut image, avec la valeur globe.gif, que pour les nœuds présentant une URL.
Cela permet d'identifier visuellement les nœuds qui comportent une URL vers laquelle l'utilisateur pourrait naviguer !
Vous pouvez voir un MapMind en action dans cette applet Java 6, avec la librairie prefuse, utilisant un graphe dont le code est basé sur la classe TreeView de prefuse.
Si un nœud présente une petite icône à droite du texte, une URL est rattachée à ce nœud, et vous pouvez naviguez vers cette URL par un click sur le nœud, tout en maintenant la touche CTRL enfoncée.
| Fichier attaché | Taille |
|---|---|
| MapMindBuilder.groovy.txt | 2.73 Ko |