Example #1
0
        /// ////////////////////////////////////////////////////////
        private static void SerializeObjetAIdAuto(
            int nVersion,
            Type typeObjet,
            ref IObjetDonneeAIdNumeriqueAuto valeur,
            C2iSerializer serializer,
            CContexteDonnee contexte)
        {
            int nId = -1;

            if (valeur is CObjetDonnee && ((CObjetDonnee)valeur).Row.RowState != DataRowState.Deleted &&
                ((CObjetDonnee)valeur).Row.RowState != DataRowState.Detached)
            {
                nId = valeur.Id;
            }
            serializer.TraiteInt(ref nId);
            if (nVersion >= 8 && nId >= 0)
            {
                serializer.TraiteType(ref typeObjet);
            }
            if (nId != -1 && serializer.Mode == ModeSerialisation.Lecture)
            {
                valeur = (IObjetDonneeAIdNumeriqueAuto)Activator.CreateInstance(typeObjet, new object[] { contexte });
                if (!valeur.ReadIfExists(nId))
                {
                    valeur = null;
                }
            }
        }
Example #2
0
        /// ///////////////////////////////////////////////////
        private void CreateControles(Crownwood.Magic.Controls.TabPage page)
        {
            if (m_tableCreateurs[page] != null || ElementEdite == null)
            {
                return;
            }
            C2iWnd wnd   = m_tablePageTo2iWnd[page];
            Panel  panel = new Panel();

            panel.BackColor  = wnd.BackColor;
            panel.ForeColor  = wnd.ForeColor;
            panel.Font       = wnd.Font;
            panel.Location   = new Point(0, 0);
            panel.Size       = wnd.Size;
            panel.AutoScroll = true;
            page.Controls.Add(panel);
            panel.SuspendLayout();
            CCreateur2iFormulaire createur;

            IObjetDonneeAIdNumeriqueAuto objetDonnee = ElementEdite as IObjetDonneeAIdNumeriqueAuto;

            if (objetDonnee != null)
            {
                createur = new CCreateur2iFormulaire(objetDonnee.ContexteDonnee.IdSession, ElementEdite, page);
            }
            else
            {
                createur = new CCreateur2iFormulaire(CSessionClient.GetSessionUnique().IdSession, ElementEdite, page);
            }

            createur.CreateChilds(panel, wnd, m_champTooltip);
            panel.ResumeLayout();
            panel.Size             = page.ClientSize;
            m_tableCreateurs[page] = createur;
            page.ResumeLayout();
            panel.Dock = DockStyle.Fill;
        }
Example #3
0
        /// ////////////////////////////////////////////////////////
        internal static CResultAErreur SerializeValeurVariable(
            ref object valeur,
            CVariableDynamique variable,
            C2iSerializer serializer,
            CContexteDonnee contexteDonnee,
            bool bAvecCompatibiliteSurVersionQuiTravaillaitDirectementDansCProcess)
        {
            int            nVersion = GetNumVersion();
            CResultAErreur result   = CResultAErreur.True;

            if (!bAvecCompatibiliteSurVersionQuiTravaillaitDirectementDansCProcess)
            {
                result = serializer.TraiteVersion(ref nVersion);
            }
            if (!result)
            {
                return(result);
            }
            if (variable is CVariableDynamiqueSaisie ||
                variable is CVariableDynamiqueSelectionObjetDonnee)
            {
                result = serializer.TraiteObjetSimple(ref valeur);
            }
            if (variable is CVariableProcessTypeComplexe)
            {
                Type tp = variable.TypeDonnee.TypeDotNetNatif;
                if (tp == typeof(int) || tp == typeof(double) || tp == typeof(string) ||
                    tp == typeof(DateTime) || tp == typeof(bool))
                {
                    if (nVersion >= 5)
                    {
                        serializer.TraiteObjetSimple(ref valeur);
                    }
                }
                else if (typeof(IObjetDonneeAIdNumeriqueAuto).IsAssignableFrom(tp))
                #region ObjetAIdNumerique AUTO

                {
                    if (!variable.TypeDonnee.IsArrayOfTypeNatif)
                    {
                        IObjetDonneeAIdNumeriqueAuto objet = (IObjetDonneeAIdNumeriqueAuto)valeur;
                        SerializeObjetAIdAuto(nVersion, objet == null ? tp : objet.GetType(), ref objet, serializer, contexteDonnee);
                        valeur = objet;
                    }
                    else
                    {
                        int nNb = 0;
                        if (valeur != null)
                        {
                            nNb = ((IList)valeur).Count;
                        }
                        serializer.TraiteInt(ref nNb);
                        switch (serializer.Mode)
                        {
                        case ModeSerialisation.Ecriture:
                            if (valeur != null)
                            {
                                foreach (IObjetDonneeAIdNumeriqueAuto objet in (IList)valeur)
                                {
                                    IObjetDonneeAIdNumeriqueAuto objetForRef = objet;
                                    SerializeObjetAIdAuto(nVersion, objetForRef == null ? tp : objetForRef.GetType(), ref objetForRef, serializer, contexteDonnee);
                                }
                            }
                            break;

                        case ModeSerialisation.Lecture:
                            ArrayList lst = new ArrayList();
                            for (int nElt = 0; nElt < nNb; nElt++)
                            {
                                IObjetDonneeAIdNumeriqueAuto element = null;
                                SerializeObjetAIdAuto(nVersion, tp, ref element, serializer, contexteDonnee);
                                if (element != null)
                                {
                                    lst.Add(element);
                                }
                            }
                            valeur = (IObjetDonneeAIdNumeriqueAuto[])lst.ToArray(typeof(IObjetDonneeAIdNumeriqueAuto));
                            break;
                        }
                    }
                }
                #endregion
            }
            return(result);
        }
