Classe StructureAlternative
Description Générale
La classe StructureAlternative représente une structure de contrôle conditionnelle dans l'éditeur graphique d'AlgoForge. Elle permet de gérer des branches conditionnelles (par exemple, des blocs if-else) et leurs interactions avec d'autres éléments graphiques. Cette classe hérite de ElementGraphique et ajoute des fonctionnalités spécifiques pour gérer les conditions et leurs enfants.
Héritage
- Classe parente :
ElementGraphique- La classe
StructureAlternativehérite de toutes les fonctionnalités de base deElementGraphique, telles que la gestion des positions, des parents, et des enfants.
- La classe
Responsabilités Principales
1. Gestion des Conditions
-
Liste des conditions :
- Propriété
_listeConditions: Contient les conditions associées à la structure alternative. - Méthodes associées :
get _listeConditions(): Renvoie la liste des conditions.set _listeConditions(value): Définit une nouvelle liste de conditions.
- Propriété
-
Ajout et suppression de conditions :
- Méthode
ajouterCondition(condition):- Ajoute une nouvelle condition à la structure alternative.
- Par défaut, une condition vide est ajoutée si aucune n'est spécifiée.
- Méthode
supprimerCondition(condition):- Supprime une condition spécifique ou la première condition vide.
- La dernière condition ne peut pas être supprimée.
- Méthode
-
Décalage des conditions :
- Méthode
decalerCondition(pCondition, decalage, estAnnulation):- Décale une condition vers la gauche ou la droite dans la structure alternative.
- Met à jour les liens associés aux enfants après le décalage.
- Méthode
-
Ajout de conditions par rapport à une autre :
- Méthode
ajouterConditionParRapportA(pCondition, decalage, estAnnulation):- Ajoute une condition à gauche ou à droite d'une condition existante.
- Méthode
2. Gestion des Enfants
-
Récupération des enfants :
- Méthode
getEnfants(typeRechercher):- Renvoie les enfants de la structure alternative correspondant à un type spécifique.
- Trie les enfants par position en abscisse.
- Méthode
-
Récupération des enfants par condition :
- Méthode
getEnfantsParCondition():- Renvoie une liste des enfants pour chaque condition de la structure alternative.
- Méthode
-
Suppression des liens avec les enfants :
- Méthode
supprimer():- Supprime la structure alternative et déliera tous les enfants de ses conditions.
- Méthode
3. Affichage
- Affichage des informations :
- Méthode
afficher():- Affiche les coordonnées de la structure alternative et les informations sur ses conditions.
- Méthode
4. Gestion des Dimensions
- Calcul des dimensions :
- Méthode
getTailleAbscisse():- Renvoie la largeur totale de la structure alternative en fonction du nombre de conditions.
- Méthode
getTailleOrdonnee():- Renvoie la hauteur fixe de la structure alternative (par défaut,
4).
- Renvoie la hauteur fixe de la structure alternative (par défaut,
- Méthode
5. Interactions Utilisateur
- Options contextuelles :
- Méthode
genererOptionsContextuelles(editeur):- Génère une liste d'options contextuelles pour la structure alternative.
- Exemples d'options :
- "Délier toutes les conditions" : Supprime les liens entre les conditions et leurs enfants.
- Méthode
Attributs Internes
Attributs principaux :
_listeConditions: Liste des conditions associées à la structure alternative._editeur: Référence à l'éditeur principal._mouseDownTime: Temps du clic de souris (utilisé pour des interactions spécifiques).
Méthodes Clés
Méthodes de gestion des conditions :
ajouterCondition(condition): Ajoute une nouvelle condition.supprimerCondition(condition): Supprime une condition spécifique ou vide.decalerCondition(pCondition, decalage, estAnnulation): Décale une condition vers la gauche ou la droite.ajouterConditionParRapportA(pCondition, decalage, estAnnulation): Ajoute une condition par rapport à une autre.
Méthodes de gestion des enfants :
getEnfants(typeRechercher): Renvoie les enfants correspondant à un type spécifique.getEnfantsParCondition(): Renvoie les enfants triés par condition.
Méthodes d'affichage :
afficher(): Affiche les informations de la structure alternative.
Méthodes de gestion des dimensions :
getTailleAbscisse(): Renvoie la largeur totale de la structure alternative.getTailleOrdonnee(): Renvoie la hauteur fixe de la structure alternative.
Méthodes d'interaction utilisateur :
genererOptionsContextuelles(editeur): Génère les options contextuelles pour la structure alternative.
Exemple d'Utilisation
Création d'une Structure Alternative
const structureAlternative = new StructureAlternative(10, 20); // Utiliser plutôt une des classes qui héritent de StructureAlternative
document.body.appendChild(structureAlternative);
Ajout d'une Condition
const condition = new Condition();
structureAlternative.ajouterCondition(condition);
Décalage d'une Condition
structureAlternative.decalerCondition(condition, 1); // Décale vers la droite
Récupération des Enfants
const enfants = structureAlternative.getEnfants();
console.log(enfants);
Suppression d'une Condition
structureAlternative.supprimerCondition(condition);