Aller au contenu principal

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 StructureAlternative hérite de toutes les fonctionnalités de base de ElementGraphique, telles que la gestion des positions, des parents, et des enfants.

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.
  • 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.
  • 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.
  • Ajout de conditions par rapport à une autre :

    • Méthode ajouterConditionParRapportA(pCondition, decalage, estAnnulation) :
      • Ajoute une condition à gauche ou à droite d'une condition existante.

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.
  • Récupération des enfants par condition :

    • Méthode getEnfantsParCondition() :
      • Renvoie une liste des enfants pour chaque condition de la structure alternative.
  • Suppression des liens avec les enfants :

    • Méthode supprimer() :
      • Supprime la structure alternative et déliera tous les enfants de ses conditions.

3. Affichage​

  • Affichage des informations :
    • Méthode afficher() :
      • Affiche les coordonnées de la structure alternative et les informations sur ses conditions.

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).

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.

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);