Example #4
0
        public void UpdateOnglets()
        {
            if (!LockEdition)
            {
                //valide les modifs car on va tout supprimer
                MAJ_Champs();
            }
            m_bIsInitializing = true;
            Hashtable tablePagesToHide = new Hashtable();

            foreach (Crownwood.Magic.Controls.TabPage page in TabPages)
            {
                m_tablePagesInit[page] = false;
                tablePagesToHide[page] = true;
            }

            if (m_elementEdite == null)
            {
                return;
            }

            /* YK : On obtient la session de l'objet en cours d'édition au lieur de la session par défaut */
            CSessionClient session = null;
            IObjetDonneeAIdNumeriqueAuto objetDonnee = m_elementEdite as IObjetDonneeAIdNumeriqueAuto;

            if (objetDonnee != null)
            {
                session = CSessionClient.GetSessionForIdSession(objetDonnee.ContexteDonnee.IdSession);
            }
            else
            {
                session = CSessionClient.GetSessionUnique();
            }

            ArrayList lstFormulaires = new ArrayList(m_elementEdite.GetFormulaires());

            lstFormulaires.Sort(new CSorterFormulaires());
            //Lit les champs liés et leurs valeurs
            StringBuilder bl = new StringBuilder();

            foreach (CFormulaire formulaire in lstFormulaires)
            {
                bl.Append(formulaire.Id);
                bl.Append(",");
            }
            if (bl.Length > 0)
            {
                bl.Remove(bl.Length - 1, 1);
                CListeObjetsDonnees lst = new CListeObjetsDonnees(((CFormulaire)lstFormulaires[0]).ContexteDonnee, typeof(CFormulaire));
                lst.Filtre = new CFiltreData(CFormulaire.c_champId + " in (" + bl.ToString() + ")");
                lst.AssureLectureFaite();
                lst.ReadDependances("RelationsChamps", "RelationsChamps.Champ", "RelationsChamps.Champ.ListeValeurs");
            }


            foreach (CFormulaire formulaire in lstFormulaires)
            {
                CRestrictionUtilisateurSurType restriction = new CRestrictionUtilisateurSurType(m_elementEdite.GetType());
                if (session.GetInfoUtilisateur() != null)
                {
                    int?nIdVersion = null;
                    IObjetAContexteDonnee objetAContexte = m_elementEdite as IObjetAContexteDonnee;
                    if (objetAContexte != null)
                    {
                        nIdVersion = objetAContexte.ContexteDonnee.IdVersionDeTravail;
                    }
                    restriction = session.GetInfoUtilisateur().GetRestrictionsSurObjet(m_elementEdite, nIdVersion);
                }

                ERestriction restrictionFormulaire = restriction.GetRestriction(formulaire.CleRestriction);

                if ((restrictionFormulaire & ERestriction.Hide) != ERestriction.Hide)
                {
                    Crownwood.Magic.Controls.TabPage page     = (Crownwood.Magic.Controls.TabPage)m_tableIdFormulaireToTabPage[formulaire.Id];
                    CCreateur2iFormulaire            createur = null;

                    if (page == null)
                    {
                        C2iWndFenetre wnd = formulaire.Formulaire;
                        if (wnd != null)
                        {
                            page = new Crownwood.Magic.Controls.TabPage(wnd.Text);
                            page.SuspendLayout();
                            if (wnd.Text == "")
                            {
                                page.Title = formulaire.Libelle;
                            }
                            TabPages.Add(page);
                            m_tableCreateurs[page]   = null;
                            m_tablePageTo2iWnd[page] = wnd;
                            m_tableIdFormulaireToTabPage[formulaire.Id] = page;
                        }
                    }
                    else
                    {
                        createur = (CCreateur2iFormulaire)m_tableCreateurs[page];
                    }

                    if (page != null)
                    {
                        m_tablePageToRestriction[page] = restrictionFormulaire;
                        if (!TabPages.Contains(page))
                        {
                            TabPages.Add(page);
                        }
                        tablePagesToHide.Remove(page);
                    }
                }
            }

            /*CChampCustom[] champs = ElementEdite.GetChampsHorsFormulaire();
             * if ( champs.Length != 0 )
             * {
             *      UpdatePageChamps( nRest );
             *      if ( m_pageGrid != null )
             *              tablePagesToHide.Remove(m_pageGrid);
             * }*/
            foreach (Crownwood.Magic.Controls.TabPage pageToDel in tablePagesToHide.Keys)
            {
                TabPages.Remove(pageToDel);
            }

            if (TabPages.Count == 1)
            {
                this.HideTabsMode = Crownwood.Magic.Controls.TabControl.HideTabsModes.HideAlways;
            }
            else
            {
                this.HideTabsMode = Crownwood.Magic.Controls.TabControl.HideTabsModes.ShowAlways;
            }
            if (SelectedTab != null)
            {
                InitPageWithObjetCourant(SelectedTab);
            }
            m_bIsInitializing = false;
        }
