public static void InitMenuActions(
     CObjetDonneeAIdNumerique objet,
     ToolStripItemCollection listMenusARemplir,
     MenuActionEventHandler onClickMenuActionEventHandler)
 {
     listMenusARemplir.Clear();
     IDeclencheurAction[] declencheurs = CRecuperateurDeclencheursActions.GetActionsManuelles(objet, true);
     if (declencheurs.Length != 0)
     {
         foreach (IDeclencheurAction declencheur in declencheurs)
         {
             string strMenu = "";
             if (declencheur is IDeclencheurActionManuelle)
             {
                 strMenu = ((IDeclencheurActionManuelle)declencheur).MenuManuel;
             }
             string[] strMenus = strMenu.Split('/');
             ToolStripItemCollection listeSousMenus = listMenusARemplir;
             if (strMenus.Length > 0)
             {
                 foreach (string strSousMenu in strMenus)
                 {
                     if (strSousMenu.Trim().Length > 0)
                     {
                         ToolStripMenuItem sousMenu = null;
                         foreach (ToolStripMenuItem item in listeSousMenus)
                         {
                             if (item.Text == strSousMenu)
                             {
                                 sousMenu = item;
                                 break;
                             }
                         }
                         if (sousMenu == null)
                         {
                             sousMenu = new ToolStripMenuItem(strSousMenu);
                             listeSousMenus.Add(sousMenu);
                         }
                         listeSousMenus = sousMenu.DropDownItems;
                     }
                 }
             }
             CMenuItemActionManuelle itemAction = new CMenuItemActionManuelle(declencheur, objet);
             if (onClickMenuActionEventHandler != null)
             {
                 itemAction.OnMenuAction += new MenuActionEventHandler(onClickMenuActionEventHandler);
             }
             listeSousMenus.Add(itemAction);
         }
     }
     if (listMenusARemplir.Count == 0)
     {
         ToolStripMenuItem itemActionVide = new ToolStripMenuItem(I.T("(None)|10074"));
         itemActionVide.Enabled = false;
         listMenusARemplir.Add(itemActionVide);
     }
 }
        /// //////////////////////////////////////////////////////////////////////////
        public CResultAErreur DeclencheEvenementStatiques(Type typeObjet, CDbKey dbKeyObjet)
        {
            CResultAErreur result = CResultAErreur.True;

            using (CContexteDonnee contexte = new CContexteDonnee(IdSession, true, false))
            {
                CObjetDonneeAIdNumerique objet = (CObjetDonneeAIdNumerique)Activator.CreateInstance(typeObjet, new object[] { contexte });
                if (!objet.ReadIfExists(dbKeyObjet))
                {
                    result.EmpileErreur(I.T("The @1 object with id @2 doesn't exist|106", DynamicClassAttribute.GetNomConvivial(typeObjet), dbKeyObjet.StringValue));
                    return(result);
                }
                IDeclencheurAction[] declencheurs = CRecuperateurDeclencheursActions.GetDeclencheursAssocies(objet);
                foreach (IDeclencheurAction declencheur in declencheurs)
                {
                    if (declencheur is CEvenement)
                    {
                        CEvenement evt = (CEvenement)declencheur;
                        CInfoDeclencheurProcess infoDeclencheur = new CInfoDeclencheurProcess();
                        bool bShouldDeclenche = false;
                        if (!evt.DejaDeclenchePourEntite(objet))
                        {
                            bShouldDeclenche = evt.ParametreDeclencheur.ShouldDeclenche(
                                objet,
                                false,
                                true,
                                ref infoDeclencheur);
                        }
                        if (bShouldDeclenche)
                        {
                            evt.EnregistreDeclenchementEvenement(objet, infoDeclencheur);
                        }
                        if (!result)
                        {
                            return(result);
                        }
                    }
                }
            }
            return(result);
        }
        //----------------------------------------------------
        private void Init()
        {
            Visible = m_etapeEnCours != null;
            CBlocWorkflowFormulaire blocFormulaire = m_etapeEnCours != null &&
                                                     m_etapeEnCours.TypeEtape != null ?
                                                     m_etapeEnCours.TypeEtape.Bloc as CBlocWorkflowFormulaire : null;

            SetSecondaireEdite(null);
            if (blocFormulaire == null)
            {
                return;
            }
            if (blocFormulaire.HideAfterValidation && m_etapeEnCours.EtatCode == (int)EEtatEtapeWorkflow.Terminée)
            {
                SetEtapeEnCours(null, null);
                return;
            }
            ResetClignote();
            this.SuspendDrawing();
            m_lblNomEtape.Text = m_etapeEnCours.Libelle;
            if (blocFormulaire.FormuleInstructions != null)
            {
                C2iExpression expInstructions         = blocFormulaire.FormuleInstructions;
                CContexteEvaluationExpression ctxEval = new CContexteEvaluationExpression(m_etapeEnCours);
                CResultAErreur result = expInstructions.Eval(ctxEval);
                if (result && result.Data != null)
                {
                    m_lblInstructions.Text = result.Data.ToString();
                }
                else
                {
                    m_lblInstructions.Text = m_etapeEnCours.Libelle + Environment.NewLine +
                                             result.Erreur.ToString();
                }
            }
            //m_btnTerminer.Visible = m_etapeEnCours.EtatCode == (int)EEtatEtapeWorkflow.Démarrée;
            if (m_formulaire != null)
            {
                bool bConsultationOnly = m_etapeEnCours.EtatCode != (int)EEtatEtapeWorkflow.Démarrée;
                if (m_etapeEnCours.EtatCode == (int)EEtatEtapeWorkflow.Terminée &&
                    !blocFormulaire.LockerElementEditeEnFinDEtape)
                {
                    bConsultationOnly = false;
                }
                m_formulaire.ConsultationOnly = bConsultationOnly;
            }
            m_bIsCollapse = false;
            UpdateImagePanelBas();
            m_btnTerminer.Visible = m_etapeEnCours.DateFin == null && m_etapeEnCours.DateDebut != null;
            m_btnTerminer.Enabled = !m_etapeEnCours.EstGelee;
            m_btnAnnuler.Visible  = !blocFormulaire.MasquerSurChangementDeFormulaire || m_etapeEnCours.DateFin != null;
            m_btnActions.Visible  = CRecuperateurDeclencheursActions.GetActionsManuelles(m_etapeEnCours, true).Count() > 0;

            Image imgTask = m_etapeEnCours.EtatCode == (int)EEtatEtapeWorkflow.Terminée ?
                            Resources._1346738948_taskok : Resources._1346738948_task;

            if (m_etapeEnCours.EstGelee)
            {
                imgTask = Resources._1346738948_task_pending;
            }
            SetImageTask(imgTask);

            int nHeight = m_panelTop.Height + m_panelInstructions.Height + m_panelBas.Height +
                          ClientSize.Height - Size.Height;
            bool bShowFormulaireSecondaire = false;

            if (blocFormulaire.DbKeyFormulaireSecondaire != null &&
                blocFormulaire.FormuleElementEditeSecondaire != null)
            {
                CContexteEvaluationExpression ctxEval = new CContexteEvaluationExpression(m_etapeEnCours);
                CResultAErreur result = blocFormulaire.FormuleElementEditeSecondaire.Eval(ctxEval);
                CObjetDonnee   objet  = result.Data as CObjetDonnee;
                if (result && objet != null)
                {
                    CFormulaire formulaire = new CFormulaire(m_etapeEnCours.ContexteDonnee);
                    if (formulaire.ReadIfExists(blocFormulaire.DbKeyFormulaireSecondaire))
                    {
                        C2iWnd wnd = formulaire.Formulaire;
                        if (wnd != null)
                        {
                            Size = new Size(Size.Width,
                                            nHeight +
                                            wnd.Size.Height + 2);
                            if (blocFormulaire.SecondaireEnEdition)
                            {
                                objet.BeginEdit();
                            }
                            m_panelFormulalire.InitPanel(wnd, objet);
                            SetSecondaireEdite(blocFormulaire.SecondaireEnEdition ? objet : null);
                            if (!blocFormulaire.SecondaireEnEdition)
                            {
                                m_panelFormulalire.LockEdition = true;
                            }
                            else
                            {
                                m_panelFormulalire.LockEdition = m_etapeEnCours.DateFin != null;
                            }

                            bShowFormulaireSecondaire = true;
                        }
                    }
                }
            }
            if (!bShowFormulaireSecondaire)
            {
                Size = new Size(Size.Width, nHeight);
            }
            m_nSizeUncollapse = Size.Height;
            this.ResumeDrawing();
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void m_btnActions_Click(object sender, System.EventArgs e)
        {
            CListeObjetsDonnees listeCheckes = m_panelListe.GetElementsCheckes();

            if (listeCheckes.Count == 0)
            {
                CFormAlerte.Afficher(I.T("No element selected for action execution|1011"), EFormAlerteType.Exclamation);
                return;
            }

            CDonneesActeurUtilisateur user = CUtilSession.GetUserForSession(m_panelListe.ListeObjets.ContexteDonnee);
            bool bIsAdmin = user != null && user.GetDonneeDroit(CDroitDeBaseSC2I.c_droitAdministrationSysteme) != null;

            Hashtable listeActions = new Hashtable();

            using (CWaitCursor curseur = new CWaitCursor())
            {
                bool bFirst = true;
                //Cherche les actions applicables à tous les éléments
                foreach (CObjetDonneeAIdNumerique objet in listeCheckes)
                {
                    IDeclencheurAction[] declencheurs = CRecuperateurDeclencheursActions.GetActionsManuelles(objet, false);
                    Hashtable            newTbl       = new Hashtable();
                    foreach (IDeclencheurAction declencheur in declencheurs)
                    {
                        if (bFirst || listeActions[declencheur] != null)
                        {
                            newTbl[declencheur] = true;
                        }
                    }
                    bFirst = false;
                    if (newTbl.Count == 0 && !bIsAdmin)
                    {
                        CFormAlerte.Afficher(I.T("There is no action to execute on the selected elements|1012"), EFormAlerteType.Exclamation);
                        return;
                    }
                    listeActions = newTbl;
                }
            }
            m_menuActions.MenuItems.Clear();
            foreach (IDeclencheurAction declencheur in listeActions.Keys)
            {
                string strMenu = "";
                if (declencheur is IDeclencheurActionManuelle)
                {
                    strMenu = ((IDeclencheurActionManuelle)declencheur).MenuManuel;
                }
                string[] strMenus = strMenu.Split('/');
                Menu.MenuItemCollection listeSousMenus = m_menuActions.MenuItems;
                if (strMenus.Length > 0)
                {
                    foreach (string strSousMenu in strMenus)
                    {
                        if (strSousMenu.Trim().Length > 0)
                        {
                            MenuItem sousMenu = null;
                            foreach (MenuItem item in listeSousMenus)
                            {
                                if (item.Text == strSousMenu)
                                {
                                    sousMenu = item;
                                    break;
                                }
                            }
                            if (sousMenu == null)
                            {
                                sousMenu = new MenuItem(strSousMenu);
                                listeSousMenus.Add(sousMenu);
                            }
                            listeSousMenus = sousMenu.MenuItems;
                        }
                    }
                }
                CMenuItemDeclencheur itemAction = new CMenuItemDeclencheur(declencheur);
                itemAction.Click += new EventHandler(MenuDeclencheurClick);
                listeSousMenus.Add(itemAction);
            }

            if (bIsAdmin)
            {
                m_menuActions.MenuItems.Add(new MenuItem());
                MenuItem itemApplyFormula = new MenuItem(I.T("Apply formula|20834"));
                m_menuActions.MenuItems.Add(itemApplyFormula);
                itemApplyFormula.Click += new EventHandler(itemApplyFormula_Click);
            }
            m_menuActions.Show(m_btnActions, new Point(0, m_btnActions.Height));
        }