private void m_btnGraphe_Click(object sender, EventArgs e) { if (m_schemaReseau == null) { return; } CGrapheReseau graphe = new CGrapheReseau(); CResultAErreur result = graphe.CalculeGraphe(m_schemaReseau, ESensAllerRetourLienReseau.Forward); if (!result) { CFormAlerte.Afficher(result.Erreur); return; } CArbreOperationnel arbre = new CArbreOperationnel(); result = arbre.CalculArbreRedondanceAuto(m_schemaReseau, graphe); string strTexte = ""; if (result) { strTexte = arbre.ElementRacine.ToString(); Clipboard.SetText(strTexte); CFormTesteArbreElementDeGraphe.AfficheArbre(arbre); } }
public static void AfficheArbre(CArbreOperationnel arbre) { CFormTesteArbreElementDeGraphe form = new CFormTesteArbreElementDeGraphe(); form.Init(arbre); form.ShowDialog(); form.Dispose(); }
//----------------------------------------------------------------- /// <summary> /// recalcule l'arbre opérationnel /// </summary> /// <param name="baseGraphes"></param> /// <returns></returns> public CResultAErreur RecalculeArbreOperationnelInContexte(CBaseGraphesReseau baseGraphes) { if (baseGraphes == null) { baseGraphes = new CBaseGraphesReseau(); } CResultAErreur result = CResultAErreur.True; CSchemaReseau schema = ObjetTimosAssocie; //Supprime toutes les dépendances à des elements de graphe result = CObjetDonneeAIdNumerique.Delete(ElementsDeGraphe, true); if (!result) { return(result); } foreach (ESensAllerRetourLienReseau sens in Enum.GetValues(typeof(ESensAllerRetourLienReseau))) { ESensAllerRetourLienReseau?sensRetenu = null; if (schema.LienReseau == null) { sensRetenu = sens; } //Calcule le graphe CGrapheReseau graphe = baseGraphes.GetGrapheExistant(schema, sensRetenu); if (graphe == null) { graphe = new CGrapheReseau(baseGraphes); result = graphe.CalculeGraphe(schema, sensRetenu); if (!result) { return(result); } } CArbreOperationnel arbre = new CArbreOperationnel(); result = arbre.CalculArbreRedondanceAuto(schema, graphe); if (!result) { return(result); } result = CSpvElementDeGraphe.CreateFromElementDeArbreOperationnel(this, arbre.ElementRacine, sensRetenu); if (!result) { return(result); } if (schema.LienReseau != null) { break; } } //Recalcule les éléments de graphe qui utilisent ce schéma CListeObjetsDonnees lstEltsUtilisantLeSchema = new CListeObjetsDonnees(ContexteDonnee, typeof(CSpvElementDeGraphe)); lstEltsUtilisantLeSchema.Filtre = new CFiltreData(CSpvElementDeGraphe.c_champIdSchemaSmt + "=@1", schema.Id); foreach (CSpvElementDeGraphe elt in lstEltsUtilisantLeSchema.ToArrayList()) { CSpvElementDeGrapheSousSchema eltSpvSousSchema = elt.GetElementDuBonType() as CSpvElementDeGrapheSousSchema; if (eltSpvSousSchema != null) { CNoeudDeGrapheReseau noeudDepart = eltSpvSousSchema.NoeudDepart; CNoeudDeGrapheReseau noeudArrive = eltSpvSousSchema.NoeudArrive; CArbreOperationnel arbre = new CArbreOperationnel(); CGrapheReseau graphe = baseGraphes.GetGrapheExistant(schema, eltSpvSousSchema.SensGraphe); if (graphe == null) { graphe = new CGrapheReseau(baseGraphes); result = graphe.CalculeGraphe(schema, eltSpvSousSchema.SensGraphe); if (!result) { return(result); } } result = arbre.CalculArbreRedondanceAuto(schema, graphe, noeudDepart, noeudArrive); if (!result) { return(result); } CElementDeArbreOperationnelSousSchema eltOp = new CElementDeArbreOperationnelSousSchema(null); eltOp.ElementDeArbre = arbre.ElementRacine; eltOp.IdSchema = schema.Id; eltOp.NoeudArrive = noeudArrive; eltOp.NoeudDepart = noeudDepart; result = CObjetDonneeAIdNumerique.Delete(eltSpvSousSchema.ElementsFils, true); if (!result) { return(result); } result = eltSpvSousSchema.FillFromElementDeGraphe(eltOp); if (!result) { return(result); } } } return(result); }
public void Init(CArbreOperationnel arbre) { m_arbre.Nodes.Clear(); CreateNode(arbre.ElementRacine, m_arbre.Nodes); }