Beispiel #1
0
 public static string GetChampIDElement(IWndElementDeProjetPlanifiable ele)
 {
     if (ele != null && ele.ElementDuProjet != null)
     {
         return(GetChampIDElement(ele.ElementDuProjet.TypeElementDeProjet.Code));
     }
     return("");
 }
Beispiel #2
0
        private void AssurePositionOk()
        {
            if (!m_bPositionInvalide)            //Vérifie que le départ et l'arrivé n'ont pas bougé
            {
                if (ElementDepart != null && ElementDepart.RectangleAbsolu != m_lastRectangleDepart ||
                    ElementArrivee != null && ElementArrivee.RectangleAbsolu != m_lastRectangleArrivee)
                {
                    m_bPositionInvalide = true;
                }
            }
            if (m_bPositionInvalide)
            {
                Point pt1;
                IWndElementDeProjetPlanifiable eleDepart = ElementDepart;
                if (eleDepart == null)
                {
                    pt1 = m_lastPointDepart;
                }
                else
                {
                    pt1 = GetCentreRect(eleDepart.RectangleAbsolu);
                }

                Point pt2;
                IWndElementDeProjetPlanifiable eleArrivee = ElementArrivee;
                if (eleArrivee == null)
                {
                    pt2 = m_lastPointArrivee;
                }
                else
                {
                    pt2 = GetCentreRect(eleArrivee.RectangleAbsolu);
                }

                if (eleDepart != null)
                {
                    if (!new CSegmentDroite(pt1, pt2).GetIntersectionPoint(eleDepart.GetPolygoneDessin(), ref pt1))
                    {
                        //Ca ne se peut pas !!!
                        pt1 = GetCentreRect(eleDepart.RectangleAbsolu);
                    }
                }
                if (eleArrivee != null)
                {
                    if (!new CSegmentDroite(pt1, pt2).GetIntersectionPoint(eleArrivee.GetPolygoneDessin(), ref pt2))
                    {
                        //Ca ne se peut pas
                        pt2 = GetCentreRect(eleArrivee.RectangleAbsolu);
                    }
                }
                m_lastPointDepart   = pt1;
                m_lastPointArrivee  = pt2;
                m_bPositionInvalide = false;
            }
        }
