//--------------------------------------------------------------- private void CalculeFils() { m_listeFils = new List <CDessinSatisfaction>(); ISatisfactionBesoinAvecSousBesoins satB = Satisfaction as ISatisfactionBesoinAvecSousBesoins; if (satB != null) { foreach (CBesoin besoin in satB.GetSousBesoinsDeSatisfactionDirects()) { if (!m_niveau.BaseSatisfactions.IsDejaIntegréee(besoin)) { CDessinSatisfaction dessin = new CDessinSatisfaction(m_niveau, besoin); dessin.m_dessinParent = this; m_listeFils.Add(dessin); m_niveau.AddSatisfactionVisible(dessin); } } foreach (ISatisfactionBesoin sousSat in satB.GetSousSatisfactions()) { if (!m_niveau.BaseSatisfactions.IsDejaIntegréee(sousSat)) { CDessinSatisfaction dessin = new CDessinSatisfaction(m_niveau, sousSat); dessin.m_dessinParent = this; m_listeFils.Add(dessin); m_niveau.AddSatisfactionVisible(dessin); } } } }
//------------------------------------------------------ public bool IsExpandable() { if (m_bIsExpandable == null) { ISatisfactionBesoinAvecSousBesoins satB = Satisfaction as ISatisfactionBesoinAvecSousBesoins; if (satB != null && satB.GetSousBesoinsDeSatisfactionDirects().Count() > 0) { m_bIsExpandable = true; } else { m_bIsExpandable = false; } } return(m_bIsExpandable.Value); }
//------------------------------------------------------------------------------------------------------------------------------ private static void FillFlattenSatisfactionsHierarchy(ISatisfactionBesoin satisfaction, HashSet <ISatisfactionBesoin> set, HashSet <ISatisfactionBesoin> setSatFait) { if (setSatFait.Contains(satisfaction))//Déjà vu { return; } setSatFait.Add(satisfaction); set.Add(satisfaction); //Si c'est un besoin, ajoute les satisfactions de ce besoin CBesoin besoin = satisfaction as CBesoin; if (besoin != null) { foreach (CRelationBesoin_Satisfaction rel in besoin.RelationsSatisfactions) { if (rel.Satisfaction != null) { FillFlattenSatisfactionsHierarchy(rel.Satisfaction, set, setSatFait); } } } ISatisfactionBesoinAvecSousBesoins satSousBes = satisfaction as ISatisfactionBesoinAvecSousBesoins; if (satSousBes != null) { foreach (CBesoin sousBesoin in satSousBes.GetSousBesoinsDeSatisfactionDirects()) { FillFlattenSatisfactionsHierarchy(sousBesoin, set, setSatFait); } foreach (ISatisfactionBesoin sousSat in satSousBes.GetSousSatisfactions()) { FillFlattenSatisfactionsHierarchy(sousSat, set, setSatFait); } } }