Dans mon application MCQS je représente les réponses aux questions sous forme de diagramme. Je viens de remplacer ma petite solution maison contre une vraie librairie chargée de calculer les diagrammes : Eclipse BIRT (Eclipse Charting Engine).
Le résultat obtenu fait tout de suite beaucoup plus professionnel :
J’avais déjà utilisé JFreeChart il y a longtemps… Mais BIRT étant un projet Eclipse sous licences EPL, je l’avais mis depuis longtemps sur ma liste des choses à regarder. Le projet Eclipse BIRT est assez vaste, en fait c’est une solution de Business Intelligence complet qui est comparable à la suite Jaspersoft. Je me concentre ici sur le module Eclipse Charting Engine de BIRT : c’est lui qui dessine les diagrammes et qui est donc plus comparable à JFreeChart.
Finalement, ces librairies fonctionnent de la même manière. Au travers d’une API le modèle du diagramme est défini : le type de diagramme, les différentes séries qui vont être représentées, les éléments graphiques (couleur, légende, titre…).
Pour s’en sortir, rien ne vaut une petite recherche Google pour trouver les extraits de codes qui permettent de partir d’un exemple déjà défini. Je suis surpris de ne pas trouver de galerie présentant les différents types de diagramme (histogramme, diagramme circulaire…). D’autant plus qu’il existe un projet contenant des exemples: org.eclipse.birt.chart.examples
Rapidement j’ai obtenu ce que je souhaitais… La plus grande difficulté concerne les dépendances… En fait le morceau de code que j’avais trouvé marchait bien en Java SE, mais j’ai mis un certain temps à comprendre comment cela fonctionnait dans mon application Eclipse Scout. Sans y faire attention (ayant copié collé du code venant de StackOverflow), j’utilisais le mode STANDALONE de BIRT. Dans une application Eclipse Scout, on est évidemment dans un contexte OSGi.
Aller plus loin :
Pour aller plus loin, il me semble que passer par le champ SVG d’Eclipse Scout n’est pas vraiment une bonne solution. D’après ce que j’ai vu, BIRT dispose de widgets d’affichage pour Swt et Swing. Il serait plus malin d’avoir un ChartField dans Eclispe Scout avec les renderer appropriés.
Une autre réflexion à mener concerne la répartition client server de la logique de diagramme. Il me semble que BIRT propose un découpage plutôt intéressant qu’il serait possible de reprendre en réfléchissant à l’intégration client/serveur.
Au final l’utilisation d’Eclipse BIRT Chart-Engine se révèle être une bonne expérience.