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)); }