Projet de Treeview


BELLARDIE Nicolas - PEYE Xavier


Titre du projet : Treeview

Langage utilise : Java
Sujet du projet

Le projet que nous devions réaliser avait pour objet de créer une classe implémentant des arborescences affichées, comme dans l'explorateur de fichiers de Windows. Cet arbre devait être capable de structurer n'importe quoi, et non seulement des fichiers. Si l'on se réfère au contrôle Windows correspondant, il devait être paramétrable (par exemple au niveau des icônes).
Dans le cadre du cours d'Internet, ce projet devait être réalise en Java.

Non développé.

Développé.

Travail réalisé

La programmation de la classe TreeView est terminée. Celle-ci comporte quelques bugs d'affichage du au fait que nous n'avons su que trop tard comment forcer l'apparition des images. Lorsque la fenêtre réservée à l'affichage de l'arbre est trop petite (par exemple apres un resize), des scrollbars apparaissent. Elles prennent de l'espace sur l'affichage de l'arbre, et non un espace supplémentaire. De ce fait, l'apparition d'une scrollbar en entraînant une autre a été géré (pour voir apparaître une scrollbar horizontale, il faut que le texte à afficher soit plus long que la fenêtre).



Le drag and drop est possible également. Par contre, les seules zones sensibles aux actions de la souris sont les icônes. Celles-ci sont d'ailleurs facultatives. Il faut donc "dragger" en cliquant sur l'icône source, et ce, jusqu'a l'icône du noeud cible. On sait si on a le focus sur l'icône lorque le texte associé à cette dernière se retrouve écrit en vidéo inverse (en bleu sur fond rose).

Le Fils1 a été placé sous le petit fils4.1, le Fils1 a le focus.


Les icônes peuvent être positionnées. L'image du noeud developpé est par défaut celle du noeud developpé dès que cette dernière change. Elle peut etre positionnée à part. Des images par défaut (honteusement volées à l'explorateur de fichiers Windows) sont livrées.
A chaque noeud, s'il contient des fils, est présent un signe + ou - selon que l'arbre peut être developpé ou qu'il l'est déjà. Ce sigle n'apparaît pas pour les feuilles de l'arbre.
Les images et le texte peuvent être de taille quelconque, l'application adaptant les dimensions diverses à ce critère. Par contre, positionner des images de taille différente pour un même niveau de l'arborescence risque de détruire l'alignement des noeuds.

Ce qu'on aurait aimé faire

Comme nous étions encore novices en Java, il est quelques fonctionnalités que nous aurions aimé développer que nous n'avons pas eu le temps d'implémenter.

Ces fonctions sont pour la plupart peu difficiles à réaliser et à intégrer au code.

Un peu de technique

L'application est composée d'une classe principale, la classe TreeView. Celle-ci dérive de la class Panel, car cela nous permet de mettre plusieurs élements dans le TreeView (en fait un Canvas et deux ScrollBars optionnelles).
La classe TreeView ne connaît que la racine de l'arbre.
Un Canvas, dérive en une classe contenant des informations supplémentaires, contient les affichages. Les noeuds de l'arbre sont en fait des TreeViewNode, la classe élémentaire de l'application. Cette classe devra être manipulée par l'utilisateur qui se servira des TreeView, car ces objets servent d'identifiant pour les noeuds. Ainsi, c'est en appelant la méthode TreeViewNode.SetIcon(Image) que l'on positionne l'image associée à un noeud. Le TreeView est conçu pour être intégré dans la fenêtre d'une application et non pour être utilisé seul.

Pour utiliser notre code, récupérer le source et le décompacter. De la lancer le makefile qui va générer les *.class et puis lancer "java bidon"