Ejemplo n.º 1
0
        private TreeNode CreateNode(object element, TreeNodeCollection nodes)
        {
            TreeNode             node     = null;
            IElementALiensReseau eltALien = element as IElementALiensReseau;

            if (eltALien != null)
            {
                node     = new TreeNode(eltALien.Libelle);
                node.Tag = eltALien;
            }
            IEtapeLienReseau etape = element as IEtapeLienReseau;

            if (etape != null)
            {
                if (node == null)
                {
                    node           = new TreeNode(etape.Libelle);
                    node.Tag       = etape;
                    node.BackColor = Color.LightCyan;
                }
            }
            if (node == null)
            {
                return(null);
            }
            nodes.Add(node);
            if (etape != null)
            {
                TreeNode dummy = new TreeNode("");
                dummy.Tag = null;
                node.Nodes.Add(dummy);
            }
            return(node);
        }
Ejemplo n.º 2
0
        //----------------------------------------------
        private void m_btnOk_Click(object sender, EventArgs e)
        {
            if (m_arbre.SelectedNode.Tag == null)
            {
                return;
            }
            m_elementSelectionne = m_arbre.SelectedNode.Tag as IElementALiensReseau;
            TreeNode parent = m_arbre.SelectedNode.Parent;
            List <IEtapeLienReseau> lstEtapes = new List <IEtapeLienReseau>();

            while (parent != null)
            {
                IEtapeLienReseau etape = parent.Tag as IEtapeLienReseau;
                if (etape != null)
                {
                    lstEtapes.Insert(0, etape);
                }
                parent = parent.Parent;
            }
            m_etapes = lstEtapes.ToArray();
            if (m_elementSelectionne != null)
            {
                DialogResult = DialogResult.OK;
                Close();
            }
        }
Ejemplo n.º 3
0
        private void m_arbre_BeforeExpand(object sender, TreeViewCancelEventArgs e)
        {
            TreeNode node = e.Node;

            if (node.Nodes.Count == 1 && node.Nodes[0].Tag == null)
            {
                node.Nodes.Clear();
                IEtapeLienReseau etape = node.Tag as IEtapeLienReseau;
                if (etape != null)
                {
                    //Trie les éléments par type
                    Dictionary <Type, ArrayList> dicParType = new Dictionary <Type, ArrayList>();
                    foreach (IElementALiensReseau elt in etape.ElementsALiensContenus)
                    {
                        ArrayList lst = null;
                        if (!dicParType.TryGetValue(elt.GetType(), out lst))
                        {
                            lst = new ArrayList();
                            dicParType[elt.GetType()] = lst;
                        }
                        if (!lst.Contains(elt))
                        {
                            lst.Add(elt);
                        }
                    }
                    foreach (IEtapeLienReseau etapeFille in etape.EtapesContenues)
                    {
                        ArrayList lst = null;
                        if (!dicParType.TryGetValue(etapeFille.GetType(), out lst))
                        {
                            lst = new ArrayList();
                            dicParType[etapeFille.GetType()] = lst;
                        }
                        if (!lst.Contains(etapeFille))
                        {
                            lst.Add(etapeFille);
                        }
                    }
                    foreach (KeyValuePair <Type, ArrayList> paire in dicParType)
                    {
                        TreeNode nodeType = new TreeNode(DynamicClassAttribute.GetNomConvivial(paire.Key));
                        nodeType.Tag = paire.Key;
                        foreach (object element in paire.Value)
                        {
                            CreateNode(element, nodeType.Nodes);
                        }
                        nodeType.BackColor = Color.LightYellow;
                        node.Nodes.Add(nodeType);
                    }
                }
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Sélectionne une extremité pour l'objet de schéma demandé.
        /// </summary>
        /// <param name="objetDeSchema"></param>
        /// <returns></returns>
        public static IElementALiensReseau SelectExtremite(IElementDeSchemaReseau eltDeSchema, ref IEtapeLienReseau[] etapes)
        {
            if (eltDeSchema == null)
            {
                return(null);
            }
            IEtapeLienReseau     etape    = eltDeSchema as IEtapeLienReseau;
            IElementALiensReseau eltALien = eltDeSchema as IElementALiensReseau;

            if (etape == null)
            {
                return(eltALien);
            }
            IElementALiensReseau[] elementsPossibles = etape.ElementsALiensContenus;
            IEtapeLienReseau[]     etapesPossibles   = etape.EtapesContenues;
            if (elementsPossibles.Length == 0 && etapesPossibles.Length == 0)
            {
                return(eltALien);
            }
            if (eltALien == null && elementsPossibles.Length == 1 && etapesPossibles.Length == 0)
            {
                etapes = new IEtapeLienReseau[] { etape };
                return(elementsPossibles[0]);
            }
            CFormSelectExtremiteDeElementDeSchema form = new CFormSelectExtremiteDeElementDeSchema();

            form.m_elementDeSchemaRacine = eltDeSchema;
            eltALien      = null;
            form.Location = Cursor.Position;
            if (form.ShowDialog() == DialogResult.OK)
            {
                eltALien = form.m_elementSelectionne;
                etapes   = form.m_etapes;
            }
            form.Dispose();
            return(eltALien);
        }