POA - TD3 + Projet : Graphes

Le sujet ci-dessous donnera lieu à trois séances de TD consacrées à l'élaboration d'un éditeur de graphes. Le projet consistera utiliser cet éditeur pour éditer des automates en utilisant également le TD 2.

Partie 1

Au cours de cette première partie, on demande de réaliser un composant graphique permettant de créer des cercles et de les bouger.
Les composants graphiques utilisés sont une JFrame contenant un JComponent.

Voici les étapes à suivre :
  1. Créer une classe GraphFrame héritant de JFrame et une classe GraphComponent héritant de JComponent. Une GraphFrame contiendra un GraphComponent. D'autre part, les instances de GraphComponent auront une taille par défaut de 500x500.
  2. Rendre les instances de GraphComponent instances de MouseInputListener. Tracer l'écoute des évènements "souris" sur un GraphComponent dans la sortie standard.
  3. Dessiner dans le GraphComponent un cercle de rayon 5 et modifier la gestion des évènements pour que lorsque l'on clique sur le cercle, "Gagné" s'affiche sur la sortie standard.
  4. Modifier la gestion des évènements pour que le cercle soit créé lorsque l'on presse le bouton de la souris, s'il n'existe pas déjà, puis déplacé si l'on drague avant de relâcher.
  5. Gérer l'existence de plusieurs cercles.

Partie 2 

  1. Proposer une version utilisant l'API Java2D. On utilisera des Ellipse2D pour les cercles.
  2. Rajouter des ascenseurs au GraphComponent.
  3. Ajouter une barre de menu permettant d'ouvrir et de fermer de nouvelles fenêtres, et de quitter l'application. Utiliser un dialogue de confirmation avant de quitter.
  4. Ajouter une barre d'outil sur le coté gauche. Placer dans cette barre des boutons permettant de choisir des formes différentes : cercle, carré ... On utilisera un GridLayout dans la barre d'outils.

Partie 3

  1. Comment facilement ajouter de nouvelles formes : petits carrés, gros cercles ... ?
  2. Modifier la gestion des évènements pour que si la touche "alt" est enfoncée lorsque l'on presse le bouton de la souris, une arête (segment de droite) soit crée entre deux formes. S'il n'existe pas de forme au point où l'on appuie et/ou au point où l'on relâche, une nouvelle forme sera créée.
  3. Modifier la gestion des évènements pour que si l'on appuie sur la barre d'espace durant la création d'une arête, cela crée un point de brisure. Les points de brisures seront affichés sous la forme de cercles vides que l'on pourra déplacer.
Partie 4
  1. Utiliser le bouton de droite pour supprimer des éléments : formes, arêtes, points de brisure.
  2. Numéroter les sommets.
  3. Ajouter des étiquettes sur les arêtes.
  4. Ajouter des flèches sur les arêtes.

Projet

Le projet consistera à satisfaire le cahier des charges suivant :

Le point de départ sera le corrigé des TD précédents, dont le projet sera une extension. Il est donc demandé de ne pas modifier le code existant, sauf si vous pouvez montrer que c'est la seule solution acceptable.

Vous pouvez également améliorer la qualité de l'éditeur (couleurs, tracés des arêtes, interdiction d'arcs multiples ou de boucles sans points de brisure...). Toutefois, la note sera plus basée sur la qualité du code et du rapport que sur la quantité.
Notez que durant la réalisation de ce projet, deux séances de TD devront vous permettre de discuter de vos choix de réalisation, de discuter de solutions éventuelles, de vaincre ou de tenir compte du scepticisme éventuel de vos enseignants.

Règles

Le projet devra être réalisé par binôme. Un seul monôme ou trinôme par groupe est autorisé. Les binômes inter-groupe ne sont pas autorisés, sauf dérogation dûment justifiée.

Le code devra être remis le vendredi 12 décembre avant 16h. Tout retard sera sanctionné. Le rapport sera à remettre avant le 2 janvier à 12h, sous forme d'un fichier PDF envoyé par email.

Ce rapport devra contenir

Le code devra être remis sous la forme d'une archive (.zip) du projet Eclipse.

Des présentations orales devant machine seront organisées.

Critères d'évaluation :