Beispiel #1
0
        private void m_btnSelectChampDynamique_Click(object sender, EventArgs e)
        {
            CInfoStructureDynamique infoStructure = CInfoStructureDynamique.GetStructure(m_typeObjetEdite, 1);
            CInfoChampDynamique     champSel      = CFormSelectChampParentPourStructure.SelectPropriete(infoStructure);

            if (champSel != null)
            {
                m_colonneAffichee.InfoChampDynamique = champSel;
                m_labelChamp.Text = champSel == null ? "" : champSel.NomChamp;
            }

            /*Rectangle rect = m_panelComboChamp.RectangleToScreen(new Rectangle(0, m_panelComboChamp.Height, m_panelComboChamp.Width, 230));
             * bool bCancel = false;
             * CDefinitionProprieteDynamique champ = CFormSelectChampPopup.SelectDefinitionChamp(
             *  rect,
             *  m_typeObjetEdite,
             *  new CFournisseurProprietesForFiltreDynamique(),
             *  ref bCancel,
             *  null,
             *  null);
             * if (!bCancel)
             * {
             *  m_colonneAffichee.InfoChampDynamique = champ;
             *  m_labelChamp.Text = champ == null ? "[NOT DEFINED]" : champ.Nom;
             * }*/
        }
        //-----------------------------------------------------------------------
        public static CInfoChampDynamique[] SelectProprietes(CInfoStructureDynamique structure, string[] listeSelectionnes, ref CInfoChampDynamique[] lstDecoches)
        {
            CFormSelectChampParentPourStructure form = new CFormSelectChampParentPourStructure();

            form.m_tableSelectionnes.Clear();
            foreach (string strCol in listeSelectionnes)
            {
                form.m_tableSelectionnes[strCol] = true;
            }
            form.m_structurePrincipale = structure;
            form.m_lblTable.Text       = form.m_structurePrincipale.NomConvivial;
            form.FillTree(structure, form.m_arbre.Nodes, null);
            form.m_arbre.CheckBoxes = true;
            form.m_bMonoSelection   = false;
            if (form.ShowDialog() == DialogResult.OK)
            {
                ArrayList lst = new ArrayList();
                form.GetSelectedFields(lst, form.m_arbre.Nodes, null);
                lstDecoches = (CInfoChampDynamique[])form.m_listeDecoches.ToArray(typeof(CInfoChampDynamique));
                //Lst contient la liste de ce qui a été coché en plus. Il faut ajouter à ça la
                //Liste de ce qui n'a pas été décoché
                return(( CInfoChampDynamique[] )lst.ToArray(typeof(CInfoChampDynamique)));
            }
            return(new CInfoChampDynamique[0]);
        }
        //-------------------------------------------------------------------
        private void FillMenu(Menu menu, CInfoStructureDynamique structure, Hashtable tableColonnes, string strRacine)
        {
            Hashtable tableRubriqueToMenu = new Hashtable();

            //Niveau 0
            foreach (CInfoChampDynamique champ in structure.Champs)
            {
                if (champ.StructureValeur == null)
                {
                    Menu itemParent = menu;
                    if (champ.Rubrique != "")
                    {
                        itemParent = (MenuItem)tableRubriqueToMenu[champ.Rubrique];
                        if (itemParent == null)
                        {
                            itemParent = new MenuItem(champ.Rubrique);
                            menu.MenuItems.Add((MenuItem)itemParent);
                            tableRubriqueToMenu[champ.Rubrique] = itemParent;
                        }
                    }
                    MenuItem menuItem = new MenuItem(champ.NomChamp, new EventHandler(MenuItemClick));
                    menuItem.Tag = new CInfoChampMenu(champ.NomChamp, strRacine + champ.NomPropriete, champ.TypeDonnee);
                    if (tableColonnes[strRacine + champ.NomPropriete] != null)
                    {
                        menuItem.Checked = true;
                    }
                    else
                    {
                        menuItem.Checked = false;
                    }
                    itemParent.MenuItems.Add(menuItem);
                }
            }

            /*//Niveaux suivants
             * foreach ( CInfoChampDynamique champ in structure.Champs )
             * {
             *      if ( champ.StructureValeur != null )
             *      {
             *              Menu itemParent = menu;
             *              if ( champ.Rubrique != "" )
             *              {
             *                      itemParent = (MenuItem)tableRubriqueToMenu[champ.Rubrique];
             *                      if ( itemParent == null )
             *                      {
             *                              itemParent = new MenuItem ( champ.Rubrique );
             *                              menu.MenuItems.Add ( (MenuItem)itemParent );
             *                              tableRubriqueToMenu[champ.Rubrique] = itemParent;
             *                      }
             *              }
             *              MenuItem sousMenu = new MenuItem(champ.NomChamp +">>");
             *              sousMenu.Tag = new CInfoSousStruct ( champ.StructureValeur, tableColonnes, strRacine+champ.NomPropriete+"." );
             *              //FillMenu ( sousMenu, champ.StructureValeur, tableColonnes, strRacine+champ.NomPropriete+".");
             *              itemParent.MenuItems.Add ( sousMenu );
             *              sousMenu.Enabled = true;
             *              sousMenu.Click += new EventHandler(sousMenu_Popup);
             *      }
             * }*/
        }
        //-----------------------------------------------------------------------
        private void FillTree(CInfoStructureDynamique structure, TreeNodeCollection nodes, CInfoChampDynamique defParente)
        {
            ArrayList lst = new ArrayList( );

            lst.AddRange(structure.Champs);
            lst.Sort(new DefSorter());

            //Trouve les catégories
            Hashtable tableCategories = new Hashtable();

            foreach (CInfoChampDynamique info in lst)
            {
                if (info.Rubrique != "" && ShouldHadChamp(info))
                {
                    if (tableCategories[info.Rubrique] == null)
                    {
                        TreeNode node = new TreeNode(info.Rubrique);
                        node.ImageIndex         = 0;
                        node.SelectedImageIndex = 0;
                        nodes.Add(node);
                        tableCategories[info.Rubrique] = node;
                    }
                }
            }
            foreach (CInfoChampDynamique info in lst)
            {
                if (ShouldHadChamp(info))
                {
                    TreeNode node = new TreeNode(info.NomChamp);
                    node.ImageIndex         = info.StructureValeur != null?1:2;
                    node.SelectedImageIndex = node.ImageIndex;
                    TreeNodeCollection nodesParents = nodes;
                    if (info.Rubrique != "")
                    {
                        TreeNode nodeParent = (TreeNode)tableCategories[info.Rubrique];
                        if (nodeParent != null)
                        {
                            nodesParents = nodeParent.Nodes;
                        }
                    }
                    node.Tag = info;
                    nodesParents.Add(node);
                    if (info.StructureValeur != null && ShouldHasFils(info))
                    {
                        node.Nodes.Add("*");
                    }
                    CInfoChampDynamique newInfo = info.Clone();
                    if (defParente != null)
                    {
                        newInfo.InsereParent(defParente);
                    }
                    if (m_tableSelectionnes[newInfo.NomPropriete] != null)
                    {
                        node.Checked = true;
                    }
                }
            }
        }
