/// <summary> /// Retourne une liste d'objet correspondant à la coordonnée souhaitée /// </summary> /// <param name="coor"></param> /// <param name="ctx"></param> /// <returns></returns> public static List <IObjetACoordonnees> FindObjetsACoordonnees( string coor, IObjetACoordonnees parent, CContexteDonnee ctx) { return(FindObjetsACoordonnees(coor, null, parent, ctx)); }
//------------------------------------------------ public void Init(IObjetAFilsACoordonnees parent, IObjetACoordonnees fils) { m_parent = parent; if (parent != null) { EOptionControleCoordonnees?option = parent.OptionsControleCoordonneesApplique; if (option == null) { option = COptionCoordonnéeGlobale.GetOptionType(fils.ContexteDonnee.IdSession, parent.GetType()); } if (!SObjetAvecFilsAvecCoordonnees.IsAppliquable(option.Value, fils)) { LockEdition = true; } else { LockEdition = !m_gestionnaireModeEdition.ModeEdition; } } m_fils = fils; m_strCoorBase = fils.CoordonneeParente; if (m_strCoorBase.Length > 0) { m_strCoorBase += CSystemeCoordonnees.c_separateurNumerotations; } m_txtDebut.Text = m_strCoorBase; m_txtDebut.LockEdition = true; m_txtBoxCoordonnee.Text = fils.Coordonnee; VerifieDonnees(); }
public static bool IsAppliquable(EOptionControleCoordonnees optionControle, IObjetACoordonnees fils) { if (fils.GetType() == typeof(CEquipement)) { if ((optionControle & EOptionControleCoordonnees.IgnorerLesEquipements) == EOptionControleCoordonnees.IgnorerLesEquipements) { return(false); } } if (fils.GetType() == typeof(CSite)) { if ((optionControle & EOptionControleCoordonnees.IgnorerLesSites) == EOptionControleCoordonnees.IgnorerLesSites) { return(false); } } if (fils.GetType() == typeof(CStock)) { if ((optionControle & EOptionControleCoordonnees.IgnorerLesStocks) == EOptionControleCoordonnees.IgnorerLesStocks) { return(false); } } return(true); }
//--------------------------------------- private bool PlaceFilsACoordonnées(IObjetACoordonnees fils, CNiveauCoordonnee[] niveaux) { if (niveaux == null || niveaux.Length == 0) { return(false); } C2iComposant3D composant = fils.GetComposantPhysique(); if (composant == null) { return(false); } IEnumerable <IComposantPourObjetACoordonnées> lstPossibles = GetTousLesFilsPourElementsACoordonnées(niveaux[0].Prefixe); if (lstPossibles.Count() > 0) { IComposantPourObjetACoordonnées composantParent = lstPossibles.ElementAt(0); if (niveaux.Length == 1) { return(composantParent.AddFilsWithIndex(composant, niveaux[0].Index)); } else { List <CNiveauCoordonnee> lst = new List <CNiveauCoordonnee>(niveaux); lst.RemoveAt(0); return(composant.PlaceFilsACoordonnées(fils, lst.ToArray())); } } return(false); }
public void Init(CContexteDonnee contexteFonctionnement, IObjetACoordonnees objetRacine, EObjetACoordonnee critere) { m_objetRacine = objetRacine; m_ctx = contexteFonctionnement; m_txtBoxCoordonnee.ForeColor = Color.Blue; m_chklstCriteres.SetItemChecked(0, true); m_chklstCriteres.SetItemChecked(1, true); m_chklstCriteres.SetItemChecked(2, true); m_chklstCriteres.SetItemChecked(3, true); }
//--------------------------------------- public virtual bool PlaceFilsACoordonnées(IObjetACoordonnees fils) { IObjetAFilsACoordonnees parent = fils.ConteneurFilsACoordonnees; if (parent == null) { return(false); } CParametrageSystemeCoordonnees paramCoord = parent.ParametrageCoordonneesApplique; if (paramCoord == null) { return(false); } CNiveauCoordonnee[] niveaux = paramCoord.DecodeCoordonnee(fils.Coordonnee); return(PlaceFilsACoordonnées(fils, niveaux)); }
public static void NaviguerVersObjetACoordonnee(IObjetACoordonnees obj) { Type t = typeof(string); CReferenceTypeForm refTypeForm = null; if (obj is CEntiteOrganisationnelle) { //t = CFormFinder.GetTypeFormToEdit(typeof(CEntiteOrganisationnelle)); refTypeForm = CFormFinder.GetRefFormToEdit(typeof(CEntiteOrganisationnelle)); } else if (obj is CSite) { //t = CFormFinder.GetTypeFormToEdit(typeof(CSite)); refTypeForm = CFormFinder.GetRefFormToEdit(typeof(CSite)); } else if (obj is CStock) { //t = CFormFinder.GetTypeFormToEdit(typeof(CStock)); refTypeForm = CFormFinder.GetRefFormToEdit(typeof(CStock)); } else if (obj is CEquipement) { //t = CFormFinder.GetTypeFormToEdit(typeof(CEquipement)); refTypeForm = CFormFinder.GetRefFormToEdit(typeof(CEquipement)); } //if (typeof(IFormNavigable).IsAssignableFrom(t)) //{ // IFormNavigable iformnav = (IFormNavigable)Activator.CreateInstance(t, new object[] { obj }); // CTimosApp.Navigateur.AffichePage(iformnav); //} if (refTypeForm != null) { IFormNavigable iformnav = refTypeForm.GetForm((CObjetDonneeAIdNumeriqueAuto)obj) as IFormNavigable; if (iformnav != null) { CTimosApp.Navigateur.AffichePage(iformnav); } } }
//---------------------------------------------------------------------- public static bool EditeCoordonnee( Point ptSouris, IObjetAFilsACoordonnees parent, IObjetACoordonnees fils, ref string strCoordonnee) { if (parent == null) { return(false); } if (fils == null) { return(false); } if (parent.ParametrageCoordonneesApplique == null) { CFormAlerte.Afficher(I.T("No coordinate system defined|30124"), EFormAlerteType.Erreur); return(false); } CFormPopupSaisieCoordonnee form = new CFormPopupSaisieCoordonnee(); form.m_parent = parent; form.m_fils = fils; form.m_strCoordonnee = strCoordonnee; if (ptSouris.X + form.Width > Screen.PrimaryScreen.WorkingArea.Width) { ptSouris.X = Screen.PrimaryScreen.WorkingArea.Width - form.Width; } form.Location = ptSouris; bool bResult = form.ShowDialog() == DialogResult.OK; if (bResult) { strCoordonnee = form.m_strCoordonnee; } return(bResult); }
/// <summary> /// Vérifie que la coordonnée demandée est valide pour le fils demandé dans le /// parent demandé /// </summary> /// <param name="parent"></param> /// <param name="fils"></param> /// <param name="strCoordonnee"></param> /// <returns></returns> public static CResultAErreur VerifieCoordonneeFils(IObjetAFilsACoordonnees parent, IObjetACoordonnees fils, string strCoordonnee) { CResultAErreur result = CResultAErreur.True; ///Vérifie qu'on a ce qu'il faut pour bosser !! if (parent == null) { result.EmpileErreur(I.T("Impossible to check the coordinates of an object which is not positioned|259")); return(result); } if (fils == null) { return(result); } CParametrageSystemeCoordonnees parametrage = parent.ParametrageCoordonneesApplique; if (parametrage == null || parametrage.SystemeCoordonnees == null) { return(result); } EOptionControleCoordonnees?optionControle = parent.OptionsControleCoordonneesApplique; if (optionControle == null) { optionControle = COptionCoordonnéeGlobale.GetOptionType(fils.ContexteDonnee.IdSession, parent.GetType()); } if (!IsAppliquable(optionControle.Value, fils)) { return(result); } //Test Coordonnée vide if (strCoordonnee == "") { if ((optionControle & EOptionControleCoordonnees.IgnorerLesFilsSansCoordonnees) == EOptionControleCoordonnees.IgnorerLesFilsSansCoordonnees) { return(result); } else { result.EmpileErreur(I.T("Mandatory coordinate|258")); return(result); } } ///Vérifie que la coordonnée a le bon format result = parametrage.VerifieCoordonnee(strCoordonnee); if (!result) { return(result); } string strCoordonneeFin = strCoordonnee; COccupationCoordonnees occupation = fils.OccupationCoordonneeAppliquee; //Prend en compte l'occupation if ((optionControle & EOptionControleCoordonnees.IgnorerLoccupation) != EOptionControleCoordonnees.IgnorerLoccupation) { if (occupation == null) { result.EmpileErreur(I.T("No occupation defined : control is impossible|256")); return(result); } if (occupation.NbUnitesOccupees < 1) { result.EmpileErreur(I.T("Incorrect number of occupied units|257")); return(result); } if (occupation.NbUnitesOccupees != 1) //1->coord fin = coord début ! { result = parametrage.SystemeCoordonnees.AjouteDansNiveau(strCoordonnee, occupation.NbUnitesOccupees - 1); if (!result) { return(result); } strCoordonneeFin = (string)result.Data; //Vérifie que la coordonnée de fin est correcte result = parametrage.VerifieCoordonnee(strCoordonneeFin); if (!result) { return(result); } } } //Vérifie que l'unité est cohérente if ((optionControle & EOptionControleCoordonnees.IgnorerLesUnites) != EOptionControleCoordonnees.IgnorerLesUnites && !fils.IgnorerUnite) { if (occupation == null) { result.EmpileErreur(I.T("No occupation defined : control is impossible|256")); return(result); } result = parametrage.SystemeCoordonnees.VerifieUnite(strCoordonnee, occupation.Unite); if (!result) { return(result); } } //Vérifie que la coordonnée n'est pas déjà occupée if ((optionControle & EOptionControleCoordonnees.AutoriserPlusieursFilsSurLaMemeCoordonnee) != EOptionControleCoordonnees.AutoriserPlusieursFilsSurLaMemeCoordonnee) { List <IObjetACoordonnees> lstobj = new List <IObjetACoordonnees>(); lstobj = parent.FilsACoordonnees; //On exclu l'objet actuel si il est déjà présent car il ne peut pas rentrer en conflit avec lui même if (lstobj.Contains(fils)) { lstobj.Remove(fils); } result = parametrage.Test_Interactions(strCoordonnee, strCoordonneeFin, lstobj); } result.Data = null; return(result); }
//----------------------------------------- public CResultAErreur IsCoordonneeValide(string strCoordonnee, IObjetACoordonnees objet) { return(SObjetAvecFilsAvecCoordonnees.VerifieCoordonneeFils(this, objet, strCoordonnee)); }
/// <summary> /// Retourne une liste d'objet correspondant à la coordonnée souhaitée /// selon un critère de recherche /// </summary> /// <param name="coor"></param> /// <param name="criteresTypeObjets"></param> /// <param name="ctx"></param> /// <returns></returns> public static List <IObjetACoordonnees> FindObjetsACoordonnees( string coor, EObjetACoordonnee?criteresTypeObjets, IObjetACoordonnees parent, CContexteDonnee ctx) { m_ctx = ctx; List <IObjetACoordonnees> lstObjACoor = new List <IObjetACoordonnees>(); IDsEOsParent = new List <string>(); IDsSitesParent = new List <string>(); IDsStocksParent = new List <string>(); IDsEqtsParent = new List <string>(); lstEOsEnStandBy = new List <CObjetACoordonneesEnStandBy>(); lstSitesEnStandBy = new List <CObjetACoordonneesEnStandBy>(); lstStocksEnStandBy = new List <CObjetACoordonneesEnStandBy>(); lstEquipementsEnStandBy = new List <CObjetACoordonneesEnStandBy>(); lstEOsPoss = new List <CObjetACoordonneesPossible>(); lstSitesPoss = new List <CObjetACoordonneesPossible>(); lstStocksPoss = new List <CObjetACoordonneesPossible>(); lstEquipementsPoss = new List <CObjetACoordonneesPossible>(); bool EOsExists = true; bool SitesExists = true; bool StocksExists = true; bool EqtsExists = true; FirstSearch = true; #region 1 - Determination des critères (ou domaine) de recherche if (!((criteresTypeObjets & EObjetACoordonnee.EntiteOrganisationnelle) == EObjetACoordonnee.EntiteOrganisationnelle) || criteresTypeObjets == null) { EOsExists = false; } if (!((criteresTypeObjets & EObjetACoordonnee.Site) == EObjetACoordonnee.Site) || criteresTypeObjets == null) { SitesExists = false; } if (!((criteresTypeObjets & EObjetACoordonnee.Stock) == EObjetACoordonnee.Stock) || criteresTypeObjets == null) { StocksExists = false; } if (!((criteresTypeObjets & EObjetACoordonnee.Equipement) == EObjetACoordonnee.Equipement) || criteresTypeObjets == null) { EqtsExists = false; } #endregion #region 2 - Recherche des IObjetACoordonnees en descendant niveau par niveau string[] levels = coor.Split(CSystemeCoordonnees.c_separateurNumerotations); if (levels.Length == 0) { return(lstObjACoor); } if (parent != null) { CObjetACoordonneesPossible obj = new CObjetACoordonneesPossible(((IObjetDonneeAIdNumerique)parent).Id.ToString(), parent.Coordonnee); if (parent.GetType() == typeof(CEntiteOrganisationnelle)) { m_lstEOsPoss.Add(obj); } if (parent.GetType() == typeof(CSite)) { m_lstSitesPoss.Add(obj); } if (parent.GetType() == typeof(CStock)) { m_lstStocksPoss.Add(obj); } if (parent.GetType() == typeof(CEquipement)) { m_lstEqtsPoss.Add(obj); } FirstSearch = false; } for (int level = 0; level < levels.Length; level++) { int nbEOs = 0; int nbSites = 0; int nbStocks = 0; int nbEqts = 0; lstEOsPoss = new List <CObjetACoordonneesPossible>(); lstSitesPoss = new List <CObjetACoordonneesPossible>(); lstStocksPoss = new List <CObjetACoordonneesPossible>(); lstEquipementsPoss = new List <CObjetACoordonneesPossible>(); //WakeUp WakeUpObjs(levels[level]); //EOs nbEOs += FindFilsACoor(EObjetACoordonnee.EntiteOrganisationnelle, levels[level]); //Sites nbSites += FindFilsACoor(EObjetACoordonnee.Site, levels[level]); //Stocks nbStocks += FindFilsACoor(EObjetACoordonnee.Stock, levels[level]); //Equipements nbEqts += FindFilsACoor(EObjetACoordonnee.Equipement, levels[level]); FirstSearch = false; //Mise en Stand By int nextLevel = level + 1; if (nextLevel < levels.Length) { List <string> LevelsSuivants = new List <string>(); for (int nl = nextLevel; nl < levels.Length; nl++) { LevelsSuivants.Add(levels[nl]); } MiseEnStandBy(LevelsSuivants); } //if (nbEOs == 0 && lstEOsEnStandBy.Count == 0) // EOsExists = false; //if (nbEqts == 0 && lstEquipementsEnStandBy.Count == 0) // EqtsExists = false; //if (nbStocks == 0 && lstStocksEnStandBy.Count == 0) // StocksExists = false; //if (nbSites == 0 && lstStocksEnStandBy.Count == 0) // SitesExists = false; if (!(EOsExists && SitesExists && StocksExists && EqtsExists)) { return(lstObjACoor); } } #endregion // 3 - On ajoute les objets restant en stand by // 3 - Ajout des IObjetACoordonnees trouvés à la liste if (EOsExists) { foreach (CObjetACoordonneesEnStandBy o in lstEOsEnStandBy) { lstEOsPoss.Add(new CObjetACoordonneesPossible(o)); } if (lstEOsPoss.Count > 0) { AddIObjetACoorOfIDs(ref lstObjACoor, EObjetACoordonnee.EntiteOrganisationnelle); } } if (SitesExists) { foreach (CObjetACoordonneesEnStandBy o in lstSitesEnStandBy) { lstSitesPoss.Add(new CObjetACoordonneesPossible(o)); } if (lstSitesPoss.Count > 0) { AddIObjetACoorOfIDs(ref lstObjACoor, EObjetACoordonnee.Site); } } if (StocksExists) { foreach (CObjetACoordonneesEnStandBy o in lstStocksEnStandBy) { lstStocksPoss.Add(new CObjetACoordonneesPossible(o)); } if (lstStocksPoss.Count > 0) { AddIObjetACoorOfIDs(ref lstObjACoor, EObjetACoordonnee.Stock); } } if (EqtsExists) { foreach (CObjetACoordonneesEnStandBy o in lstEquipementsEnStandBy) { lstEquipementsPoss.Add(new CObjetACoordonneesPossible(o)); } if (lstEquipementsPoss.Count > 0) { AddIObjetACoorOfIDs(ref lstObjACoor, EObjetACoordonnee.Equipement); } } return(lstObjACoor); }