TD4 - Annotations

De $1

Version de 00:07, 19 Avr 2024

cette version.

Revenir à liste des archives.

Voir la version actuelle

Ce TD propose la création d'annotations, leur manipulation par introspection et avec l'interface APT de manipulation des annotations. Il s'appuie en partie sur les résultats du TD3.

Annotation Menu

Créez une annotation de nom @Menu qui s'applique uniquement sur les méthodes et qui sera utilisée aussi bien lors de la compilation que dynamiquement par introspection. Cette annotation doit permettre de construire automatiquement un menu dans une fenêtre. 

Un menu (ex: JMenu) possède:

  • Un nom
  • [Optionnel] Une icône (chargée à partir d'un fichier image : ImageIcon)
  • [Optionnel] Une combinaison clavier pour un raccourci clavier (voir la méthode statique KeyStroke.getKeyStroke)
  • Un comportement (c'est-à-dire une méthode qui s'exécute lorsque l'on clique sur le menu)

Utiliser une annotation plutôt que la classe JMenu directement permet de s'affranchir de l'environnement graphique à utiliser. Si plus tard on décide d'utiliser AWT ou SWT, l'information sur le menu reste présente sous forme d'annotation.

Introspection et annotations

Reprenez l'exercice sur les Menu du TD3.

Spécialisez la classe FrameWithMenu et redéfinir la méthode buildMenu() pour créer les menus en fonction de l'annotation @Menu.

  • On chargera donc (dynamiquement) toutes les classes (fichiers .class) qui se trouvent dans le repository
  • On sélectionnera celles qui ont des méthodes annotées par @Menu. Il peut y avoir plusieurs méthodes annotées ! On vérifiera cependant que ces méthodes sont statiques, publiques et sans paramètres. Pour chacune des méthodes sélectionnées, il faut utiliser l'information de l'annotation pour
    • créer un menu
    • Si le nom n'est pas donné par un champ spécifique, on utilisera le nom de la méthode
    • On chargera la bonne icône et le bon raccourci clavier
    • On utilisera la méthode invoke pour exécuter cette méthode lorsque l'utilisateur clique sur le menu ainsi créer.

Annotation Processing Tool

Dans l'exercice précédent, on a besoin que les méthodes soient publiques, statiques et sans paramètres. Plutôt que de s'apercevoir dynamiquement que ce n'est pas le cas, on voudrait disposer d'un moyen pour s'en apercevoir à la compilation, voire à l'édition. L'outil APT (Annotation Processing Tool) est là pour nous aider.

Assistance à la compilation

Utilisez l'APT pour s'assurer à la compilation que les méthodes annotées par @Menu sont bien publiques, statiques et sans paramètres. Si ce n'est pas le cas, on enverra un message dans le Messager. Il vous faut créer au minimum :

Génération de code

Assistance à l'édition (Eclipse uniquement)