Beispiel #5
0
        //-------------------------------------------------------------------------
        private void FillListeChamps(CRestrictionUtilisateurSurType restriction)
        {
            m_wndListeChamps.BeginUpdate();
            m_wndListeChamps.Items.Clear();
            CInfoStructureDynamique info     = CInfoStructureDynamique.GetStructure(restriction.TypeAssocie, 0);
            List <ListViewItem>     lstItems = new List <ListViewItem>();

            foreach (CInfoChampDynamique champ in info.Champs)
            {
                string strTmp = "";
                CDefinitionProprieteDynamique def = CConvertisseurInfoStructureDynamiqueToDefinitionChamp.GetDefinitionProprieteDynamique(champ.NomPropriete, ref strTmp);
                //Uniquement les propriétés "classiques"
                //voir CTimosApp.GetStructure
                if (def != null && typeof(CDefinitionProprieteDynamiqueDotNet).IsAssignableFrom(def.GetType()))
                {
                    ListViewItem item = new ListViewItem();
                    item.Text       = champ.NomChamp;
                    item.Tag        = def.NomProprieteSansCleTypeChamp;
                    item.ImageIndex = GetIndexImage(restriction.GetRestriction(def.NomProprieteSansCleTypeChamp));
                    lstItems.Add(item);
                }
            }
            lstItems.Sort((x, y) => x.Text.CompareTo(y.Text));
            if (typeof(IElementAChamps).IsAssignableFrom(restriction.TypeAssocie))
            {
                CRoleChampCustom role = CRoleChampCustom.GetRoleForType(restriction.TypeAssocie);
                if (role != null)
                {
                    CListeObjetsDonnees listeChampsCustom = CChampCustom.GetListeChampsForRole(CContexteDonneeSysteme.GetInstance(), role.CodeRole);
                    foreach (CChampCustom champ in listeChampsCustom)
                    {
                        ListViewItem item = new ListViewItem();
                        item.Text       = champ.Nom;
                        item.Tag        = champ.CleRestriction;
                        item.ImageIndex = GetIndexImage(restriction.GetRestriction(champ.CleRestriction));
                        lstItems.Add(item);
                    }
                    lstItems.Sort((x, y) => x.Text.CompareTo(y.Text));

                    CListeObjetsDonnees listeFormulaires = new CListeObjetsDonnees(CContexteDonneeSysteme.GetInstance(), typeof(CFormulaire));
                    listeFormulaires.Filtre = CFormulaire.GetFiltreFormulairesForRole(role.CodeRole);
                    foreach (CFormulaire formulaire in listeFormulaires)
                    {
                        ListViewItem item = new ListViewItem();
                        item.Text       = "{" + formulaire.Libelle + "}";
                        item.Tag        = formulaire.CleRestriction;
                        item.ImageIndex = GetIndexImage(restriction.GetRestriction(formulaire.CleRestriction));
                        lstItems.Add(item);
                    }
                }
            }
            m_wndListeChamps.Items.AddRange(lstItems.ToArray());
            m_wndListeChamps.EndUpdate();
        }
        /// <summary>
        /// Surchages de CInfoStructureDynamique
        /// </summary>
        /// <param name="tp"></param>
        /// <param name="nDepth"></param>
        /// <returns></returns>
        //-----------------------------------------------------------------
        public static CInfoStructureDynamique GetStructure(Type tp, int nDepth)
        {
            if (nDepth < 0)
            {
                return(null);
            }
            CFournisseurPropDynStd fournisseur = new CFournisseurPropDynStd(false);
            ArrayList lst = new ArrayList();

            foreach (CDefinitionProprieteDynamique def in  fournisseur.GetDefinitionsChamps(tp, 0, null))
            {
                if (!def.TypeDonnee.IsArrayOfTypeNatif)
                {
                    CInfoChampDynamique     info     = null;
                    CInfoStructureDynamique infoFils = GetStructure(def.TypeDonnee.TypeDotNetNatif, nDepth - 1);
                    if (infoFils != null && infoFils.Champs.Count == 0)
                    {
                        infoFils = null;
                    }
                    //Champs simples, interpretés par CInterpreteurTextePropriete
                    if (def.GetType() == typeof(CDefinitionProprieteDynamique))
                    {
                        info = new CInfoChampDynamique(
                            def.Nom,
                            def.TypeDonnee.TypeDotNetNatif,
                            def.NomPropriete,
                            def.Rubrique,
                            infoFils);
                    }
                    else
                    {
                        CStringSerializer serializer = new CStringSerializer(ModeSerialisation.Ecriture);
                        I2iSerializable   obj        = (I2iSerializable)def;
                        serializer.TraiteObject(ref obj);
                        info = new CInfoChampDynamique(
                            def.Nom,
                            def.TypeDonnee.TypeDotNetNatif,
                            "~#" + serializer.String + "~@#@",
                            def.Rubrique,
                            infoFils);
                    }
                    lst.Add(info);
                }
            }
            CInfoStructureDynamique infoStructure = new CInfoStructureDynamique();

            infoStructure.NomConvivial = DynamicClassAttribute.GetNomConvivial(tp);
            infoStructure.Champs       = lst;
            return(infoStructure);
        }
        //-------------------------------------------------------------------
        private void FillColonne(ListViewAutoFilledColumn col)
        {
            int nNum = col.Index;

            foreach (ListViewItem item in Items)
            {
                while (item.SubItems.Count <= nNum)
                {
                    item.SubItems.Add("");
                }
                //string strText = CInterpreteurTextePropriete.GetStringValue(item.Tag, col.Field, "" ).ToString();
                string strText = CInfoStructureDynamique.GetDonneeDynamiqueString(item.Tag, col.Field, "");
                strText = strText.Replace("\r", " ,");
                strText = strText.Replace("\n", " ");
                item.SubItems[nNum].Text = strText;
            }
        }
        //-----------------------------------------------------------------------
        public static CInfoChampDynamique SelectPropriete(CInfoStructureDynamique structure)
        {
            CFormSelectChampParentPourStructure form = new CFormSelectChampParentPourStructure();

            form.m_tableSelectionnes.Clear();
            form.m_structurePrincipale = structure;
            form.m_lblTable.Text       = form.m_structurePrincipale.NomConvivial;
            form.FillTree(structure, form.m_arbre.Nodes, null);
            form.m_arbre.CheckBoxes = false;
            form.m_bMonoSelection   = true;
            CInfoChampDynamique infoSel = null;

            if (form.ShowDialog() == DialogResult.OK)
            {
                infoSel = form.m_champSel;
            }
            form.Dispose();
            return(infoSel);
        }
 //-----------------------------------------------------------------------
 private void m_arbre_BeforeExpand(object sender, System.Windows.Forms.TreeViewCancelEventArgs e)
 {
     if (e.Node.Nodes.Count == 1 &&
         e.Node.Nodes[0].Text == "*")
     {
         CInfoChampDynamique def = (CInfoChampDynamique)e.Node.Tag;
         if (def == null)
         {
             return;
         }
         e.Node.Nodes.Clear();
         CInfoChampDynamique infoParente = null;
         if (e.Node.Tag is CInfoChampDynamique)
         {
             infoParente = (CInfoChampDynamique)e.Node.Tag;
         }
         CInfoStructureDynamique newStruct = CInfoStructureDynamique.GetStructure(def.TypeDonnee, 1);
         FillTree(newStruct, e.Node.Nodes, infoParente);
     }
 }
