Exemple #1
0
        private void PrepareTableRecherche()
        {
            lock (  m_datasetRecherche )
            {
                if (m_datasetRecherche.Tables[m_typeObjets.ToString()] != null)
                {
                    m_datasetRecherche.Tables.Remove(m_typeObjets.ToString());
                }

                DataTable newTable = new DataTable(m_typeObjets.ToString());
                m_datasetRecherche.Tables.Add(newTable);

                CObjetHierarchique objet = (CObjetHierarchique)Activator.CreateInstance(m_typeObjets, new object[] { CSc2iWin32DataClient.ContexteCourant });
                newTable.Columns.Add(objet.ChampLibelle, typeof(string)).MaxLength  = 16000;
                newTable.Columns.Add(c_champLibelleTotal, typeof(string)).MaxLength = 16000;
                newTable.Columns.Add(objet.GetChampId(), typeof(int));
                CListeObjetsDonnees liste = new CListeObjetsDonnees(CSc2iWin32DataClient.ContexteCourant, m_typeObjets);
                liste.Tri = objet.ChampNiveau + "," + objet.ChampLibelle;
                foreach (CObjetHierarchique objetH in liste)
                {
                    DataRow row = newTable.NewRow();
                    row[objetH.GetChampId()] = objetH.Id;
                    row[objetH.ChampLibelle] = RemoveAccents(objetH.Libelle);
                    row[c_champLibelleTotal] = RemoveAccents(GetLibelleComplet(objetH));
                    newTable.Rows.Add(row);
                }
            }
        }
 private void m_btnSupprimer_LinkClicked(object sender, EventArgs e)
 {
     if (m_lastNode.Tag != null)
     {
         if (m_lastNode.Tag is CObjetHierarchique)
         {
             if (CFormAlerte.Afficher(
                     I.T("Delete selected element and all its childs ?|109"),
                     EFormAlerteType.Question) == DialogResult.Yes)
             {
                 CObjetHierarchique objet = (CObjetHierarchique)m_lastNode.Tag;
                 ArrayList          lst   = new ArrayList();
                 lst.Add(objet);
                 CResultAErreur result = m_gestionnaireArbre.Supprimer(lst);
                 if (!result)
                 {
                     CFormAlerte.Afficher(result.Erreur);
                 }
                 else
                 {
                     m_lastNode.Remove();
                     RefreshListe();
                 }
             }
         }
     }
 }
Exemple #3
0
        //----------------------------------------------------------------------------
        private void m_arbre_AfterExpand(object sender, TreeViewEventArgs e)
        {
            TreeNode node = e.Node;

            if (node.Nodes.Count > 0 && node.Nodes[0].Tag == null)
            {
                //il faut reremplir ce noeud
                node.Nodes.Clear();
                CListeObjetsDonnees listeObjets = null;
                listeObjets = ((CObjetHierarchique)node.Tag).ObjetsFils;
                if (listeObjets != null)
                {
                    foreach (CObjetHierarchique objet in listeObjets)
                    {
                        TreeNode newNode = CreateNode(objet);
                        node.Nodes.Add(newNode);
                        CObjetHierarchique objetThis = null;
                        objetThis = m_elementAReaffecter;
                        if (objet.CodeSystemeComplet.Length > objetThis.CodeSystemeComplet.Length &&
                            objet.CodeSystemeComplet.Substring(0, objetThis.CodeSystemeComplet.Length) ==
                            objetThis.CodeSystemeComplet)
                        {
                            node.Expand();
                        }
                    }
                }
            }
        }
