示例#1
0
        //------------------------------------------------------------------------------------------
        public override I2iObjetGraphique GetCloneAMettreDansParent(I2iObjetGraphique parent, Dictionary <Type, object> dicObjetsPourCloner)
        {
            C2iObjetDeSchema parentAsC2iObjet = parent as C2iObjetDeSchema;

            if (m_elementAssocie != null && parentAsC2iObjet != null && parentAsC2iObjet.SchemaContenant != null)
            {
                IElementDeSchemaReseau eltDeSchema = (IElementDeSchemaReseau)m_elementAssocie.GetObjet(parentAsC2iObjet.SchemaContenant.ContexteDonnee);
                CElementDeSchemaReseau newElement  = new CElementDeSchemaReseau(eltDeSchema.ContexteDonnee);
                newElement.CreateNewInCurrentContexte();
                newElement.ElementAssocie = eltDeSchema;
                newElement.SchemaReseau   = parentAsC2iObjet.SchemaContenant;

                if (!m_bSizeIsSet)
                {
                    C2iSymbole symbole = eltDeSchema.SymboleADessiner;
                    if (symbole != null)
                    {
                        Size         = symbole.Size;
                        m_bSizeIsSet = true;
                    }
                }
                newElement.Width  = Size.Width;
                newElement.Height = Size.Height;

                C2iObjetDeSchema obj = eltDeSchema.GetObjetDeSchema(newElement);
                return(obj);
            }
            return(null);
        }
        private void m_textBox_DragDrop(object sender, DragEventArgs e)
        {
            CReferenceObjetDonnee refObj = e.Data.GetData(typeof(CReferenceObjetDonnee)) as CReferenceObjetDonnee;

            if (m_typeObjets != null && m_typeObjets.IsAssignableFrom(refObj.TypeObjet))
            {
                CObjetDonnee objet = refObj.GetObjet(CSc2iWin32DataClient.ContexteCourant);
                if (objet != null)
                {
                    if (m_filtre == null)
                    {
                        ElementSelectionne = objet;
                    }
                    else
                    {
                        CFiltreData filtre = CFiltreData.GetAndFiltre(m_filtre,
                                                                      objet.GetFiltreCles(objet.GetValeursCles()));
                        CListeObjetsDonnees lst = new CListeObjetsDonnees(objet.ContexteDonnee, m_typeObjets, filtre);
                        if (lst.Count == 1)
                        {
                            ElementSelectionne = objet;
                        }
                    }
                }
            }
        }
 public CObjetDonnee GetObjet(CContexteDonnee contexte)
 {
     if (m_referenceObjet != null)
     {
         return(m_referenceObjet.GetObjet(contexte));
     }
     return(null);
 }
示例#4
0
        private void m_picDragBesoin_DragEnter(object sender, DragEventArgs e)
        {
            CReferenceObjetDonnee refObj = e.Data.GetData(typeof(CReferenceObjetDonnee)) as CReferenceObjetDonnee;

            if (refObj != null)
            {
                CBesoin besoin = refObj.GetObjet(m_commande.ContexteDonnee) as CBesoin;
                if (besoin.DonneeBesoin is CDonneeBesoinTypeEquipement)
                {
                    e.Effect = DragDropEffects.Link;
                }
            }
        }
        private void m_wndListeSelection_DragDrop(object sender, DragEventArgs e)
        {
            if (!m_gestionnaireModeEdition.ModeEdition)
            {
                return;
            }

            object listeReferences = e.Data.GetData(typeof(CReferenceObjetDonnee[]));

            if (listeReferences != null)
            {
                CReferenceObjetDonnee[] refObjets = listeReferences as CReferenceObjetDonnee[];
                if (refObjets != null)
                {
                    foreach (CReferenceObjetDonnee reference in refObjets)
                    {
                        CObjetDonneeAIdNumerique objet = reference.GetObjet() as CObjetDonneeAIdNumerique;
                        if (objet != null)
                        {
                            AddElement(objet);
                            if (OnChangeSelection != null)
                            {
                                OnChangeSelection(this, new EventArgs());
                            }
                            UpdateListe();
                        }
                    }
                }
            }
            else
            {
                object uneReference = e.Data.GetData(typeof(CReferenceObjetDonnee));
                if (uneReference != null)
                {
                    CReferenceObjetDonnee reference = uneReference as CReferenceObjetDonnee;
                    if (reference != null)
                    {
                        CObjetDonneeAIdNumerique objet = reference.GetObjet() as CObjetDonneeAIdNumerique;
                        if (objet != null)
                        {
                            AddElement(objet);
                            if (OnChangeSelection != null)
                            {
                                OnChangeSelection(this, new EventArgs());
                            }
                            UpdateListe();
                        }
                    }
                }
            }
        }
