示例#1
0
        //---------------------------------------------------------------
        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);
                    }
                }
            }
        }
示例#2
0
        //------------------------------------------------------
        private Rectangle CalculeEnglobants(CNiveau niveau, ref int nIndexNext, int nIndexHierarchique)
        {
            ISatisfactionBesoin satisfaction = niveau.Satisfactions.ElementAt(nIndexNext);

            CInfoDessinSatisfaction dessin = null;

            m_dicSatisfactionToRect.TryGetValue(satisfaction, out dessin);
            Rectangle rctRetour = dessin.Rectangle;

            nIndexNext++;
            HashSet <ISatisfactionBesoin> besoinsFils = new HashSet <ISatisfactionBesoin>();
            int nIndexStartFils = nIndexNext;

            ISatisfactionBesoinAvecSousBesoins satB = satisfaction as ISatisfactionBesoinAvecSousBesoins;

            if (satB != null && m_setSatisfactionsExpanded.Contains(satB))
            {
                foreach (CBesoin besoin in satB.GetSousBesoinsDeSatisfaction())
                {
                    besoinsFils.Add(besoin);
                }
            }
            else if (satisfaction is CBesoin)
            {
                foreach (CBesoin besoin in ((CBesoin)satisfaction).BesoinsFils)
                {
                    besoinsFils.Add(besoin);
                }
            }

            if (besoinsFils.Count > 0)
            {
                while (nIndexNext < niveau.Satisfactions.Count() &&
                       besoinsFils.Contains(niveau.Satisfactions.ElementAt(nIndexNext)))
                {
                    Rectangle rctFils = CalculeEnglobants(niveau, ref nIndexNext, nIndexHierarchique + 1);
                    rctRetour = Rectangle.Union(rctRetour, rctFils);
                }
                for (int nFils = nIndexStartFils; nFils < nIndexNext; nFils++)
                {
                    ISatisfactionBesoin     satFils    = niveau.Satisfactions.ElementAt(nFils);
                    CInfoDessinSatisfaction dessinFils = null;
                    m_dicSatisfactionToRect.TryGetValue(satFils, out dessinFils);
                    dessinFils.Offset(m_nOffestNiveau, 0);
                }
                rctRetour.Width += m_nOffestNiveau;
                dessin.Rectangle = new Rectangle(rctRetour.Left + m_nOffestNiveau / 3, rctRetour.Top, m_nLargeurNiveauDefaut, rctRetour.Height + 4);
            }
            dessin.NiveauHierarchique = nIndexHierarchique;
            return(rctRetour);
        }
示例#3
0
        //------------------------------------------------------
        public void Init(ISatisfactionBesoin satisfaction)
        {
            m_satisfactionRacine = satisfaction;
            List <ISatisfactionBesoin> lst = new List <ISatisfactionBesoin>();

            lst.Add(satisfaction);
            ISatisfactionBesoinAvecSousBesoins sab = satisfaction as ISatisfactionBesoinAvecSousBesoins;

            if (sab != null)
            {
                m_setSatisfactionsExpanded.Add(sab);
            }
            Init(lst);
        }
示例#4
0
            //-------------------------------
            public CInfoDessinSatisfaction(
                Rectangle rct,
                ISatisfactionBesoin satisfaction,
                bool bIsExpanded)
            {
                m_rectangle    = rct;
                m_satisfaction = satisfaction;
                ISatisfactionBesoinAvecSousBesoins sab = satisfaction as ISatisfactionBesoinAvecSousBesoins;

                if (sab != null)
                {
                    m_bHasChildren = sab.GetSousBesoinsDeSatisfaction().Count() != 0;
                }
                m_bIsExpanded = bIsExpanded;
            }
示例#5
0
 //------------------------------------------------------
 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);
 }
示例#6
0
        //------------------------------------------------------------------------------
        private void m_menuDetaillerSatisfaction_Click(object sender, EventArgs e)
        {
            ISatisfactionBesoinAvecSousBesoins sat = m_satisfactionSel as ISatisfactionBesoinAvecSousBesoins;

            if (sat != null)
            {
                if (m_setSatisfactionsExpanded.Contains(sat))
                {
                    m_setSatisfactionsExpanded.Remove(sat);
                }
                else
                {
                    m_setSatisfactionsExpanded.Add(sat);
                }
                RefreshDessin();
            }
        }
示例#7
0
 //-----------------------------------------
 private void AddSatisfaction(
     int nNiveauHierarchique,
     CControleMapBesoinOld controleMap,
     ISatisfactionBesoin satisfaction)
 {
     if (satisfaction != null &&
         !controleMap.m_setSatisfactionsIntegrés.Contains(satisfaction))
     {
         controleMap.m_setSatisfactionsIntegrés.Add(satisfaction);
         m_listeSatisfactions.Add(satisfaction);
         if (controleMap.m_setSatisfactionsExpanded.Contains(satisfaction))
         {
             ISatisfactionBesoinAvecSousBesoins satB = satisfaction as ISatisfactionBesoinAvecSousBesoins;
             if (satB != null)
             {
                 foreach (CBesoin besoin in satB.GetSousBesoinsDeSatisfaction())
                 {
                     AddSatisfaction(nNiveauHierarchique + 1, controleMap, besoin);
                 }
             }
         }
     }
 }
示例#8
0
        //------------------------------------------------------------------------------------------------------------------------------
        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);
                }
            }
        }