Example #5
0
        static int s_nIdNegatif = -1; // Utile pour les carac template vides

        public CCaracteristique(DataSet ds, IObjetDonneeAIdNumeriqueAuto objetEdite, Type typeObjetEdite, string strParentElementType, int nParentElementId, int nOrdre, int nIdGroupe, bool isTemplate)
        {
            m_objetEdite = objetEdite; // Cela peut être une caractéristique, mais pas frocément
            DataTable dt = ds.Tables[c_nomTable];

            if (dt == null)
            {
                return;
            }

            DataRow row = dt.NewRow();

            string strId          = "";
            string strLibelle     = "Nouvel élément";
            int    nTimosId       = s_nIdNegatif--;
            string strTypeElement = "";

            if (typeObjetEdite != null)
            {
                strTypeElement = typeObjetEdite.ToString();
            }
            int nIdMetaType = -1;

            if (objetEdite != null)
            {
                if (!isTemplate)
                {
                    nTimosId = objetEdite.Id;
                }
                strTypeElement = objetEdite.GetType().ToString();
                int nLastPoint = strTypeElement.LastIndexOf(".");
                strId = strTypeElement.Substring(nLastPoint + 1, strTypeElement.Length - nLastPoint - 1) + nTimosId;

                strLibelle = objetEdite.DescriptionElement;

                if (objetEdite is CCaracteristiqueEntite)
                {
                    CCaracteristiqueEntite carac = objetEdite as CCaracteristiqueEntite;
                    strLibelle = carac.Libelle;
                    if (strLibelle == "")
                    {
                        strLibelle = carac.TypeCaracteristique.Libelle;
                    }
                    if (carac.TypeCaracteristique != null)
                    {
                        nIdMetaType = carac.TypeCaracteristique.Id;
                    }
                }
                else if (objetEdite is CDossierSuivi)
                {
                    CDossierSuivi workbook = objetEdite as CDossierSuivi;
                    strLibelle = workbook.Libelle;
                    if (workbook.TypeDossier != null)
                    {
                        nIdMetaType = workbook.TypeDossier.Id;
                    }
                }
                else if (objetEdite is CSite)
                {
                    CSite site = objetEdite as CSite;
                    strLibelle = site.Libelle;
                    if (site.TypeSite != null)
                    {
                        nIdMetaType = site.TypeSite.Id;
                    }
                }
            }

            row[c_champId]                = strId;
            row[c_champTimosId]           = nTimosId;
            row[c_champElementType]       = strTypeElement;
            row[c_champTitre]             = strLibelle;
            row[c_champOrdreAffichage]    = nOrdre;
            row[c_champIdGroupeChamps]    = nIdGroupe;
            row[c_champIsTemplate]        = isTemplate;
            row[c_champIdMetaType]        = nIdMetaType;
            row[c_champParentElementType] = strParentElementType;
            row[c_champParentElementId]   = nParentElementId;

            m_row = row;
            dt.Rows.Add(row);
        }