示例#6
0
        public CResultAErreur UpdateEOs(CReferenceObjetDonnee referenceObject)
        {
            CResultAErreur result = CResultAErreur.True;

            using (CContexteDonnee contexte = new CContexteDonnee(IdSession, true, false))
            {
                CObjetDonnee objet = referenceObject.GetObjet(contexte);
                if (objet is IElementAEO)
                {
                    result = CUtilElementAEO.UpdateEOSInCurrentContext((IElementAEO)objet);
                    if (result)
                    {
                        result = contexte.SaveAll(true);
                    }
                    return(result);
                }
            }
            return(result);
        }
示例#7
0
 //--------------------------------------------------------------------
 protected override void m_panelDessin_DragEnter(object sender, DragEventArgs e)
 {
     m_satisfactionEnCoursDragDrop = null;
     e.Effect = DragDropEffects.None;
     if (!LockEdition)
     {
         base.m_panelDessin_DragEnter(sender, e);
     }
     if (e.Effect == DragDropEffects.None)
     {
         CReferenceObjetDonnee refObj = e.Data.GetData(typeof(CReferenceObjetDonnee)) as CReferenceObjetDonnee;
         if (refObj != null)
         {
             m_satisfactionEnCoursDragDrop = refObj.GetObjet(m_phaseSpecifications.ContexteDonnee) as ISatisfactionBesoin;
             if (m_satisfactionEnCoursDragDrop != null)
             {
                 e.Effect = GetDragDropEffect(e);
             }
         }
     }
 }
        //--------------------------------------------------------
        public void SetElementEdite(IElementAVariables element)
        {
            m_elementAVariables = element;
            AlloueControl();
            if (m_elementAVariables != null && element != null)
            {
                object selVal = ((IElementAVariables)m_elementAVariables).GetValeurChamp(m_variable.IdVariable);
                try
                {
                    CVariableDynamiqueSelectionObjetDonnee variableSel = m_variable as CVariableDynamiqueSelectionObjetDonnee;
                    if (variableSel != null)
                    {
                        CReferenceObjetDonnee refObj = variableSel.GetObjetFromValeurRetournee(selVal);
                        if (refObj != null)
                        {
                            selVal = refObj.GetObjet(CSc2iWin32DataClient.ContexteCourant);
                        }

                        /*try
                         * {
                         *  CObjetDonneeAIdNumerique obj = Activator.CreateInstance(variableSel.FiltreSelection.TypeElements,
                         *      new object[] { CSc2iWin32DataClient.ContexteCourant }) as CObjetDonneeAIdNumerique;
                         *  if (obj != null && obj.ReadIfExists ( (int)selVal))
                         *      selVal = obj;
                         * }
                         * catch
                         * {
                         * }*/
                    }
                    if (m_control != null)
                    {
                        m_control.ElementSelectionne = (CObjetDonnee)selVal;
                    }
                }
                catch { }
            }
        }
 public void SetElementEdite(IElementAVariables element)
 {
     m_elementAVariables = element;
     AlloueCombo();
     if (m_variable != null && element != null)
     {
         object valeur = element.GetValeurChamp(m_variable.IdVariable);
         if (m_combo is C2iComboBox)
         {
             if (valeur != null)
             {
                 ((C2iComboBox)m_combo).SelectedValue = valeur;
             }
             else
             {
                 ((C2iComboBox)m_combo).SelectedValue = "";
             }
             object obj = ((C2iComboBox)m_combo).SelectedValue;
         }
         else if (m_combo is ISelectionneurElementListeObjetsDonnees)
         {
             CVariableDynamiqueSelectionObjetDonnee varSel = m_variable as CVariableDynamiqueSelectionObjetDonnee;
             if (varSel != null && !(valeur is CObjetDonnee))
             {
                 CReferenceObjetDonnee refObj = varSel.GetObjetFromValeurRetournee(valeur);
                 if (refObj != null)
                 {
                     valeur = refObj.GetObjet(CSc2iWin32DataClient.ContexteCourant);
                 }
             }
             if (valeur is CObjetDonnee || valeur == null)
             {
                 ((ISelectionneurElementListeObjetsDonnees)m_combo).ElementSelectionne = (CObjetDonnee)valeur;
             }
         }
     }
 }
