public void Init(
            CAffectationsProprietes affectations,
            IFournisseurProprietesDynamiques fournisseur,
            Type typeElementModifie,
            CObjetPourSousProprietes objetSource)
        {
            ArrayList lstControles = new ArrayList(m_panelControles.Controls);

            foreach (Control ctrl in lstControles)
            {
                ctrl.Visible = false;
                m_panelControles.Controls.Remove(ctrl);
                ctrl.Dispose();
            }
            CDefinitionProprieteDynamique[] defs = fournisseur.GetDefinitionsChamps(typeElementModifie, 0);
            m_panelControles.SuspendDrawing();
            List <CDefinitionProprieteDynamique> lstDefs = new List <CDefinitionProprieteDynamique>(defs);

            lstDefs.Sort((x, y) => x.Nom.CompareTo(y.Nom));
            foreach (CDefinitionProprieteDynamique def in lstDefs)
            {
                if (!def.IsReadOnly)
                {
                    CPanelAffectationPropriete panel = new CPanelAffectationPropriete();
                    panel.Dock = DockStyle.Top;
                    m_panelControles.Controls.Add(panel);
                    C2iExpression formule = affectations.GetFormuleFor(def);
                    panel.Init(def, formule, fournisseur, objetSource);
                    m_panelControles.BringToFront();
                }
            }
            m_panelControles.ResumeDrawing();
        }
Exemplo n.º 2
0
        private void m_lnkAdd_LinkClicked(object sender, EventArgs e)
        {
            CResultAErreur result = CResultAErreur.True;
            IAllocateurSupprimeurElements allocateur = m_elementEdite as IAllocateurSupprimeurElements;

            if (m_elementEdite != null)
            {
                if (m_zoneMultiple.SourceFormula != null)
                {
                    Type tp = m_zoneMultiple.SourceFormula.TypeDonnee.TypeDotNetNatif;
                    CAffectationsProprietes affectations = SelectAffectation();
                    if (tp != null && affectations != null)
                    {
                        object obj = null;
                        try
                        {
                            if (allocateur != null)
                            {
                                result = allocateur.AlloueElement(tp);
                                if (result)
                                {
                                    obj = result.Data;
                                }
                            }
                            else
                            {
                                obj = Activator.CreateInstance(tp);
                            }
                        }
                        catch (Exception ex)
                        {
                            result.EmpileErreur(new CErreurException(ex));
                        }
                        if (obj == null | !result)
                        {
                            result.EmpileErreur(I.T("Error while allocating element|20003"));
                            CFormAfficheErreur.Show(result.Erreur);
                            return;
                        }
                        result = affectations.AffecteProprietes(obj, m_elementEdite, m_fournisseurProprietes);
                        if (!result)
                        {
                            result.EmpileErreur(I.T("Some values cannot be assigned|20004"));
                            CFormAfficheErreur.Show(result.Erreur);
                        }
                        MajChamps(false);
                        if (!m_listeElementsAdd.Contains(obj))
                        {
                            m_listeElementsAdd.Add(obj);
                            m_lastAddedelement = obj;
                            CUtilControlesWnd.DeclencheEvenement(C2iWndZoneMultiple.c_strIdEvenementAddElement, this);
                        }
                        UpdateFromSource();
                    }
                }
            }
        }
Exemplo n.º 3
0
 //-----------------------------------------------------------------------
 private ListViewItem GetItem(CAffectationsProprietes affectation)
 {
     foreach (ListViewItem item in m_wndListe.Items)
     {
         if (item.Tag == affectation)
         {
             return(item);
         }
     }
     return(null);
 }
Exemplo n.º 4
0
        private void m_wndAdd_LinkClicked(object sender, EventArgs e)
        {
            CAffectationsProprietes affectation = new CAffectationsProprietes();

            affectation.Libelle = I.T("Set @1|20015", (m_listeEditee.Count + 1).ToString());
            m_listeEditee.Add(affectation);
            ListViewItem item = new ListViewItem();

            FillItem(item, affectation);
            m_wndListe.Items.Add(item);
            item.Selected = true;
        }
