//----------------------------------------------------------------- void menuAddSousElement_Click(object sender, EventArgs e) { CMenuAddSousElement menu = sender as CMenuAddSousElement; if (menu != null) { CODEQFromObjetsSource objet = menu.SousElement; List <IObjetDeEasyQuery> lstSources = new List <IObjetDeEasyQuery>(); foreach (I2iObjetGraphique obj in Selection) { if (obj is IObjetDeEasyQuery) { lstSources.Add(obj as IObjetDeEasyQuery); } } if (lstSources.Count == Selection.Count) { Point pt = lstSources[0].Position; pt.Offset(new Point(lstSources[0].Size.Width * 2, lstSources[0].Size.Height / 3)); objet.Position = pt; objet.Parent = ObjetEdite; objet.ElementsSource = lstSources.ToArray(); if (EditeProprietes(objet)) { ObjetEdite.AddChild(objet); Refresh(); } } } }
//----------------------------------------------------------------- protected override void AfficherMenuAdditonnel(System.Windows.Forms.ContextMenuStrip menu) { base.AfficherMenuAdditonnel(menu); //Ajoute les menus foreach (ToolStripItem item in new ArrayList(m_menuActionsSurTables.Items)) { menu.Items.Add(item); } m_menuProperties.Visible = Selection.Count == 1 && CanEditeProprietes(Selection[0]); //Menu add m_menuAddSousElement.DropDownItems.Clear(); if (Selection.Count >= 1) { CheckState? expandedState = null; Dictionary <Type, int> lstType = new Dictionary <Type, int>(); foreach (I2iObjetGraphique obj in Selection) { CODEQBase objet = obj as CODEQBase; if (objet != null) { if (expandedState == null) { if (objet.IsExpanded) { expandedState = CheckState.Checked; } else { expandedState = CheckState.Unchecked; } } else { if (expandedState.Value == CheckState.Checked && !objet.IsExpanded || expandedState.Value == CheckState.Unchecked && objet.IsExpanded) { expandedState = CheckState.Indeterminate; } } foreach (Type tp in objet.TypesDerivesPossibles) { int nNb = 0; if (lstType.ContainsKey(tp)) { nNb = lstType[tp]; } nNb++; lstType[tp] = nNb; } } } m_menuExpandTable.CheckState = expandedState != null ? expandedState.Value : CheckState.Unchecked; foreach (KeyValuePair <Type, int> kv in lstType) { if (kv.Value == Selection.Count) { CODEQFromObjetsSource sousElement = Activator.CreateInstance(kv.Key) as CODEQFromObjetsSource; if (sousElement != null && sousElement.NbSourceRequired == Selection.Count) { CMenuAddSousElement subMenu = new CMenuAddSousElement(sousElement); subMenu.Click += new EventHandler(menuAddSousElement_Click); m_menuAddSousElement.DropDownItems.Add(subMenu); } } } } m_menuAddSousElement.Visible = m_menuAddSousElement.DropDownItems.Count != 0; //Menu RemplaceSource m_menuRemplaceSource.DropDownItems.Clear(); if (Selection.Count == 1) { CODEQFromObjetsSource tableFromSource = Selection[0] as CODEQFromObjetsSource; if (tableFromSource == null) { m_menuRemplaceSource.Visible = false; } else { m_menuRemplaceSource.Visible = true; IEnumerable <string> nomsParametres = tableFromSource.NomsSources; IObjetDeEasyQuery[] sources = tableFromSource.ElementsSource; for (int n = 0; n < tableFromSource.NbSourceRequired; n++) { ToolStripMenuItem itemSource = new ToolStripMenuItem(); string strText = n < nomsParametres.Count() ? nomsParametres.ElementAt(n) : (n + 1).ToString(); if (sources.Length > n) { strText += " (" + sources[n].NomFinal + ")"; } itemSource.Text = strText; itemSource.Tag = n; itemSource.DropDownItems.Add(new ToolStripMenuItem("")); itemSource.DropDownOpening += itemSource_DropDownOpening; m_menuRemplaceSource.DropDownItems.Add(itemSource); } } } }