示例#10
0
        private void m_picDragBesoin_DragDrop(object sender, DragEventArgs e)
        {
            CReferenceObjetDonnee refObj = e.Data.GetData(typeof(CReferenceObjetDonnee)) as CReferenceObjetDonnee;

            if (refObj != null)
            {
                CBesoin besoin = refObj.GetObjet(m_commande.ContexteDonnee) as CBesoin;
                CDonneeBesoinTypeEquipement besoinEqpt = besoin.DonneeBesoin as CDonneeBesoinTypeEquipement;
                if (besoinEqpt != null)
                {
                    e.Effect = DragDropEffects.Link;
                    CLigneCommande ligne = new CLigneCommande(m_commande.ContexteDonnee);
                    ligne.CreateNewInCurrentContexte();
                    ligne.Commande       = m_commande;
                    ligne.TypeEquipement = besoinEqpt.GetTypeEquipement(m_commande.ContexteDonnee);
                    ligne.Quantite       = besoinEqpt.Quantite;
                    ligne.Libelle        = besoin.Libelle;
                    besoin = besoin.GetObjetInContexte(ligne.ContexteDonnee) as CBesoin;
                    besoin.AddSatisfaction(ligne, null);
                    CCustomizableItemLigneCommande item = new CCustomizableItemLigneCommande(ligne);
                    m_wndListeCommandes.AddItem(item, true);
                }
            }
        }