Beispiel #3
0
        public static void DrawIcones(Graphics g, IWndElementDeProjetPlanifiable ele)
        {
            if (ele == null || ele.ElementDuProjet == null)
            {
                return;
            }

            #region Anomalies
            CProjet prj = null;
            if (ele.ElementDuProjet.Projet != null)
            {
                prj = ele.ElementDuProjet.Projet;
            }
            else if (ele.ElementDuProjet is CProjet)
            {
                prj = (CProjet)ele.ElementDuProjet;
            }
            else
            {
                return;
            }

            if (prj.AfficherIcoAno)
            {
                Bitmap bmp = Resource.ok;

                CListeObjetsDonnees anomalies = ele.ElementDuProjet.AnomaliesConcernant;
                bool bBoucle = false;
                foreach (CAnomalieProjet ano in anomalies)
                {
                    if (!ano.Ignorer)
                    {
                        bmp = Resource.anomalienonbloquante;
                        if (ano.TypeAnomalie == ETypeAnomalieProjet.Boucle)
                        {
                            bBoucle = true;
                        }
                    }
                }

                //Dessin ico anomalie
                Rectangle rectPos = new Rectangle(ele.Position.X + 1, ele.Position.Y + 1, bmp.Size.Width, bmp.Size.Height);
                g.DrawImageUnscaled(bmp, rectPos);

                //Bordure ico anomalie
                Rectangle rect = new Rectangle(ele.Position.X, ele.Position.Y, bmp.Size.Width + 2, bmp.Size.Height + 2);
                Pen       pen  = new Pen(Color.Black);
                g.DrawRectangle(pen, rect);

                //Anomalie boucle > on met en gras la bordure
                if (bBoucle)
                {
                    pen.Color = Color.Red;
                    Rectangle rectBoucle = new Rectangle(ele.Position.X, ele.Position.Y, ele.Size.Width - 2, ele.Size.Height - 2);
                    rectBoucle.Width = 2;
                    g.DrawRectangle(pen, rectBoucle);
                }
                pen.Dispose();
            }
            #endregion

            #region Etat
            if (prj.AfficherIcoEtat)
            {
                Bitmap bmp = CEtatPlanification.GetBitmapEtat(ele.ElementDuProjet.EtatPlanification);

                //Dessin ico etat
                if (bmp != null)
                {
                    //Redimentionner image :
                    Bitmap    bmpEtat = new Bitmap(bmp, new Size(16, 16));
                    Rectangle rectPos = new Rectangle(ele.Position.X + (ele.RectangleAbsolu.Width - bmpEtat.Size.Width - 1),
                                                      ele.Position.Y + 1, bmpEtat.Size.Width, bmpEtat.Size.Height);
                    g.DrawImageUnscaled(bmpEtat, rectPos);

                    //Bordure
                    Pen pen = new Pen(Color.Black);

                    Rectangle rect = new Rectangle(ele.Position.X + (ele.RectangleAbsolu.Width - bmpEtat.Size.Width) - 2,
                                                   ele.Position.Y, bmpEtat.Size.Width + 2, bmpEtat.Size.Height + 2);
                    g.DrawRectangle(pen, rect);
                    pen.Dispose();
                }
            }
            #endregion
        }
        /// ////////////////////////////////////////////////////////////////
        private void CControlEdition_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            Point             ptSouris     = GetLogicalPointFromDisplay(new Point(e.X, e.Y));
            I2iObjetGraphique wndNouvelEle = null;

            switch (ModeEdition)
            {
            case EModeEditeurProjet.Selection:
                break;


            case EModeEditeurProjet.Projet:

                if (BeforeAddElement != null && !BeforeAddElement())
                {
                    break;
                }

                CProjet nouveauProjet;
                if (m_bModeCreation)
                {
                    nouveauProjet = new CProjet(WndProjetEdite.Projet.ContexteDonnee);
                    nouveauProjet.CreateNew();
                }
                else
                {
                    CFiltreData filtre = new CFiltreDataAvance(CProjet.c_nomTable, "HasNo(" + CProjet.c_champIdParent + ") AND " + CProjet.c_champCodeSystemeComplet + " not like @1", ProjetEnCreation.CodeSystemePartiel + "%");

                    //string strIdsPrjsToIgnore = ProjetEnCreation.Id.ToString();
                    //foreach (CProjet prjFils in ProjetEnCreation.ProjetsFils)
                    //    strIdsPrjsToIgnore += "," + prjFils.Id.ToString();
                    //filtre = CFiltreData.GetAndFiltre(filtre, new CFiltreDataAvance(CProjet.c_nomTable, CProjet.c_champId + " not in (" + strIdsPrjsToIgnore +")"));
                    CListeObjetsDonnees lstPrjs    = new CListeObjetsDonnees(ProjetEnCreation.ContexteDonnee, typeof(CProjet), filtre);
                    CFormListeProjet    frmProjets = new CFormListeProjet(lstPrjs);
                    nouveauProjet = (CProjet)CFormNavigateurPopupListe.SelectObject(frmProjets, null, "");

                    if (nouveauProjet == null)
                    {
                        return;
                    }
                }

                nouveauProjet.Projet = ProjetEnCreation;

                nouveauProjet.DesignerProjetX = e.X;
                nouveauProjet.DesignerProjetY = e.Y;

                wndNouvelEle = new CWndProjetBrique(nouveauProjet);
                break;


            case EModeEditeurProjet.Intervention:
                if (BeforeAddElement != null && !BeforeAddElement())
                {
                    break;
                }

                CIntervention nouvelleInter;

                if (m_bModeCreation)
                {
                    nouvelleInter = new CIntervention(WndProjetEdite.Projet.ContexteDonnee);
                    nouvelleInter.CreateNew();
                }
                else
                {
                    CFiltreData             filtre    = new CFiltreDataAvance(CIntervention.c_nomTable, "HasNo(" + CProjet.c_champId + ")");
                    CListeObjetsDonnees     lstInter  = new CListeObjetsDonnees(ProjetEnCreation.ContexteDonnee, typeof(CIntervention), filtre);
                    CFormListeInterventions frmInters = new CFormListeInterventions(lstInter);
                    nouvelleInter = (CIntervention)CFormNavigateurPopupListe.SelectObject(frmInters, null, "");
                    if (nouvelleInter == null)
                    {
                        return;
                    }
                }

                nouvelleInter.DesignerProjetX = e.X;
                nouvelleInter.DesignerProjetY = e.Y;
                nouvelleInter.Projet          = WndProjetEdite.Projet;
                wndNouvelEle = new CWndIntervention(nouvelleInter);
                break;

            case EModeEditeurProjet.LienStart:
                I2iObjetGraphique o = WndProjetEdite.GetObjetFilsFromPoint(ptSouris);
                if (o != null && o is IWndElementDeProjetPlanifiable)
                {
                    m_eleDebutLien = (IWndElementDeProjetPlanifiable)o;
                    ModeEdition    = EModeEditeurProjet.LienEnd;
                }

                break;

            case EModeEditeurProjet.LienEnd:
                ModeEdition = EModeEditeurProjet.LienStart;
                I2iObjetGraphique ele = WndProjetEdite.GetObjetFilsFromPoint(ptSouris);
                bool bCreer           = true;
                if (ele != null && ele != m_eleDebutLien && ele is IWndElementDeProjetPlanifiable)
                {
                    foreach (I2iObjetGraphique objet in ObjetEdite.Childs)
                    {
                        if (objet is CWndLienDeProjet)
                        {
                            CWndLienDeProjet wndLien = (CWndLienDeProjet)objet;
                            if (wndLien.ElementArrivee == m_eleDebutLien &&
                                wndLien.ElementDepart == ele ||
                                wndLien.ElementArrivee == ele &&
                                wndLien.ElementDepart == m_eleDebutLien)
                            {
                                bCreer = false;
                                break;
                            }
                        }
                    }

                    if (bCreer && BeforeAddElement != null && !BeforeAddElement())
                    {
                        break;
                    }

                    if (bCreer)
                    {
                        CLienDeProjet lien = new CLienDeProjet(WndProjetEdite.Projet.ContexteDonnee);
                        lien.CreateNewInCurrentContexte();
                        lien.ElementA = m_eleDebutLien.ElementDuProjet;
                        lien.ElementB = ((IWndElementDeProjetPlanifiable)ele).ElementDuProjet;
                        lien.Projet   = WndProjetEdite.Projet;

                        CWndLienDeProjet wndLien = new CWndLienDeProjet(lien);
                        wndLien.ElementDepart  = (IWndElementDeProjetPlanifiable)m_eleDebutLien;
                        wndLien.ElementArrivee = (IWndElementDeProjetPlanifiable)ele;
                        wndNouvelEle           = wndLien;
                        ModeEdition            = EModeEditeurProjet.LienStart;
                    }
                }
                break;
            }
            if (wndNouvelEle != null)
            {
                Point pt = new Point(ptSouris.X - wndNouvelEle.Size.Width / 2, ptSouris.Y - wndNouvelEle.Size.Height / 2);
                wndNouvelEle.Position = pt;
                WndProjetEdite.AddChild(wndNouvelEle);

                Selection.Clear();
                Selection.Add(wndNouvelEle);
                //Refresh();

                if (AfterAddElement != null)
                {
                    AfterAddElement(wndNouvelEle);
                }
            }
        }