Exemple #4
0
        public static bool ReaffecteObjet(CObjetHierarchique element)
        {
            CFormReaffecteObjetHierarchique form = new CFormReaffecteObjetHierarchique();

            form.m_typeObjets         = element.GetType();
            form.m_elementAReaffecter = element;
            bool bResult = false;

            if (form.ShowDialog() == DialogResult.OK)
            {
                TreeNode node = form.m_arbre.SelectedNode;
                if (node != null)
                {
                    CObjetHierarchique parentDemande = (CObjetHierarchique)node.Tag;
                    element.ObjetParent = (CObjetHierarchique)node.Tag;
                    if (parentDemande != null && !parentDemande.Equals(element.ObjetParent))
                    {
                        CFormAlerte.Afficher(I.T("The system cannot reaffect the element|30115"), EFormAlerteType.Erreur);
                    }
                    else
                    {
                        bResult = true;
                    }
                }
            }
            return(bResult);
        }
        //--------------------------------------------------
        private string GetChampNiveau()
        {
            CContexteDonnee    contexteDonnee = sc2i.win32.data.CSc2iWin32DataClient.ContexteCourant;
            CObjetHierarchique objet          = (CObjetHierarchique)Activator.CreateInstance(GetTypeElements(), new object[] { contexteDonnee });
            string             strChampNiveau = objet.ChampNiveau;

            return(strChampNiveau);
        }
        //-----------------------------------------------------------------
        private void m_wndListe_ItemClick(ListViewItem item)
        {
            CObjetHierarchique obj = item != null ? item.Tag as CObjetHierarchique : null;

            if (obj != null)
            {
                CSc2iWin32DataNavigation.Navigateur.EditeElement(obj, false, "");
                Close();
            }
        }
Exemple #7
0
        private void AfficheElement()
        {
            TreeNode node = m_arbre.SelectedNode;

            if (node == null)
            {
                return;
            }
            CObjetHierarchique objet = (CObjetHierarchique)node.Tag;

            AfficheElement(objet);
        }
        //----------------------------------------------------------------------------
        private TreeNode CreateNode(CObjetHierarchique objet)
        {
            TreeNode node = new TreeNode(objet.Libelle);

            node.Tag = objet;
            if (objet.ObjetsFils.Count != 0)
            {
                TreeNode dummy = new TreeNode("");
                dummy.Tag = null;
                node.Nodes.Add(dummy);
            }
            return(node);
        }
Exemple #9
0
        private void m_arbre_DoubleClick(object sender, EventArgs e)
        {
            TreeNode item = m_arbre.SelectedNode;

            if (item != null && item.Tag is CObjetHierarchique)
            {
                ObjetSelectionne = (CObjetHierarchique)item.Tag;
                if (m_arbre != null)
                {
                    m_arbre.Hide();
                }
            }
        }
Exemple #10
0
        //----------------------------------------------------------
        void link_Click(object sender, EventArgs e)
        {
            LinkLabel label = sender as LinkLabel;

            if (label != null)
            {
                CObjetHierarchique objet = label.Tag as CObjetHierarchique;
                if (objet != null)
                {
                    CSc2iWin32DataNavigation.Navigateur.EditeElement(objet, false, "");
                }
            }
        }
        public void Init(CObjetHierarchique objetRacine)
        {
            m_gestionnaireArbre = new CGestionnaireAjoutModifSuppObjetDonnee(GetTypeElements(), GetTypeFormEdition());
            m_gestionnaireArbre.OnNewObjetDonnee += new OnNewObjetDonneeEventHandler(AfterCreateObjet);
            m_objetRacine = objetRacine;
            if (m_objetRacine != null)
            {
                panel1.Visible = false;
            }

            UpdateVisibiliteControles();

            RefreshListe();
            RefreshArbre();
        }
 private void AfterCreateObjet(object sender, CObjetDonnee args, ref bool bCancel)
 {
     if (m_lastNode != null)
     {
         CObjetHierarchique objet = (CObjetHierarchique)args;
         if (m_lastNode.Tag is CObjetHierarchique)
         {
             objet.ObjetParent = (CObjetHierarchique)m_lastNode.Tag;
         }
     }
     if (AfterCreateObjetEvent != null)
     {
         CObjetDonneeEventArgs objArgs = new CObjetDonneeEventArgs((CObjetDonnee)args);
         AfterCreateObjetEvent(this, objArgs);
     }
 }