示例#11
0
        /// //////////////////////////////////////////////////
        protected override void Editeur_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
        {
            if (ObjetEdite == null)
            {
                return;
            }
            if (LockEdition)
            {
                return;
            }

            if (e.Data.GetDataPresent(typeof(CReferenceObjetDonnee)))
            {
                CReferenceObjetDonnee reference = e.Data.GetData(typeof(CReferenceObjetDonnee)) as CReferenceObjetDonnee;
                if (reference.TypeObjet == typeof(CModeleAffectationUtilisateurs))
                {
                    Point pt        = PointToClient(new Point(e.X, e.Y));
                    Point ptLogique = GetLogicalPointFromDisplay(pt);
                    CWorkflowEtapeDessin dessinEtape = ObjetEdite.SelectionnerElementDuDessus(ptLogique) as CWorkflowEtapeDessin;
                    if (dessinEtape != null)
                    {
                        CModeleAffectationUtilisateurs modele = reference.GetObjet(CSc2iWin32DataClient.ContexteCourant) as CModeleAffectationUtilisateurs;
                        if (modele != null)
                        {
                            CParametresAffectationEtape parametres = modele.ParametresAffectation;
                            if (parametres != null)
                            {
                                CParametresInitialisationEtape parametre = dessinEtape.Initializations;
                                CParametresAffectationEtape    parAff    = parametre.Affectations;
                                if (parAff != null)
                                {
                                    if (MessageBox.Show(I.T("Replace current assignments(Yes) or add new assignemnts(No) ?|20135"), "",
                                                        MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                                    {
                                        parAff = new CParametresAffectationEtape();
                                    }
                                    parAff.AddFormules(parametres.Formules);
                                    parametre.Affectations      = parAff;
                                    dessinEtape.Initializations = parametre;
                                    e.Effect = DragDropEffects.Link;
                                    Refresh();
                                    return;
                                }
                            }
                        }
                    }
                }
            }

            List <CDonneeDragDropObjetGraphique> datas = GetDragDropData(e.Data);

            if (datas == null || datas.Count == 0)
            {
                return;
            }

            List <I2iObjetGraphique> candidats = new List <I2iObjetGraphique>();

            foreach (CRectangleDragForObjetGraphique rct in RectsDrags)
            {
                candidats.Add(rct.ObjetGraphique);
            }

            Point             ptLocal = GetLogicalPointFromDisplay(PointToClient(new Point(e.X, e.Y)));
            I2iObjetGraphique parent  = ObjetEdite.SelectionnerElementConteneurDuDessus(ptLocal, candidats);

            parent = DessinWorkflow;;
            if (parent == null)
            {
                e.Effect = DragDropEffects.None;
            }
            else
            {
                List <I2iObjetGraphique> nouveaux = new List <I2iObjetGraphique>();
                foreach (CRectangleDragForObjetGraphique rct in RectsDrags)
                {
                    rct.RectangleDrag = rct.Datas.GetDragDropPosition(ptLocal);
                    rct.RectangleDrag = GetRectangleSelonModesActives(rct.RectangleDrag, ptLocal);
                    // rct.RectangleDrag.Offset((int)(AutoScrollPosition.X / Echelle), (int)(AutoScrollPosition.Y / Echelle));

                    //Si dummy de création (type de bloc), création d'une nouvelle étape
                    I2iObjetGraphique objetGraphique = rct.Datas.ObjetDragDrop;
                    CDummyObjetWorkflowPourCreation dummyCreation = objetGraphique as CDummyObjetWorkflowPourCreation;
                    if (dummyCreation != null)
                    {
                        CTypeEtapeWorkflow typeEtape = dummyCreation.TypeEtape;
                        if (typeEtape == null)
                        {
                            typeEtape = new CTypeEtapeWorkflow(DessinWorkflow.TypeWorkflow.ContexteDonnee);
                            typeEtape.CreateNewInCurrentContexte();
                            typeEtape.Workflow = DessinWorkflow.TypeWorkflow;
                            typeEtape.Bloc     = Activator.CreateInstance(dummyCreation.TypeBloc, new object[] { typeEtape }) as CBlocWorkflow;
                        }
                        CWorkflowEtapeDessin graphEtape = new CWorkflowEtapeDessin();
                        graphEtape.TypeEtape = typeEtape;
                        objetGraphique       = graphEtape;
                        objetGraphique.Size  = dummyCreation.Size;
                    }

                    JusteBeforePositionneSurApresDragDrop(objetGraphique);
                    bool bParentIsInSelec = objetGraphique.Parent != null && candidats.Contains(objetGraphique.Parent);

                    bool bHasMove = false;

                    if (e.Effect == DragDropEffects.Copy)
                    {
                        Dictionary <Type, object> dicObjetsPourCloner = new Dictionary <Type, object>();
                        AddObjectsForClonerSerializer(dicObjetsPourCloner);
                        objetGraphique = (I2iObjetGraphique)objetGraphique.GetCloneAMettreDansParent(parent, dicObjetsPourCloner);

                        if (objetGraphique == null || !parent.AddChild(objetGraphique))
                        {
                            e.Effect = DragDropEffects.None;
                            objetGraphique.CancelClone();
                            continue;
                        }
                        else
                        {
                            objetGraphique.Parent = parent;
                            nouveaux.Add(objetGraphique);
                        }
                        bHasMove = true;
                    }
                    else
                    {
                        bHasMove = true;
                        if (objetGraphique.Parent != parent)
                        {
                            if (objetGraphique.Parent != null)
                            {
                                if (!bParentIsInSelec)
                                {
                                    objetGraphique.Parent.RemoveChild(objetGraphique);
                                }
                            }
                            else
                            {
                                nouveaux.Add(objetGraphique);
                            }
                            if (!bParentIsInSelec)
                            {
                                if (!parent.AddChild(objetGraphique))
                                {
                                    e.Effect = DragDropEffects.None;
                                    continue;
                                }
                                else
                                {
                                    objetGraphique.Parent = parent;
                                }
                            }
                        }
                    }


                    if (!bParentIsInSelec && bHasMove)
                    {
                        Point ptDrop = new Point(rct.RectangleDrag.Left, rct.RectangleDrag.Top);
                        objetGraphique.PositionAbsolue = ptDrop;
                    }
                }
                if (nouveaux.Count > 0)
                {
                    RefreshSelectionChanged = false;
                    Selection.Clear();
                    Selection.AddRange(nouveaux);
                    RefreshSelectionChanged = true;
                    DeclencheAfterAddElements(nouveaux);
                    Refresh();
                }
            }


            ElementModifie();
            EnDeplacement = false;
            Dessiner(true, true);
        }
        /// //////////////////////////////////////////////////
        ///LE data du result contient la valeur de retour
        public CResultAErreur StartProcess(CValise2iSerializable valiseProcess,
                                           CReferenceObjetDonnee refCible,
                                           int?nIdVersion,
                                           IIndicateurProgression indicateur)
        {
            using (C2iSponsor sponsor = new C2iSponsor())
            {
                sponsor.Register(indicateur);

                CResultAErreur result = CResultAErreur.True;


                //Stef 08/12/2007 : le contexte ne reçoit plus les notifications
                using (CContexteDonnee contexteDeSession = new CContexteDonnee(IdSession, true, false))
                {
                    result = valiseProcess.GetObjet(typeof(CContexteDonnee), contexteDeSession);
                    if (!result)
                    {
                        result.EmpileErreur(I.T("Error while recovering process|30014"));
                        return(result);
                    }
                    CProcess leProcessAExecuter = (CProcess)result.Data;

                    CObjetDonneeAIdNumerique objetCible = null;


                    ///Stef, 290808 : ouvre une session spécifique pour le process
                    ///Pour pouvoir gérer le changement d'utilisateur proprement
                    CSousSessionClient session = CSousSessionClient.GetNewSousSession(contexteDeSession.IdSession);
                    session.OpenSession(new CAuthentificationSessionSousSession(contexteDeSession.IdSession), leProcessAExecuter.Libelle, ETypeApplicationCliente.Process);
                    CSessionClient sessionOriginale = CSessionClient.GetSessionForIdSession(contexteDeSession.IdSession);
                    if (sessionOriginale.GetInfoUtilisateur() != null)
                    {
                        session.ChangeUtilisateur(sessionOriginale.GetInfoUtilisateur().KeyUtilisateur);
                    }

                    try
                    {
                        //Charge les éléments pour la nouvelle session;
                        //Stef 08/12/2007 : le contexte ne reçoit plus les notifications
                        //Stef le 9/2/2011, si, le contexte reçoit les notifications,
                        //sinon, si un sous process modifie quelque chose, on ne le sait pas
                        //et on a des problèmes de violation d'accès concurentiel
                        using (CContexteDonnee contexte = new CContexteDonnee(session.IdSession, true, true))
                        {
                            result = contexte.SetVersionDeTravail(nIdVersion, true);
                            if (!result)
                            {
                                return(result);
                            }
                            if (refCible != null)
                            {
                                objetCible = (CObjetDonneeAIdNumerique)refCible.GetObjet(contexte);
                                if (objetCible == null)
                                {
                                    ///Stef 26/1//2009 : si l'objet n'existe pas, c'est qu'il n'y a rien à déclencher.
                                    ///cela résoud un problème : si un process avant celui-ci a supprimé le targetElement
                                    ///il ne faut pas lancer ce process là !
                                    //result.EmpileErreur(I.T("Target object @1 does not exist|30015",refCible.ToString()));
                                    return(result);
                                }
                            }
                            result = ExecuteProcess(
                                session,
                                objetCible,
                                leProcessAExecuter,
                                contexte, false,
                                indicateur);
                        }
                    }
                    catch (Exception e)
                    {
                        result.EmpileErreur(new CErreurException(e));
                    }
                    finally
                    {
                        try
                        {
                            session.CloseSession();
                        }
                        catch { }
                    }
                }
                return(result);
            }
        }