public static bool EditeTypeEntite(CTypeEntiteSnmpPourSupervision typeEntite,
                                           CTypeAgentPourSupervision typeAgent)
        {
            CFormEditTypeEntiteSnmp        form      = new CFormEditTypeEntiteSnmp();
            CTypeEntiteSnmpPourSupervision typeEdite = CCloner2iSerializable.Clone(typeEntite) as CTypeEntiteSnmpPourSupervision;

            form.m_panelEdition.Init(typeEdite, typeAgent);
            bool bResult = false;

            if (form.ShowDialog() == DialogResult.OK)
            {
                CCloner2iSerializable.CopieTo(typeEdite, typeEntite);
                bResult = true;
            }
            form.Dispose();
            return(bResult);
        }
Exemple #2
0
        //--------------------------------------
        public static bool EditeChamp(CChampEntiteFromQuery champ,
                                      CTypeEntiteSnmpPourSupervision typeEntite)
        {
            CFormEditChampEntiteFromQuery form = new CFormEditChampEntiteFromQuery();

            form.m_champEdite = champ;
            form.m_typeEntite = CCloner2iSerializable.Clone(typeEntite) as CTypeEntiteSnmpPourSupervision;
            bool bResult = false;

            if (form.ShowDialog() == DialogResult.OK)
            {
                bResult = true;
                CCloner2iSerializable.CopieTo(form.m_typeEntite, typeEntite);
            }
            form.Dispose();
            return(bResult);
        }
Exemple #3
0
        public static bool EditeQuery(CEasyQuery query)
        {
            CFormEditEasyQuery form  = new CFormEditEasyQuery();
            CEasyQuery         clone = CCloner2iSerializable.Clone(query) as CEasyQuery;

            foreach (CEasyQuerySource source in query.Sources)
            {
                clone.AddSource(source);
            }
            form.m_query = clone;
            bool bResult = false;

            if (form.ShowDialog() == DialogResult.OK)
            {
                bResult = true;
                CCloner2iSerializable.CopieTo(clone, query);
            }
            form.Dispose();
            return(bResult);
        }
        //--------------------------------------
        public static bool EditeChamp(
            CChampEntiteFromQueryToChampCustom champToCustom,
            CTypeEntiteSnmpPourSupervision typeEntite,
            CContexteDonnee contexteDonnee)
        {
            CFormEditChampEntiteFromQueryToChampCustom form = new CFormEditChampEntiteFromQueryToChampCustom();

            form.m_contexteDonnee = contexteDonnee;
            form.m_champToCustom  = CCloner2iSerializable.Clone(champToCustom) as CChampEntiteFromQueryToChampCustom;
            form.m_champEdite     = form.m_champToCustom.Champ;
            form.m_typeEntite     = typeEntite;
            bool bResult = false;

            if (form.ShowDialog() == DialogResult.OK)
            {
                bResult = true;
                CCloner2iSerializable.CopieTo(form.m_champToCustom, champToCustom);
            }
            form.Dispose();
            return(bResult);
        }