Exemple #13
0
        //-------------------------------------------------------------------
        private void m_iconModifier_Click(object sender, EventArgs e)
        {
            CObjetHierarchique objetH = m_objetHierarchique as CObjetHierarchique;

            if (objetH != null)
            {
                if (CFormReaffecteObjetHierarchique.ReaffecteObjet(objetH))
                {
                    Init(m_objetHierarchique);
                    if (OnChangeObjetParent != null)
                    {
                        OnChangeObjetParent(this, new EventArgs());
                    }
                }
            }
        }
Exemple #14
0
        public static CObjetHierarchique[] SelectObjets(
            Type typeObjet,
            CObjetHierarchique racine,
            CObjetHierarchique[] listeSelectionnees)
        {
            CFormSelectObjetHierarchique form = new CFormSelectObjetHierarchique();

            form.m_racine           = racine;
            form.m_typeObjets       = typeObjet;
            form.m_arbre.CheckBoxes = true;
            form.m_listeChecked     = new List <CObjetHierarchique>(listeSelectionnees);
            CObjetHierarchique[] retour = null;
            if (form.ShowDialog() == DialogResult.OK)
            {
                retour = form.GetObjetsSelectionnes().ToArray();
            }
            form.Dispose();
            return(retour);
        }
Exemple #15
0
        public static CObjetHierarchique SelectObjet(Type typeObjet, CObjetHierarchique racine)
        {
            CFormSelectObjetHierarchique form = new CFormSelectObjetHierarchique();

            form.m_racine     = racine;
            form.m_typeObjets = typeObjet;
            CObjetHierarchique objetSel = null;

            if (form.ShowDialog() == DialogResult.OK)
            {
                TreeNode node = form.m_arbre.SelectedNode;
                if (node != null)
                {
                    objetSel = (CObjetHierarchique)node.Tag;
                }
            }
            form.Dispose();
            return(objetSel);
        }
Exemple #16
0
        private void m_txtFiltre_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
        {
            int nCode = 0;

            if ((e.Modifiers & Keys.Control) == Keys.Control)
            {
                nCode = (int)e.KeyCode - (int)Keys.NumPad0;
                if (nCode <= 0 || nCode > 9)
                {
                    nCode = (int)e.KeyCode - (int)Keys.D0;
                }
            }
            if (e.KeyCode == Keys.Enter)
            {
                nCode = 1;
            }
            if (nCode > 0 && nCode <= 9)
            {
                if (m_tableClavierToObjet[nCode] != null)
                {
                    CObjetHierarchique objet = (CObjetHierarchique)m_tableClavierToObjet[nCode];
                    TreeNode           node  = (TreeNode)m_tableObjetToNode[objet];
                    if (node.Nodes.Count > 0 && !node.IsExpanded)
                    {
                        node.Expand();
                    }
                    else
                    {
                        ObjetSelectionne = objet;

                        if (m_arbre.Visible)
                        {
                            m_arbre.Hide();
                        }
                    }
                    e.Handled = true;
                }
            }
            if (e.KeyCode == Keys.Tab && m_arbre != null)
            {
                m_arbre.Focus();
            }
        }
Exemple #17
0
        //-------------------------------------------------------------------
        private static void AlloueCode(CObjetHierarchique objet, ref int nLastCodeAlloue)
        {
            CFiltreData filtre = null;

            if (objet.ObjetParent != null)
            {
                filtre = new CFiltreData(objet.ChampIdParent + "=@1",
                                         objet.ObjetParent.Id);
            }
            else
            {
                filtre = new CFiltreData(objet.ChampIdParent + " is null and " +
                                         objet.ChampCodeSystemePartiel + ">@1", GetCle(nLastCodeAlloue, objet.NbCarsParNiveau));
            }

            CListeObjetsDonnees listeSoeurs = new CListeObjetsDonnees(objet.ContexteDonnee, objet.GetType(), filtre);

            listeSoeurs.AssureLectureFaite();

            listeSoeurs.InterditLectureInDB = true;

            Hashtable tableCodesUtilises = new Hashtable();

            foreach (CObjetHierarchique obj in listeSoeurs)
            {
                tableCodesUtilises[obj.CodeSystemePartiel] = true;
            }

            //Cherche le prochain numéro libre
            int    nCpt   = nLastCodeAlloue;
            string strCle = "";

            do
            {
                nCpt++;
                strCle = GetCle(nCpt, objet.NbCarsParNiveau);

                /*listeSoeurs.Filtre = new CFiltreData(objet.ChampCodeSystemePartiel + "=@1",
                 *      strCle);*/
            }while (tableCodesUtilises.ContainsKey(strCle));
            nLastCodeAlloue = nCpt;
            objet.ChangeCodePartiel(strCle);
        }