Beispiel #10
0
        //-------------------------------------------------------------------
        private void ContexMenuPopUp(object sender, EventArgs e)
        {
            if (!m_bEnableCustomisationUser)
            {
                return;
            }

            if (m_structureObjets == null && Items.Count > 0)
            {
                m_structureObjets = CInfoStructureDynamique.GetStructure(Items[0].Tag.GetType(), 1);
            }
            if (m_structureObjets == null)
            {
                return;
            }

            //Crée une Hashtable des colonnes affichées
            Hashtable tableColonnes = new Hashtable();

            foreach (ListViewAutoFilledColumn col in Colonnes)
            {
                tableColonnes[col.Field] = col;
            }

            bool bNouveauMenu = ContextMenu.MenuItems.Count == 0;

            if (bNouveauMenu)
            {
                FillMenu(ContextMenu, m_structureObjets, tableColonnes, "");
                MenuItem item = new MenuItem("Plus de champs", new EventHandler(OnSelectionnerLesChamps));
                ContextMenu.MenuItems.Add(item);
            }
            UpdateCheckState(ContextMenu, tableColonnes);
            Point pt = Cursor.Position;

            if (e is MouseEventArgs)
            {
                pt = new Point(((MouseEventArgs)e).X, ((MouseEventArgs)e).Y);
            }
            //m_popupMenu.Show ( this, pt );
        }