Exemplo n.º 5
0
 void itemCopier_Click(object sender, EventArgs e)
 {
     if (m_wndListe.SelectedItems.Count == 1)
     {
         CAffectationsProprietes affectation = m_wndListe.SelectedItems[0].Tag as CAffectationsProprietes;
         CResultAErreur          result      = CSerializerObjetInClipBoard.Copy(affectation, c_signatureClipboard);
         if (!result)
         {
             CFormAlerte.Afficher(result);
         }
     }
 }
        public CAffectationsProprietes GetAffectations()
        {
            CAffectationsProprietes affectation = new CAffectationsProprietes();

            foreach (Control ctrl in m_panelControles.Controls)
            {
                CPanelAffectationPropriete panel = ctrl as CPanelAffectationPropriete;
                if (panel != null)
                {
                    affectation.SetAffectation(panel.Propriete, panel.Formule);
                }
            }
            return(affectation);
        }
Exemplo n.º 7
0
 //-----------------------------------------------------------------------
 private void AfficheAffectation(CAffectationsProprietes affectation)
 {
     SaveCurrent();
     m_affectationsEditee = affectation;
     m_panelContientAffectation.Visible = m_affectationsEditee != null;
     if (m_affectationsEditee != null)
     {
         m_panelAffectation.Init(
             m_affectationsEditee,
             m_fournisseur,
             m_typeElement,
             m_objetSource);
         m_txtLibelle.Text           = m_affectationsEditee.Libelle;
         m_txtCondition.Formule      = m_affectationsEditee.FormuleCondition;
         m_txtFormuleGlobale.Formule = m_affectationsEditee.GlobalFormula;
     }
 }
Exemplo n.º 8
0
        void itemColler_Click(object sender, EventArgs e)
        {
            I2iSerializable objet  = null;
            CResultAErreur  result = CSerializerObjetInClipBoard.Paste(ref objet, c_signatureClipboard);

            if (!result)
            {
                CFormAlerte.Afficher(result);
                return;
            }
            CAffectationsProprietes affectation = objet as CAffectationsProprietes;

            if (affectation != null)
            {
                m_listeEditee.Add(affectation);
                ListViewItem item = new ListViewItem();
                FillItem(item, affectation);
                m_wndListe.Items.Add(item);
                item.Selected = true;
            }
        }
Exemplo n.º 9
0
 public CMenuItemAvecAffectation(CAffectationsProprietes affectation)
     : base(affectation.Libelle)
 {
     m_affectation = affectation;
 }
Exemplo n.º 10
0
 //-----------------------------------------------------------------------
 private void FillItem(ListViewItem item, CAffectationsProprietes affectation)
 {
     item.Text = affectation.Libelle;
     item.Tag  = affectation;
 }