Exemple #5
0
        /// <summary>
        /// Crée un process fils à partir des actions d'un process.
        /// Les actions listées sont mises dans le process fils
        /// </summary>
        /// <param name="process"></param>
        /// <param name="actions"></param>
        /// <returns>Le data du result contient le process fils créé</returns>
        public static CResultAErreur CreateForSelection(CAction[] actions)
        {
            CResultAErreur result = CResultAErreur.True;

            if (actions.Length == 0)
            {
                result.EmpileErreur(I.T("Can not create action group from empty selection|20035"));
                return(result);
            }
            CProcess process = actions[0].Process;
            //Vérifie qu'il n'y a qu'un seul lien sortant et un seul lien entrant
            HashSet <CAction> dicActionsInSel = new HashSet <CAction>();

            foreach (CAction action in actions)
            {
                dicActionsInSel.Add(action);
            }
            CLienAction lienEntrant  = null;
            Rectangle   rctEnglobant = actions[0].RectangleAbsolu;

            List <CLienAction> liensSortants = new List <CLienAction>();

            foreach (CAction action in actions)
            {
                foreach (CLienAction lien in action.GetLiensArrivant())
                {
                    if (!dicActionsInSel.Contains(lien.ActionDepart))
                    {
                        if (lienEntrant == null)
                        {
                            lienEntrant = lien;
                            break;
                        }
                        else
                        {
                            result.EmpileErreur(I.T("Selection should contains only one ingoing link|20036"));
                            return(result);
                        }
                    }
                    if (!dicActionsInSel.Contains(lien.ActionArrivee))
                    {
                        if (lien.GetType() != typeof(CLienAction))
                        {
                            result.EmpileErreur(I.T("Can not group actions with complex outgoing link|20037"));
                        }
                    }
                }
                foreach (CLienAction lien in action.GetLiensSortant())
                {
                    if (!dicActionsInSel.Contains(lien.ActionArrivee))
                    {
                        liensSortants.Add(lien);
                    }
                }
                CActionProcessFils pf = action as CActionProcessFils;
                if (pf != null)
                {
                    foreach (IVariableDynamique variable in pf.ProcessFils.ListeVariables)
                    {
                        if (!pf.ProcessFils.IsVariableDeProcessParent(variable))
                        {
                            result.EmpileErreur(I.T("Can not group a group with variables|20039"));
                            return(result);
                        }
                    }
                }

                Rectangle rctAction = action.RectangleAbsolu;
                rctEnglobant.Location = new Point(
                    Math.Min(rctEnglobant.Left, rctAction.Left),
                    Math.Min(rctEnglobant.Top, rctAction.Top));
                rctEnglobant.Size = new Size(
                    Math.Max(rctEnglobant.Width, rctAction.Right - rctEnglobant.Left),
                    Math.Max(rctEnglobant.Height, rctAction.Bottom - rctEnglobant.Top));
            }
            //Crée le process fils
            CActionProcessFils actionFils = new CActionProcessFils(process);

            actionFils.Position = new Point(rctEnglobant.Left + (rctEnglobant.Width - actionFils.Size.Width) / 2,
                                            rctEnglobant.Top + (rctEnglobant.Height - actionFils.Size.Height) / 2);
            CProcess processFils = actionFils.ProcessFils;
            Dictionary <CAction, CAction> dicCorrespondanceActions = new Dictionary <CAction, CAction>();
            int nOffsetX = processFils.GetActionDebut().Position.X - rctEnglobant.Left;
            int nOffsetY = processFils.GetActionDebut().Position.Y + 40 - rctEnglobant.Top;

            foreach (CAction action in actions)
            {
                CAction newAction = Activator.CreateInstance(action.GetType(), new object[] { processFils }) as CAction;

                CCloner2iSerializable.CopieTo(action, newAction);
                newAction.Position = new Point(newAction.Position.X + nOffsetX,
                                               newAction.Position.Y + nOffsetY);
                dicCorrespondanceActions[action] = newAction;
                processFils.AddAction(newAction);
            }
            //copie des liens
            HashSet <CLienAction> hashLiens = new HashSet <CLienAction>();

            //Crée la liste de tous les liens
            foreach (CAction action in actions)
            {
                foreach (CLienAction lien in action.GetLiensSortant())
                {
                    if (!liensSortants.Contains(lien) && !hashLiens.Contains(lien))
                    {
                        hashLiens.Add(lien);
                    }
                }
                foreach (CLienAction lien in action.GetLiensArrivant())
                {
                    if (lien != lienEntrant && !hashLiens.Contains(lien))
                    {
                        hashLiens.Add(lien);
                    }
                }
            }
            foreach (CLienAction lien in hashLiens)
            {
                CAction actionDepart  = null;
                CAction actionArrivee = null;
                if (!dicCorrespondanceActions.TryGetValue(lien.ActionDepart, out actionDepart))
                {
                    result.EmpileErreur(I.T("An error occured during grouping process|20038"));
                    return(result);
                }
                if (!dicCorrespondanceActions.TryGetValue(lien.ActionArrivee, out actionArrivee))
                {
                    result.EmpileErreur(I.T("An error occured during grouping process|20038"));
                    return(result);
                }
                CLienAction newLien = Activator.CreateInstance(lien.GetType(), new object[] { processFils }) as CLienAction;
                CCloner2iSerializable.CopieTo(lien, newLien);
                newLien.ActionArrivee = actionArrivee;
                newLien.ActionDepart  = actionDepart;
                processFils.AddLien(newLien);
            }

            //Crée le lien de départ
            if (lienEntrant != null)
            {
                CLienAction newLienDepart = new CLienAction(processFils);
                newLienDepart.ActionDepart  = processFils.GetActionDebut();
                newLienDepart.ActionArrivee = dicCorrespondanceActions[lienEntrant.ActionArrivee];
                processFils.AddLien(newLienDepart);

                CAction action1     = newLienDepart.ActionArrivee;
                CAction actionStart = newLienDepart.ActionDepart;
                actionStart.Position = new Point(
                    action1.Position.X + (action1.Size.Width - actionStart.Size.Width) / 2,
                    actionStart.Position.Y);
            }

            process.AddAction(actionFils);
            //Modifie le lien de départ
            if (lienEntrant != null)
            {
                lienEntrant.ActionArrivee = actionFils;
            }
            foreach (CLienAction lien in liensSortants)
            {
                lien.ActionDepart = actionFils;
            }
            foreach (CAction action in actions)
            {
                process.RemoveAction(action);
            }
            result.Data = actionFils;
            return(result);
        }
