예제 #1
0
        //-----------------------------------------------------------------
        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();
                    }
                }
            }
        }
예제 #2
0
        //-----------------------------------------------------------------
        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);
                    }
                }
            }
        }