Exemplo n.º 11
0
        /// ///////////////////////////////////////
        protected override CResultAErreur MySerialize(C2iSerializer serializer)
        {
            int            nVersion = GetNumVersion();
            CResultAErreur result   = serializer.TraiteVersion(ref nVersion);

            if (!result)
            {
                return(result);
            }
            // Sérialise le formule source
            result = serializer.TraiteObject <C2iExpression>(ref m_formuleSource);
            if (!result)
            {
                return(result);
            }
            // Sérialise les colonnes
            result = serializer.TraiteListe <CColonneListeSpeedStd>(Columns);
            if (!result)
            {
                return(result);
            }

            // Sérialise les affectations des nouveaux objets
            //result = serializer.TraiteObject<CAffectationsProprietes>(ref m_affectationsInitiales);
            //if (!result)
            //    return result;
            if (nVersion < 5 && serializer.Mode == ModeSerialisation.Lecture)
            {
                CAffectationsProprietes affectation = null;
                result = serializer.TraiteObject <CAffectationsProprietes>(ref affectation);
                if (!result)
                {
                    return(result);
                }
                m_listeAffectationsInitiales.Clear();
                m_listeAffectationsInitiales.Add(affectation);
            }
            else
            {
                result = serializer.TraiteListe <CAffectationsProprietes>(m_listeAffectationsInitiales);
                if (!result)
                {
                    return(result);
                }
            }

            result = serializer.TraiteObject <CPointeurFiltreDynamiqueInDb>(ref m_filter);
            if (!result)
            {
                return(result);
            }


            bool bHasType = m_typeSource != null;

            serializer.TraiteBool(ref bHasType);
            if (bHasType)
            {
                serializer.TraiteType(ref m_typeSource);
            }
            serializer.TraiteString(ref m_strMessageConfirmationSuppression);
            serializer.TraiteBool(ref m_bHasAddButton);
            serializer.TraiteBool(ref m_bHasDeleteButton);

            if (nVersion >= 1)
            {
                result = serializer.TraiteObject <IReferenceFormEdition>(ref m_referenceFormEdition);
            }
            else
            {
                m_referenceFormEdition = null;
            }
            if (!result)
            {
                return(result);
            }

            if (nVersion >= 2)
            {
                serializer.TraiteBool(ref m_bUserCustomizable);
            }

            if (nVersion >= 3)
            {
                serializer.TraiteBool(ref m_bHasDetailButton);
                serializer.TraiteObject <C2iExpression>(ref m_formuleElementToEdit);
            }

            if (nVersion >= 4)
            {
                serializer.TraiteBool(ref m_bUseCheckBoxes);
            }
            if (nVersion >= 6)
            {
                serializer.TraiteBool(ref m_bHasFitlerButton);
            }


            return(result);
        }
