Le but de cet exercice est de manipuler une serie d'actions.
Les actions sont des objets implémentant l'interface Action
(qui hérite de ActionListener) et permettant de
regouper au sein d'un même objet, le traitement, l'icône, les
racourcis clavier, les bulles d'infos, etc.
Il existe de plus la classe AbstractAction qui prédéfinie
un mécanisme de listener permettant d'associer une action à plusieurs
composants swing (boutons, menus).
On désire écrire un programme de visualisation de l'arborescence de fichiers d'un répertoire donné (par exemple, le home.dir).
Pour cela, on choisit de définir la classe FileNode représentant les noeuds d'une arborescence correspondant à des répertoires ou à des fichiers. Cette classe devra donc implanter l'interface TreeNode, afin d'être utilisée dans un composant JTree.
De plus, il n'est pas souhaitable que l'ensemble de l'arborescence soit chargée au départ. On préfèrera, autant que possible, un chargement dynamique, à la demande (lazy), lors du déplacement dans la hierarchie et de l'ouverture des répertoires.
Par ailleurs, dans un champ de texte en bas de la fenêtre, on veut visualiser le chemin absolu (dans le système de fichier considéré) du fichier ou du répertoire sélectionné.
Par exemple, voici une exécution de java -Dhome.dir=WWW
On pourra également faire afficher une fenêtre d'alerte lorsque la lecture d'un répertoire pose un problème (protection en lecture ou erreur quelconque d'entrée/sortie).
Parmi les améliorations souhaitables, on peut citer :