Bonjour tout le monde,
J'ai un problème et j'espère que vous pourrez m'aider.
Je développe actuellement une application RCP ressemblant à ceci :
- à gauche : une "View" affichant un arbre à partir d'objets métiers décrits plus bas.
- à droite : une zone servant à afficher des "Editor".
Dans mon arbre :
- chaque noeud correspond à un objet java de type "Genre" qui possède une liste d'objet "Livre" en attribut.
- chaque feuille correspond à un objet java de type "Livre" dont le noeud parent est le "Genre" qui lui correspond.
Pour créer mon "Tree", j'ai donc utilisé un "TreeViewer". Il en résulte que chaque objet "Genre" est transformé en objet "TreeParent" et chaque objet "Livre" en "TreeObject"; tout cela pour représenter la hiérarchie de mes différents objets.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
private TreeObject createModel() {
root = new TreeParent("Bibliothèque");
List<Genre> listeDesGenres = getAllGenres();
for (Genre genre : listeDesGenres) {
String nomDuGenre = genre.getName();
TreeParent genreNode = new TreeParent(nomDuGenre);
root.addChild(genreNode);
List<Livre> listeDesLivres = genre.getAllLivres()
for (Livre livre : listeDesLivres) {
TreeObject livreNode = new TreeObject(livre.getName());
genreNode.addChild(livreNode);
}
}
return root;
} |
Remarque : TreeParent hérite de TreeObject
Mon TreeViewer utilise donc le "root" fourni par cette méthode comme input :
treeViewer.setInput(createModel());
La méthode getElements() de son ContentProvider renvoie ainsi tout les éléments à partir de "root" (en parcourant son arborescence).
Le LabelProvider lui ne fait que renvoyer le nom des TreeObjects.
Grâce à un éditeur "Editor" je peux créer de nouveaux "Livre" à un "Genre" particulier. Cela se traduit dans mon métier par l'ajout de ces nouveaux "Livre" dans la liste des livres de l'objet "Genre".
Cependant mes nouveaux "Livre" une fois crées n'apparaissent pas dans mon arbre, il faut que je redémarre mon application pour cela.
J'aimerais que mon arbre affiche automatiquement le nouveau livre crée dans mon arbre et au bon endroit.
Pour cela, j'ai regardé du côté de "inputChanged" mais n'ai pas vraiment compris comment cela fonctionne.
Quelqu'un pourrait il m'aider svp?
Merci beaucoup.
Partager