Beispiel #11
0
        //-------------------------------------------------------------------
        public void UpdateItemWithObject(ListViewItem item, object obj)
        {
            if (item == null || obj == null)
            {
                return;
            }
            item.Tag = obj;

            while (item.SubItems.Count < this.Columns.Count)
            {
                item.SubItems.Add("");
            }
            ArrayList lstColonneesToDel = new ArrayList();

            for (int i = 0; i < this.Columns.Count; i++)
            {
                string strField = m_listColonnes[i].Field;
                if (strField != "")
                {
                    try
                    {
                        //bool bIsChampValide = true;
                        string strText = CInfoStructureDynamique.GetDonneeDynamiqueString(obj, strField, "");
                        //string strText = CInterpreteurTextePropriete.GetStringValue ( obj, strField, "", ref bIsChampValide );
                        strText = strText.Replace("\r", "");
                        strText = strText.Replace("\n", " ,");
                        strText = strText.Replace("\t", "");
                        item.SubItems[i].Text = strText;
                        //if ( !bIsChampValide )
                        //	lstColonneesToDel.Add ( m_listColonnes[i] );
                    }
                    catch
                    {
                        item.SubItems[i].Text = I.T("Unknown value|10013");
                    }
                }
            }
            //foreach ( ListViewAutoFilledColumn col in lstColonneesToDel )
            //	RemoveColonne ( col );
        }