Exemplo n.º 12
0
        public CResultAErreur FillDataSet(DataSet ds, C2iWnd fenetre, IObjetDonneeAChamps objetEdite, CListeRestrictionsUtilisateurSurType lstRestrictions)
        {
            CResultAErreur result = CResultAErreur.True;

            if (m_formulaire == null)
            {
                result.EmpileErreur("m_formulaire is null");
                return(result);
            }
            if (fenetre != null)
            {
                try
                {
                    ArrayList lst = fenetre.AllChilds();
                    bool      bConserverCeGroupe = false;
                    CRestrictionUtilisateurSurType restrictionSurObjetEdite = lstRestrictions.GetRestriction(objetEdite.GetType());

                    foreach (object obj in lst)
                    {
                        if (obj is I2iWebControl)
                        {
                            I2iWebControl webControl = (I2iWebControl)obj;
                            if (webControl.WebLabel == "")
                            {
                                continue;
                            }

                            C2iWnd wndControl = webControl as C2iWnd;
                            if (wndControl != null)
                            {
                                // Traite la visibilité du champ
                                C2iExpression expVisible = wndControl.Visiblity;
                                if (expVisible != null)
                                {
                                    CContexteEvaluationExpression ctx = new CContexteEvaluationExpression(objetEdite);
                                    CResultAErreur resVisible         = expVisible.Eval(ctx);
                                    if (resVisible && resVisible.Data != null)
                                    {
                                        if (resVisible.Data.ToString() == "0" || resVisible.Data.ToString().ToUpper() == "FALSE")
                                        {
                                            continue;
                                        }
                                    }
                                }
                                // Applique les restrictions
                                bool bIsEditable = true;
                                if (wndControl is C2iWndFormule || wndControl is C2iWndPanel || wndControl is C2iWndSlidingPanel)
                                {
                                    bIsEditable = false;
                                }
                                else if ((bool)m_row[c_champIsInfosSecondaires])
                                {
                                    // Si c'est un groupe d'infos secondaire, aucun champ n'est éditable
                                    bIsEditable = false;
                                }
                                else if (wndControl is C2iWndChampCustom)
                                {
                                    // Sinon on regarde les restrictions du champ
                                    C2iWndChampCustom wndChamp = (C2iWndChampCustom)wndControl;
                                    CChampCustom      cc       = wndChamp.ChampCustom;
                                    if (restrictionSurObjetEdite != null)
                                    {
                                        ERestriction rest = restrictionSurObjetEdite.GetRestriction(cc.CleRestriction);
                                        if ((rest & ERestriction.ReadOnly) == ERestriction.ReadOnly)
                                        {
                                            bIsEditable = false;
                                        }
                                    }
                                }
                                CChampTimosWebApp champWeb = new CChampTimosWebApp(ds, webControl, objetEdite, m_formulaire.Id, "-1", bIsEditable);
                                result = champWeb.FillDataSet(ds);

                                CTodoValeurChamp valeur = new CTodoValeurChamp(ds, objetEdite, champWeb, m_formulaire.Id, bIsEditable);
                                result             = valeur.FillDataSet(ds);
                                bConserverCeGroupe = true;
                            }
                        }
                        // Traitement dans le cas d'un sous-formulaire
                        else if (obj is C2iWndConteneurSousFormulaire)
                        {
                            C2iWndConteneurSousFormulaire subForm = (C2iWndConteneurSousFormulaire)obj;
                            if (subForm != null && subForm.SubFormReference != null)
                            {
                                C2iWnd frm = sc2i.formulaire.subform.C2iWndProvider.GetForm(subForm.SubFormReference);
                                if (frm != null)
                                {
                                    if (subForm.EditedElement != null)
                                    {
                                        C2iExpression expression          = subForm.EditedElement;
                                        CContexteEvaluationExpression ctx = new CContexteEvaluationExpression(objetEdite);
                                        CResultAErreur resEval            = expression.Eval(ctx);
                                        if (!resEval)
                                        {
                                            result += resEval;
                                            return(result);
                                        }
                                        IObjetDonneeAChamps sousObjetEdite = resEval.Data as IObjetDonneeAChamps;
                                        if (sousObjetEdite != null)
                                        {
                                            // Traite la visibilité du champ
                                            var           ctxSousObjet = new CContexteEvaluationExpression(sousObjetEdite);
                                            C2iExpression expVisible   = subForm.Visiblity;
                                            if (expVisible != null)
                                            {
                                                CResultAErreur resVisible = expVisible.Eval(ctxSousObjet);
                                                if (resVisible && resVisible.Data != null)
                                                {
                                                    if (resVisible.Data.ToString() == "0" || resVisible.Data.ToString().ToUpper() == "FALSE")
                                                    {
                                                        continue;
                                                    }
                                                }
                                            }
                                            bConserverCeGroupe = true;
                                            FillDataSet(ds, frm, sousObjetEdite, lstRestrictions);
                                        }
                                    }
                                }
                            }
                        }
                        // Traitement dans le cas d'une Child Zone
                        else if (obj is C2iWndZoneMultiple)
                        {
                            C2iWndZoneMultiple   childZone   = (C2iWndZoneMultiple)obj;
                            C2iWndSousFormulaire sousFenetre = childZone.FormulaireFils;
                            bool bHasAddButton = childZone.HasAddButton;
                            bool bCanCreate    = false;

                            if (childZone.SourceFormula != null)
                            {
                                CContexteEvaluationExpression ctxEval = new CContexteEvaluationExpression(objetEdite);
                                C2iExpression source = childZone.SourceFormula;
                                Type          tp     = source.TypeDonnee.TypeDotNetNatif;
                                if (tp != null)
                                {
                                    // Gestion des restrictions
                                    CRestrictionUtilisateurSurType restrictions = lstRestrictions.GetRestriction(tp);
                                    if (restrictions != null)
                                    {
                                        bCanCreate = restrictions.CanCreateType();
                                    }
                                }
                                CResultAErreur resEval = source.Eval(ctxEval);
                                if (!resEval)
                                {
                                    result += resEval;
                                    return(result);
                                }
                                object datas = resEval.Data;
                                if (datas != null)
                                {
                                    bConserverCeGroupe = true;

                                    IEnumerable collection = datas as IEnumerable;
                                    if (collection != null)
                                    {
                                        // La source de données est une collection, il s'agit certainement de caractéristiques
                                        // Mais c'est peut-être aussi un Workbook, un Site, un Projet... on ne sait pas car ça dépend du paramétrage
                                        m_row[c_champTitreCaracteristiques]  = childZone.WebLabel;
                                        m_row[c_champCanAddCaracteristiques] = bHasAddButton && bCanCreate;

                                        int nOrdre = 0;
                                        foreach (var data in collection)
                                        {
                                            IObjetDonneeAChamps objEdite = data as IObjetDonneeAChamps;
                                            if (objEdite != null)
                                            {
                                                CCaracteristique caracWeb = new CCaracteristique(
                                                    ds,
                                                    objEdite as IObjetDonneeAIdNumeriqueAuto,
                                                    tp,
                                                    objetEdite.GetType().ToString(),
                                                    ((IObjetDonneeAIdNumeriqueAuto)objetEdite).Id,
                                                    nOrdre++,
                                                    m_formulaire.Id,
                                                    false);
                                                caracWeb.FillDataSet(ds, sousFenetre, objEdite, lstRestrictions);
                                            }
                                        }
                                        // Création d'un template
                                        if (childZone.Affectations.Count > 0)
                                        {
                                            CAffectationsProprietes affectation = childZone.Affectations[0];
                                            if (tp != null && affectation != null)
                                            {
                                                IAllocateurSupprimeurElements allocateur = objetEdite as IAllocateurSupprimeurElements;
                                                object newObj = null;
                                                try
                                                {
                                                    if (allocateur != null)
                                                    {
                                                        result = allocateur.AlloueElement(tp);
                                                        if (result)
                                                        {
                                                            newObj = result.Data;
                                                        }
                                                    }
                                                    else
                                                    {
                                                        newObj = Activator.CreateInstance(tp);
                                                    }
                                                }
                                                catch (Exception ex)
                                                {
                                                    result.EmpileErreur(new CErreurException(ex));
                                                }
                                                if (newObj == null | !result)
                                                {
                                                    result.EmpileErreur(I.T("Error while allocating element|20003"));
                                                }
                                                result = affectation.AffecteProprietes(newObj, objetEdite, new CFournisseurPropDynStd(true));
                                                if (!result)
                                                {
                                                    result.EmpileErreur(I.T("Some values cannot be assigned|20004"));
                                                }
                                                CCaracteristique caracTemplate = new CCaracteristique(
                                                    ds,
                                                    newObj as IObjetDonneeAIdNumeriqueAuto,
                                                    tp,
                                                    objetEdite.GetType().ToString(),
                                                    ((IObjetDonneeAIdNumeriqueAuto)objetEdite).Id,
                                                    nOrdre++,
                                                    m_formulaire.Id,
                                                    true);
                                                caracTemplate.FillDataSet(ds, sousFenetre, newObj as IObjetDonneeAChamps, lstRestrictions);
                                            }
                                        }
                                    }
                                    else
                                    {
                                        // La source de donnée est un objet unique
                                        IObjetDonneeAChamps objEdite = datas as IObjetDonneeAChamps;
                                        if (objEdite != null)
                                        {
                                            FillDataSet(ds, sousFenetre, objEdite, lstRestrictions);
                                        }
                                    }
                                }
                            }
                        }
                    }

                    /*if (!bConserverCeGroupe)
                     * {
                     *  DataTable dt = ds.Tables[c_nomTable];
                     *  if (dt != null)
                     *      dt.Rows.Remove(m_row);
                     * }*/
                }
                catch (Exception ex)
                {
                    result.EmpileErreur(ex.Message);
                    return(result);
                }
            }
            return(result);
        }