La facilité de dessin et de gestion des évènement permet au développeur sous Processing de préparer rapidement des prototypes ou bien des outils dans un temps record. Cette capacité est très nécessaire lorsqu'il s'agit de prouver une idée ou bien pour préparer une démonstration rapide pour votre client.
Dans cet exemple, j'ai créé rapidement un éditeur des diagramme Entité/Association sous Processing dans environs 350 lignes de code. L'éditeur ne permet pas d'annuler, de déplacer de sélectionner les objets créés. Néanmoisn, il permet de :
Dans ce projet, vous pouvez voir comment différencier les bouttons de la souris en toute simplicit. Dans la méthode "mousePressed()", il est nécessaire de vérifier est ce qu'il s'agit d'un clique droit pour insérer une association ou bien d'un clique gaucheoù il faut véirifier est ce qu'il est appliqué à l'intérieur d'un objet ce qui veut dire qu'il s'agit d'un lien ou bien s'il est à l'extérieur de tout objet pour insérer une nouvelle entité.
La vérification que le clique est à l'intérieur d'un objet se fait par rapport aux coordonnés et mesures de ce dernier. Ainsi dans la classe Objet, on trouve la méthode "estDedans()" :
La méthode qui est supposée faire toutes les vérifications concerant les noms des entitées, des associations et des attributs ne fait en réalité que lire ces valeurs sans aucune vérification; elle nécessite un effort supplémentaire :
Vous pouvez télécharger le code par ici.
Dans cet exemple, j'ai créé rapidement un éditeur des diagramme Entité/Association sous Processing dans environs 350 lignes de code. L'éditeur ne permet pas d'annuler, de déplacer de sélectionner les objets créés. Néanmoisn, il permet de :
- Créer des entités en faisant un clique gauche :
- L'entité est créée à l'endroit où le clique a eu lieu.
- L'éditeur vous demande le nom de l'entité qui ne doit pas être vide.
- Il vous demande, par la suite, une liste d'attributs, une à la fois. La création de la liste des attributs s'arrête lorsque la chaîne vide est entrée.
- Créer des associations en faisant un clique droit :
- L'association est créée à l'endroit où le clique a eu lieu.
- L'éditeur vous demande le nom de l'association qui ne doit pas être vide.
- Il vous demande, par la suite, une liste d'attributs, une à la fois. La création de la liste des attributs s'arrête lorsque la chaîne vide est entrée.
- Pour créer un lien, il faut dessiner une ligne d'un objet à un autre objet de différente nature (d'une entité vers une association ou bien d'une association vers une entité). Les autres liens seront refusés (l'unique vérification dans le système).
Dans ce projet, vous pouvez voir comment différencier les bouttons de la souris en toute simplicit. Dans la méthode "mousePressed()", il est nécessaire de vérifier est ce qu'il s'agit d'un clique droit pour insérer une association ou bien d'un clique gaucheoù il faut véirifier est ce qu'il est appliqué à l'intérieur d'un objet ce qui veut dire qu'il s'agit d'un lien ou bien s'il est à l'extérieur de tout objet pour insérer une nouvelle entité.
void mousePressed(){ if(mouseButton == LEFT){ int entite = verifierEntites(mouseX, mouseY); if(entite != -1){ creationLien = true; entiteSource = true; source = entite; }else{ int association = verifierAssociations(mouseX, mouseY); if(association != -1){ creationLien = true; entiteSource = false; source = association; }else{ lireEntite(mouseX, mouseY); } } }else{ lireAssociation(mouseX, mouseY); } }
La vérification que le clique est à l'intérieur d'un objet se fait par rapport aux coordonnés et mesures de ce dernier. Ainsi dans la classe Objet, on trouve la méthode "estDedans()" :
public boolean estDedans(int cx, int cy){ return cx > x && cx < x + getLargeur() && cy > y && cy < y + getHauteur(); }
La méthode qui est supposée faire toutes les vérifications concerant les noms des entitées, des associations et des attributs ne fait en réalité que lire ces valeurs sans aucune vérification; elle nécessite un effort supplémentaire :
void lireEntite(int mx, int my){ String nom = JOptionPane.showInputDialog(null, "Donnez le nom de l'entité"); if(nom != null && !nom.equals("")){ Entite e = new Entite(mx, my); String propriete; int i = 0; do{ propriete = JOptionPane.showInputDialog(null, "Donnez les propriétés (vide pour terminer)"); if(propriete != null && !propriete.equals("")){ e.addAttribut(propriete); i++; } }while(propriete != null && !propriete.equals("") && i < NOMBRE_MAX_ENTITES); e.setNom(nom); entites[nbrEntites] = e; nbrEntites++; } }
Vous pouvez télécharger le code par ici.

Aucun commentaire:
La publication de nouveaux commentaires n'est pas autorisée.