Beispiel #12
0
        /// /////////////////////////////////////////////////////////////
        ///Implémente le tri d'une liste d'objets donnée
        /// <summary>
        /// Sort a column.
        public override void SortColumn(int nColumn)
        {
            if (Count < 2)                                      // nothing to sort
            {
                return;
            }

            if (nColumn < 0 || nColumn > Columns.Count)
            {
                return;
            }

            if (!(ListeSource is CListeObjetsDonnees))
            {
                base.SortColumn(nColumn);
                return;
            }


            GLColumn            col          = Columns[nColumn];
            CListeObjetsDonnees listeDonnees = (CListeObjetsDonnees)ListeSource;

            string strProp = CInfoStructureDynamique.GetProprieteDotNet(col.Propriete);

            if (strProp.IndexOf('.') < 0)
            {
                //Trouve la propriété
                PropertyInfo info = listeDonnees.TypeObjets.GetProperty(strProp);
                if (info != null)
                {
                    //y-a-t-il un attribut TableField sur la propriété
                    object[] attribs = info.GetCustomAttributes(typeof(TableFieldPropertyAttribute), true);
                    if (attribs.Length > 0)
                    {
                        if (CheckedItems.Count != 0 && CheckBoxes)
                        {
                            if (CFormAlerte.Afficher(I.T("Warning, the sorting will uncheck all checked elements. Continue ?|139"),
                                                     EFormAlerteType.Question) == DialogResult.No)
                            {
                                return;
                            }
                        }
                        ResetCheck();
                        TableFieldPropertyAttribute fieldAttr = (TableFieldPropertyAttribute)attribs[0];
                        string strSort = fieldAttr.NomChamp;
                        if (strSort == m_strLastSort)
                        {
                            m_bSortAsc = !m_bSortAsc;
                        }
                        else
                        {
                            m_bSortAsc = true;
                        }
                        m_strLastSort = strSort;
                        if (!m_bSortAsc)
                        {
                            strSort += " desc";
                        }
                        listeDonnees.Tri = strSort;
                        listeDonnees.Refresh();
                        Refresh();
                        base.SortIndex = nColumn;
                        Columns[nColumn].LastSortState = m_bSortAsc ? ColumnSortState.SortedDown : ColumnSortState.SortedUp;
                        return;
                    }
                }
            }
            CFormAlerte.Afficher(I.T("Sort on this field is impossible|138"), EFormAlerteType.Exclamation);
        }