Beispiel #1
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);
        }
Beispiel #2
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;
            }
Beispiel #3
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);
                 }
             }
         }
     }
 }