public static string GetChampIDElement(IWndElementDeProjetPlanifiable ele) { if (ele != null && ele.ElementDuProjet != null) { return(GetChampIDElement(ele.ElementDuProjet.TypeElementDeProjet.Code)); } return(""); }
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; } }
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); } } }