Exemple #6
0
        /// ////////////////////////////////////////////////////////
        ///Le data du result contient la liste des actions dégroupées
        public CResultAErreur Degrouper()
        {
            CResultAErreur result = CResultAErreur.True;

            foreach (IVariableDynamique variable in m_processFils.ListeVariables)
            {
                if (!m_processFils.IsVariableDeProcessParent(variable))
                {
                    result.EmpileErreur(I.T("Can not ungroup a group with variables|20040"));
                    return(result);
                }
            }

            Dictionary <CAction, CAction> dicCorrespondanceActions = new Dictionary <CAction, CAction>();

            foreach (CAction action in m_processFils.Actions)
            {
                if (action.GetType() != typeof(CActionDebut))
                {
                    CAction newAction = Activator.CreateInstance(action.GetType(), new object[] { Process }) as CAction;

                    CCloner2iSerializable.CopieTo(action, newAction);
                    newAction.Position = new Point(newAction.Position.X + Position.X,
                                                   newAction.Position.Y + Position.Y);
                    dicCorrespondanceActions[action] = newAction;
                    Process.AddAction(newAction);
                }
            }

            //Crée les liens
            CLienAction        lienDebut   = null;
            CAction            startAction = m_processFils.GetActionDebut();
            List <CLienAction> lstLiens    = new List <CLienAction>();

            foreach (CLienAction lien in m_processFils.Liens)
            {
                CAction actionDepart  = null;
                CAction actionArrivee = null;
                if (lien.ActionDepart == startAction)
                {
                    lienDebut = lien;
                }
                else
                {
                    if (!dicCorrespondanceActions.TryGetValue(lien.ActionDepart, out actionDepart))
                    {
                        result.EmpileErreur(I.T("An error occured during grouping process|20038"));
                        return(result);
                    }
                    if (!dicCorrespondanceActions.TryGetValue(lien.ActionArrivee, out actionArrivee))
                    {
                        result.EmpileErreur(I.T("An error occured during grouping process|20038"));
                        return(result);
                    }
                    CLienAction newLien = Activator.CreateInstance(lien.GetType(), new object[] { Process }) as CLienAction;
                    CCloner2iSerializable.CopieTo(lien, newLien);
                    newLien.ActionArrivee = actionArrivee;
                    newLien.ActionDepart  = actionDepart;
                    Process.AddLien(newLien);
                }
            }
            //Modifie les liens entrants
            foreach (CLienAction lien in GetLiensArrivant())
            {
                if (lienDebut == null)
                {
                    Process.RemoveLien(lien);
                }
                else
                {
                    //Modifie l'action arrivée du lien
                    lien.ActionArrivee = dicCorrespondanceActions[lienDebut.ActionArrivee];
                }
            }
            CLienAction lienSortant = null;

            foreach (CLienAction lien in GetLiensSortant())
            {
                if (lien.GetType() == typeof(CLienAction))//Lien simple
                {
                    lienSortant = lien;
                }
            }

            List <CAction> lstRetour = new List <CAction>(dicCorrespondanceActions.Values);

            if (lienSortant != null)
            {
                foreach (CAction action in lstRetour)
                {
                    foreach (CLienAction lien in action.GetLiensSortantsPossibles())
                    {
                        if (!(lien is CLienErreur))
                        {
                            lien.ActionDepart  = action;
                            lien.ActionArrivee = lienSortant.ActionArrivee;
                            Process.AddLien(lien);
                        }
                    }
                }
            }

            Process.RemoveAction(this);

            result.Data = lstRetour.AsReadOnly();
            return(result);
        }