/// //////////////////////////////////////////
        protected override sc2i.common.CResultAErreur MAJ_Champs()
        {
            CResultAErreur result = base.MAJ_Champs();

            OnChangeVariable();

            if (!(m_cmbProcess.SelectedValue is CProcessInDb))
            {
                result.EmpileErreur(I.T("Select an action|30014"));
            }

            CProcessInDb processInDB = (CProcessInDb )m_cmbProcess.SelectedValue;

            ActionLancerProcess.DbKeyProcess = processInDB.DbKey;

            ActionLancerProcess.ClearExpressionsVariables();
            foreach (string strIdVariable in m_tableIdVariableToFormule.Keys)
            {
                C2iExpression exp = (C2iExpression)m_tableIdVariableToFormule[strIdVariable];
                if (exp != null)
                {
                    ActionLancerProcess.SetExpressionForVariableProcess(strIdVariable, exp);
                }
            }

            ActionLancerProcess.ModeAsynchrone            = m_chkAsynchrone.Checked;
            ActionLancerProcess.SansTrace                 = m_chkSansTrace.Checked;
            ActionLancerProcess.LancerDansUnProcessSepare = m_chkContexteSepare.Checked ||
                                                            !processInDB.Process.PeutEtreExecuteSurLePosteClient;

            CActionPointEntree actionEntree = m_cmbPointEntree.SelectedValue as CActionPointEntree;

            if (actionEntree != null)
            {
                ActionLancerProcess.IdPointEntree = actionEntree.IdObjetProcess;
            }
            else
            {
                ActionLancerProcess.IdPointEntree = -1;
            }
            return(result);
        }
        /// ////////////////////////////////////////////////////////////////
        private void CControlEditionProcess_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            Point   ptMouseUp      = new Point(e.X, e.Y);
            Point   ptSouris       = GetLogicalPointFromDisplay(ptMouseUp);
            CAction nouvelleAction = null;

            switch (ModeEdition)
            {
            case EModeEditeurProcess.Action:
                if (InfoActionACree != null)
                {
                    try
                    {
                        nouvelleAction = (CAction)Activator.CreateInstance(InfoActionACree.TypeAction, new object[] { ProcessEdite });
                    }
                    catch (Exception exp)
                    {
                        throw new Exception(I.T("Error while allocationg an action from type @1|30001", InfoActionACree.TypeAction.ToString()), exp);
                    }
                }
                break;

            case EModeEditeurProcess.Condition:
                nouvelleAction = new CActionCondition(ProcessEdite);
                break;

            case EModeEditeurProcess.EntryPoint:
                nouvelleAction = new CActionPointEntree(ProcessEdite);
                break;

            case EModeEditeurProcess.Jonction:
                nouvelleAction = new CActionJonction(ProcessEdite);
                break;

            case EModeEditeurProcess.Lien1:
                m_actionDebutLien = ProcessEdite.GetActionFromPoint(ptSouris);

                if (m_actionDebutLien != null)
                {
                    CLienAction[] liensTest = m_actionDebutLien.GetLiensSortantsPossibles();
                    if (liensTest.Length == 0)
                    {
                        CFormAlerte.Afficher(I.T("Impossible to add an output link to the action|30002"), EFormAlerteType.Erreur);
                        return;
                    }
                    ModeEdition = EModeEditeurProcess.Lien2;
                }
                break;

            case EModeEditeurProcess.Lien2:
                ModeEdition = EModeEditeurProcess.Lien1;
                CAction action = ProcessEdite.GetActionFromPoint(ptSouris);
                if (action != m_actionDebutLien && action != null)
                {
                    CLienAction[] liens = m_actionDebutLien.GetLiensSortantsPossibles();
                    if (liens.Length == 0)
                    {
                        CFormAlerte.Afficher(I.T("Impossible to add an output link to the action|30002"), EFormAlerteType.Erreur);
                        return;
                    }
                    CLienAction lien = null;
                    if (liens.Length == 1)
                    {
                        lien = liens[0];
                    }
                    else
                    {
                        Point ptEcran = this.PointToScreen(ptMouseUp);
                        lien = CFormSelectLienSortant.SelectLien(liens, ptEcran);
                    }
                    if (lien == null)
                    {
                        ModeEdition = EModeEditeurProcess.Lien2;
                        return;
                    }
                    if (CEditeurActionsEtLiens.EditeObjet(lien))
                    {
                        lien.ActionDepart  = m_actionDebutLien;
                        lien.ActionArrivee = action;
                        ProcessEdite.AddLien(lien);
                        Selection.Clear();
                        RefreshSelectionChanged = true;
                        if (AfterAddElementToProcess != null)
                        {
                            AfterAddElementToProcess(this, new EventArgs());
                        }
                    }
                    ModeEdition = EModeEditeurProcess.Lien1;
                }
                break;
            }
            if (nouvelleAction != null)
            {
                if (CEditeurActionsEtLiens.EditeObjet(nouvelleAction))
                {
                    ProcessEdite.AddAction(nouvelleAction);
                    Point pt = new Point(ptSouris.X - nouvelleAction.Size.Width / 2, ptSouris.Y - nouvelleAction.Size.Height / 2);
                    nouvelleAction.Position = pt;
                    ModeEdition             = EModeEditeurProcess.Selection;
                    RefreshSelectionChanged = false;
                    Selection.Clear();
                    RefreshSelectionChanged = true;
                    Selection.Add(nouvelleAction);
                    if (AfterAddElementToProcess != null)
                    {
                        AfterAddElementToProcess(this, new EventArgs());
                    }
                }
            }
        }