public void InitChamps(CActionSur2iLink action, CObjetPourSousProprietes objetPourSousProprietes) { m_actionEditee = action as CActionSur2iLinkMenuDeroulant; if (m_actionEditee == null) { Visible = false; return; } m_objetPourSousProprietes = objetPourSousProprietes; Visible = true; InitPanelDetailItem(null); m_wndListeMenuItems.Remplir(m_actionEditee.ListeMenuItems); }
//--------------------------------------------------------------------------- public CResultAErreur ExecuteAction(CActionSur2iLinkMenuDeroulant actionMenu, object sender, object objetCible) { CResultAErreur result = CResultAErreur.True; List <ToolStripItem> listeItems = new List <ToolStripItem>(); foreach (IMenuItem item in actionMenu.ListeMenuItems) { bool bAdd = true; if (item.FormuleCondition != null) { CContexteEvaluationExpression ctx = new CContexteEvaluationExpression(objetCible); result = item.FormuleCondition.Eval(ctx); if (result && !CUtilBool.BoolFromObject(result.Data)) { bAdd = false; } } if (bAdd) { IExecuteurSpecifiqueActionMenuItem executeurSpecifique = null; if (m_dicTypeActionExecuteur.TryGetValue(item.GetType(), out executeurSpecifique)) { listeItems.AddRange(executeurSpecifique.GetItemsForContextMenuStrip(item, sender, objetCible)); } } } ContextMenuStrip menuDeroulant = new ContextMenuStrip(); menuDeroulant.Items.Clear(); menuDeroulant.Items.AddRange(listeItems.ToArray()); if (menuDeroulant.Items.Count > 0) { /*if (sender != null) * menuDeroulant.Show((Control)sender, new Point(0, ((Control)sender).Height)); * else*/ menuDeroulant.Show(Cursor.Position); } result.Data = listeItems.ToArray(); return(result); }
/// ///////////////////////////////////////////////////////////////////////////////////// private static CResultAErreur ExecuteActionMenuDeroulant(CActionSur2iLinkMenuDeroulant actionMenu, object sender, object objetCible) { CExecuteurActionSur2iLinkMenuDeroulant executeur = new CExecuteurActionSur2iLinkMenuDeroulant(); return(executeur.ExecuteAction(actionMenu, sender, objetCible)); }