Exemple #18
0
        //----------------------------------------------------------------------------
        private void CFormSelectObjetHierarchique_Load(object sender, EventArgs e)
        {
            CWin32Traducteur.Translate(this);
            CListeObjetsDonnees liste;

            if (m_racine == null)
            {
                liste = new CListeObjetsDonnees(CSc2iWin32DataClient.ContexteCourant, m_typeObjets);
                CObjetHierarchique objetTmp = (CObjetHierarchique)Activator.CreateInstance(m_typeObjets, new object[] { CSc2iWin32DataClient.ContexteCourant });
                liste.Filtre = new CFiltreData(objetTmp.ChampNiveau + "=@1", 0);
            }
            else
            {
                liste        = new CListeObjetsDonnees(CSc2iWin32DataClient.ContexteCourant, m_typeObjets);
                liste.Filtre = new CFiltreData(m_racine.GetChampId() + "=@1", m_racine.Id);
            }

            foreach (CObjetHierarchique objet in liste)
            {
                TreeNode node = CreateNode(objet);
                m_arbre.Nodes.Add(node);
                node.Expand();
            }

            if (m_listeChecked != null)
            {
                foreach (CObjetHierarchique objet in m_listeChecked)
                {
                    TreeNode node = GetNode(objet);
                    if (node != null)
                    {
                        node.Checked = true;
                        node         = node.Parent;
                        while (node != null)
                        {
                            node.Expand();
                            node = node.Parent;
                        }
                    }
                }
            }
        }
Exemple #19
0
        private void FillChilds(TreeNode nodeParent)
        {
            CObjetHierarchique objet = (CObjetHierarchique)nodeParent.Tag;

            if (nodeParent.Nodes.Count == 1 && nodeParent.Nodes[0].Tag == null)
            {
                nodeParent.Nodes.Clear();
            }
            foreach (CObjetHierarchique objetFille in objet.ObjetsFils)
            {
                TreeNode node = new TreeNode(objetFille.Libelle);
                node.Tag = objetFille;
                nodeParent.Nodes.Add(node);
                if (objetFille.ObjetsFils.Count > 0)
                {
                    TreeNode nodeTmp = new TreeNode("");
                    nodeTmp.Tag = null;
                    node.Nodes.Add(nodeTmp);
                }
            }
        }
Exemple #20
0
        //----------------------------------------------------------------------------
        private TreeNode CreateNode(CObjetHierarchique objet)
        {
            TreeNode node = new TreeNode(objet.Libelle);

            node.Tag = objet;
            m_tableObjetToNode[objet] = node;
            if (m_listeChecked != null)
            {
                if (m_listeChecked.Contains(objet))
                {
                    node.Checked = true;
                }
            }
            if (objet.ObjetsFils.Count != 0)
            {
                TreeNode dummy = new TreeNode("");
                dummy.Tag = null;
                node.Nodes.Add(dummy);
            }
            return(node);
        }
Exemple #21
0
        //-------------------------------------------------------------------
        public static CResultAErreur TraitementAvantSauvegarde(CContexteDonnee contexte, string strNomTable)
        {
            CResultAErreur result = CResultAErreur.True;

            if (!result)
            {
                return(result);
            }

            DataTable table = contexte.Tables[strNomTable];

            ArrayList lstRows = new ArrayList(table.Rows);

            CObjetHierarchique objet = (CObjetHierarchique)Activator.CreateInstance(CContexteDonnee.GetTypeForTable(strNomTable), new object[] { contexte });

            lstRows.Sort(new CRowSorterSurParent(objet.ChampIdParent));

            object lastParent = DBNull.Value;
            int    nLastCode  = 0;

            foreach (DataRow row in lstRows)
            {
                //Allocation du code famille
                objet = (CObjetHierarchique)Activator.CreateInstance(CContexteDonnee.GetTypeForTable(strNomTable), new object[] { row });
                if (objet.Row.RowState != DataRowState.Deleted && (objet.CodeSystemePartiel == objet.CodePartielDefaut || HasChange(objet, objet.ChampIdParent)))
                {
                    if (!objet.Row[objet.ChampIdParent].Equals(lastParent))
                    {
                        nLastCode  = 0;
                        lastParent = objet.Row[objet.ChampIdParent];
                    }
                    AlloueCode(objet, ref nLastCode);
                }
            }
            return(result);
        }
