//----------------------------------------------------------------------------------------- // Evénements //----------------------------------------------------------------------------------------- #region IEventProcess // Traite les événements public void ProcessEvent(object from, object _this, IEvent e) { // // Change // Action après le changement d'une entité // if (e is EntityChangeEvent) { EntityChangeEvent ev = e as EntityChangeEvent; // Concerne ce model ? if (ev.Model == app.appModel) { if (ev.Entity is ObjectContent) { OnPropertyChanged("ObjectContentList"); } if (ev.Entity is ParamContent) { CurParamContentList = new ObservableCollection <ParamContent>(curObjectContent.ParamContent); } if (ev.Entity is DatabaseSource) { OnPropertyChanged("CurDatabaseSource"); } } } // // Pré-Create // Préprare la création d'une nouvelle entité (avant édition des champs) // if (e is EntityPreCreateEvent) { EntityPreCreateEvent ev = e as EntityPreCreateEvent; // Alloue l'entité if (ev.Entity == null) { ev.Entity = app.appModel.CreateEntity(ev.EntityName); } // Ajoute l'instance au model app.appModel.Add(ev.Entity); // Affecte le status de création ev.Entity.EntityState = EntityState.Added; // Initialise les données par défaut if (ev.Entity is IEntityPersistent) { IEntityPersistent p = ev.Entity as IEntityPersistent; //Affecte la source de données à la nouvelle entitée p.Factory = app.appModel.project.Factory; } if (ev.Entity is ObjectContent) { ObjectContent entity = ev.Entity as ObjectContent; // Ajoute au projet en cours app.Project.AddObjectContent(entity); // Génére un identifiant unique entity.Id = Guid.NewGuid().ToString("N"); foreach (var p in entity.ParamContent) { p.Id = Guid.NewGuid().ToString("N"); } } if (ev.Entity is ParamContent) { ParamContent entity = ev.Entity as ParamContent; CurObjectContent.AddParamContent(entity); // Génére un identifiant unique entity.Id = Guid.NewGuid().ToString("N"); } if (ev.Entity is DatabaseSource) { DatabaseSource entity = ev.Entity as DatabaseSource; app.Project.AddDatabaseSource(entity); if (app.States.SelectedDatabaseSourceId == null) { app.States.SelectedDatabaseSourceId = app.Project.DatabaseSource.First().Id; } } // Actualise l'interface app.ProcessEvent(this, this, new EntityChangeEvent(e, ev.Entity, app.appModel)); } // // Create // Crée la nouvelle entité (après édition des champs) // if (e is EntityCreateEvent) { EntityCreateEvent ev = e as EntityCreateEvent; if (ev.Entity != null) { // Valide le status de création ev.Entity.EntityState = EntityState.Unmodified; // Actualise l'interface app.ProcessEvent(this, this, new EntityChangeEvent(e, ev.Entity, app.appModel)); } } // // Pré-Update // Les données de l'entité vont êtres modifiées // if (e is EntityPreUpdateEvent) { EntityPreUpdateEvent ev = e as EntityPreUpdateEvent; // si l'entité fait partie du model if (ev.Entity != null && app.appModel.Contains(ev.Entity)) { // Préviens l'application app.ProcessEvent(this, this, new EntityChangeEvent(e, ev.Entity, app.appModel)); } } // // Update // Les données de l'entité sont modifiées // if (e is EntityUpdateEvent) { EntityUpdateEvent ev = e as EntityUpdateEvent; // si l'entité fait partie du model if (ev.Entity != null && app.appModel.Contains(ev.Entity)) { // Test la validité des champs if (ev.Entity is IEntityValidable) { string error; IEntityValidable v = ev.Entity as IEntityValidable; if (!v.IsValid(out error)) { app.ProcessException(new ApplicationException(error)); return; } } // Valide le status de création ev.Entity.EntityState = EntityState.Unmodified; // Actualise l'interface app.ProcessEvent(this, this, new EntityChangeEvent(e, ev.Entity, app.appModel)); } } // // Delete // Supprime l'entité // if (e is EntityDeleteEvent) { EntityDeleteEvent ev = e as EntityDeleteEvent; // si l'entité fait partie du model if (ev.Entity != null && app.appModel.Contains(ev.Entity)) { // Supprime du model app.appModel.Remove(ev.Entity); // Actualise l'interface app.ProcessEvent(this, this, new EntityChangeEvent(e, ev.Entity, app.appModel)); } } // Implémente la gestion du copier coller EventProcess.ProcessCopyPasteEvents(app, this, app.appModel, from, _this, e); }
//----------------------------------------------------------------------------------------- // Evénements //----------------------------------------------------------------------------------------- #region IEventProcess // Traite les événements public void ProcessEvent(object from, object _this, IEvent e) { // // Model Change // Après le changement du model // if (e is ModelChangeEvent) { ModelChangeEvent ev = e as ModelChangeEvent; //Actualise l'interface UpdateUI(); // Notifie les vues this.NotifyEvent(e); } // // Entity Change // Après le changement d'une entité // if (e is EntityChangeEvent) { EntityChangeEvent ev = e as EntityChangeEvent; //Actualise l'interface OnEntityChange(ev.Model, ev.Entity, ev.BaseEvent); // Notifie les vues this.NotifyEvent(e); } // // Pré-Create // Préprare la création d'une nouvelle entité (avant édition des champs) // if (e is EntityPreCreateEvent) { EntityPreCreateEvent ev = e as EntityPreCreateEvent; // Allocation if (ev.Entity == null) { ev.Entity = app.appModel.CreateEntity(ev.EntityName); } // Affecte le status de création ev.Entity.EntityState = EntityState.Added; // Initialise les données par défaut if (ev.Entity is IEntityPersistent) { IEntityPersistent p = ev.Entity as IEntityPersistent; //Affecte la source de données à la nouvelle entitée p.Factory = app.appModel.project.Factory; } if (ev.Entity is ObjectSyntax) { ObjectSyntax entity = ev.Entity as ObjectSyntax; // Ajoute au projet en cours app.Project.AddObjectSyntax(entity); } if (ev.Entity is ParamSyntax) { ParamSyntax entity = ev.Entity as ParamSyntax; // Ajoute au projet en cours app.Project.AddParamSyntax(entity); } if (ev.Entity is ObjectContent) { ObjectContent entity = ev.Entity as ObjectContent; // Ajoute au projet en cours app.Project.AddObjectContent(entity); // Génére un identifiant unique entity.Id = Guid.NewGuid().ToString("N"); foreach (var p in entity.ParamContent) { p.Id = Guid.NewGuid().ToString("N"); } } if (ev.Entity is ParamContent) { ParamContent entity = ev.Entity as ParamContent; CurObjectContent.AddParamContent(entity); // Génére un identifiant unique entity.Id = Guid.NewGuid().ToString("N"); } if (ev.Entity is SearchParams) { SearchParams entity = ev.Entity as SearchParams; app.Project.AddSearchParams(entity); } if (ev.Entity is DatabaseSource) { DatabaseSource entity = ev.Entity as DatabaseSource; app.Project.AddDatabaseSource(entity); if (app.States.SelectedDatabaseSourceId == null) { app.States.SelectedDatabaseSourceId = app.Project.DatabaseSource.First().Id; } } // Ajoute l'instance au model (notifie le controleur) app.appModel.Add(ev.Entity); } // Implémente la gestion du copier coller EventProcess.ProcessCopyPasteEvents(app, this, app.appModel, from, _this, e); /* * * // * // Change * // Action après le changement d'une entité * // * if (e is EntityChangeEvent) * { * EntityChangeEvent ev = e as EntityChangeEvent; * // Concerne ce model ? * if (ev.Model == app.appModel) * { * if (ev.Entity is ObjectContent) * { * OnPropertyChanged("ObjectContentList"); * } * if (ev.Entity is ParamContent) * { * CurParamContentList = new ObservableCollection<ParamContent>(curObjectContent.ParamContent); * } * if (ev.Entity is DatabaseSource) * { * OnPropertyChanged("CurDatabaseSource"); * } * } * }*/ }