Exemple #22
0
        //----------------------------------------------------------------------------
        private TreeNode GetNode(CObjetHierarchique objet)
        {
            TreeNode node = (TreeNode)m_tableObjetToNode[objet];

            if (node != null)
            {
                return(node);
            }
            node = CreateNode(objet);
            if (objet.ObjetParent == null)
            {
                m_arbre.Nodes.Add(node);
                node.Expand();
                return(node);
            }
            TreeNode nodeParent = GetNode(objet);

            if (nodeParent != null)
            {
                nodeParent.Expand();
                return((TreeNode)m_tableObjetToNode[objet]);
            }
            return(null);
        }
Exemple #23
0
 private void m_corbeille_Click(object sender, System.EventArgs e)
 {
     ObjetSelectionne = null;
 }
Exemple #24
0
 public void AfficheHierarchie(CObjetHierarchique elementFeuille)
 {
     m_arbre.Nodes.Clear();
     m_feuille = elementFeuille;
     TreeNode node = FillNodesParent(elementFeuille);
 }
Exemple #25
0
        private void RemplitArbre(bool bForcer)
        {
            ArrayList liste      = new ArrayList();
            int       nNiveauMax = 0;

            lock ( m_datasetRecherche )
            {
                DataTable tableRecherche = m_datasetRecherche.Tables[m_typeObjets.ToString()];
                if (tableRecherche == null)
                {
                    PrepareTableRecherche();
                }
                tableRecherche = m_datasetRecherche.Tables[m_typeObjets.ToString()];


                if (m_txtFiltre.Text.Trim().Length < 3 && !bForcer)
                {
                    return;
                }
                m_tableObjetToClavier.Clear();
                m_tableClavierToObjet.Clear();
                //Extrait les mots du filtre
                string[] strValeurs = RemoveAccents(m_txtFiltre.Text).Split(' ');
                if (strValeurs.Length == 0)
                {
                    return;
                }
                string             strFiltreSurTotal   = "";
                string             strFiltreSurLibelle = "";
                CObjetHierarchique objet = (CObjetHierarchique)Activator.CreateInstance(m_typeObjets, new object[] { CSc2iWin32DataClient.ContexteCourant });
                foreach (string strValeur in strValeurs)
                {
                    if (strValeur.Trim().Length > 0)
                    {
                        if (strFiltreSurLibelle.Length > 0)
                        {
                            strFiltreSurLibelle += " and ";
                        }
                        strFiltreSurLibelle += "(" + objet.ChampLibelle + " like " +
                                               "'" + strValeur.Trim() + "%' or " +
                                               objet.ChampLibelle + " like '% " + strValeur.Trim() + "%' or " +
                                               objet.ChampLibelle + " like '%/" + strValeur.Trim() + "%')";

                        if (strFiltreSurTotal.Length > 0)
                        {
                            strFiltreSurTotal += " and ";
                        }
                        strFiltreSurTotal += "(" + c_champLibelleTotal + " like " +
                                             "'" + strValeur.Trim() + "%' or " +
                                             c_champLibelleTotal + " like '% " + strValeur.Trim() + "%' or " +
                                             c_champLibelleTotal + " like '%/" + strValeur.Trim() + "%')";
                    }
                }
                DataRow[] rows = tableRecherche.Select(strFiltreSurLibelle);
                Hashtable tableContenantSurLibelle = new Hashtable();
                foreach (DataRow row in rows)
                {
                    tableContenantSurLibelle[row[objet.GetChampId()]] = true;
                }
                rows = tableRecherche.Select(strFiltreSurTotal);



                Hashtable tableCodes  = new Hashtable();
                Hashtable tableNbFils = new Hashtable();
                Hashtable tableQuiNeContientPasDirectement = new Hashtable();
                foreach (DataRow row in rows)
                {
                    CObjetHierarchique objetType = (CObjetHierarchique)Activator.CreateInstance(m_typeObjets, new object[] { CSc2iWin32DataClient.ContexteCourant });
                    if (objetType.ReadIfExists((int)row[objetType.GetChampId()]))
                    {
                        liste.Add(objetType);
                        tableCodes[objetType.CodeSystemeComplet] = 0;
                        string strFamP = objetType.CodeSystemeComplet.Substring(0, objetType.CodeSystemeComplet.Length - objetType.NbCarsParNiveau);
                        if (strFamP != "" && tableContenantSurLibelle.Contains(objetType.Id))
                        {
                            if (!tableNbFils.Contains(strFamP))
                            {
                                tableNbFils[strFamP] = 1;
                            }
                            else
                            {
                                tableNbFils[strFamP] = (int)tableNbFils[strFamP] + 1;
                            }
                        }
                    }
                }
                //Enlève de la liste les sous familles des familles sélectionnées
                ArrayList lstNew = new ArrayList();
                foreach (CObjetHierarchique objetTmp in liste)
                {
                    string strCodeFamille = objetTmp.CodeSystemeComplet.Substring(0, objetTmp.CodeSystemeComplet.Length - objetTmp.NbCarsParNiveau);
                    bool   bSupprimer     = false;
                    while (strCodeFamille != "" && !bSupprimer)
                    {
                        object nbChilds = tableNbFils[strCodeFamille];
                        if (tableCodes.Contains(strCodeFamille) &&
                            ((nbChilds != null &&
                              (int)nbChilds > 1) || !tableContenantSurLibelle.Contains(objetTmp.Id)))
                        {
                            bSupprimer = true;
                        }
                        strCodeFamille = strCodeFamille.Substring(0, strCodeFamille.Length - objet.NbCarsParNiveau);
                    }
                    if (!bSupprimer)
                    {
                        lstNew.Add(objetTmp);
                        if (objetTmp.Niveau > nNiveauMax)
                        {
                            nNiveauMax = objetTmp.Niveau;
                        }
                    }
                }
                liste = lstNew;
            }

            m_tableObjetToNode = new Hashtable();

            if (liste.Count != 0)
            {
                if (m_arbre == null)
                {
                    Form frm = FindForm();
                    if (frm == null)
                    {
                        return;
                    }
                    Point pt = PointToScreen(m_txtFiltre.Location);
                    pt.Y            += m_txtFiltre.Height;
                    pt               = frm.PointToClient(pt);
                    m_arbre          = new TreeView();
                    m_arbre.Parent   = frm;
                    m_arbre.Location = pt;
                    m_arbre.Size     = new Size(Size.Width, HeightDeplie);
                    m_arbre.CreateControl();
                    m_arbre.DoubleClick  += new EventHandler(m_arbre_DoubleClick);
                    m_arbre.Leave        += new EventHandler(CControleSelectionObjetHierarchique_Leave);
                    m_arbre.BeforeExpand += new TreeViewCancelEventHandler(m_arbre_BeforeExpand);
                }
                m_arbre.BeginUpdate();
                m_arbre.Nodes.Clear();
                m_arbre.BringToFront();
                m_arbre.Visible = true;
            }
            else
            if (m_arbre != null)
            {
                m_arbre.Nodes.Clear();
            }

            int n = 1;

            foreach (CObjetHierarchique objet in liste)
            {
                if (n < 10)
                {
                    m_tableObjetToClavier[objet] = n;
                    m_tableClavierToObjet[n]     = objet;
                }
                n++;
                AddObjet(objet, m_tableObjetToNode, true, nNiveauMax);
            }
            if (m_arbre != null)
            {
                m_arbre.EndUpdate();
            }
        }