public override void ElementPropertyChanged(ElementPropertyChangedEventArgs e) { if (e.ModelElement != null) { if (e.ModelElement.Store.TransactionManager.CurrentTransaction != null) { if (e.ModelElement.Store.TransactionManager.CurrentTransaction.IsSerializing) { return; } } } if (e.ModelElement == null) { return; } if (ImmutabilityExtensionMethods.GetLocks(e.ModelElement) != Locks.None) { return; } SerializedDomainRole serializedDomainRole = e.ModelElement as SerializedDomainRole; if (serializedDomainRole != null) { if (e.DomainProperty.Id == SerializedDomainRole.SerializationNameDomainPropertyId && serializedDomainRole.DomainRole.Relationship is ReferenceRelationship) { if (serializedDomainRole.DomainRole == serializedDomainRole.DomainRole.Relationship.Source) { //if ((serializedDomainRole.DomainRole.Relationship as ReferenceRelationship).SerializationSourceName != serializedDomainRole.SerializationName) // (serializedDomainRole.DomainRole.Relationship as ReferenceRelationship).SerializationSourceName = serializedDomainRole.SerializationName; } else { if ((serializedDomainRole.DomainRole.Relationship as ReferenceRelationship).SerializationTargetName != serializedDomainRole.SerializationName) { (serializedDomainRole.DomainRole.Relationship as ReferenceRelationship).SerializationTargetName = serializedDomainRole.SerializationName; } } } else if (e.DomainProperty.Id == SerializedDomainRole.SerializationAttributeNameDomainPropertyId && serializedDomainRole.DomainRole.Relationship is ReferenceRelationship) { //if ((serializedDomainRole.DomainRole.Relationship as ReferenceRelationship).SerializationAttributeName != serializedDomainRole.SerializationAttributeName) // (serializedDomainRole.DomainRole.Relationship as ReferenceRelationship).SerializationAttributeName = serializedDomainRole.SerializationAttributeName; } } }
/// <summary> /// Constuctor. /// </summary> /// <param name="viewModelStore">The store this view model belongs to.</param> /// <param name="serializedDomainRole">SerializedDomainRole.</param> /// <param name="referencedElement">Element that is referenced by the serialization element. Can be null.</param> public SerializedDomainRoleViewModel(ViewModelStore viewModelStore, SerializedDomainRole serializedDomainRole, DomainRelationship referencedElement, SerializedRelationshipViewModel parentVM) : base(viewModelStore, serializedDomainRole, referencedElement) { this.parentVM = parentVM; if (this.SerializationElement != null) { this.domainRole = this.SerializationElement.DomainRole; // subscribe this.EventManager.GetEvent<ModelElementPropertyChangedEvent>().Subscribe(this.SerializationElement.Id, new Action<ElementPropertyChangedEventArgs>(OnSerializedRolePropertyChanged)); if (domainRole != null) { this.EventManager.GetEvent<ModelElementPropertyChangedEvent>().Subscribe(this.domainRole.Id, new Action<ElementPropertyChangedEventArgs>(OnSerializedRolePropertyChanged)); if (this.domainRole.RolePlayer != null) this.EventManager.GetEvent<ModelElementPropertyChangedEvent>().Subscribe(this.domainRole.RolePlayer.Id, new Action<ElementPropertyChangedEventArgs>(OnSerializedRolePropertyChanged)); } } }
/// <summary> /// Constuctor. /// </summary> /// <param name="viewModelStore">The store this view model belongs to.</param> /// <param name="serializedDomainRole">SerializedDomainRole.</param> /// <param name="referencedElement">Element that is referenced by the serialization element. Can be null.</param> public SerializedDomainRoleViewModel(ViewModelStore viewModelStore, SerializedDomainRole serializedDomainRole, DomainRelationship referencedElement, SerializedRelationshipViewModel parentVM) : base(viewModelStore, serializedDomainRole, referencedElement) { this.parentVM = parentVM; if (this.SerializationElement != null) { this.domainRole = this.SerializationElement.DomainRole; // subscribe this.EventManager.GetEvent <ModelElementPropertyChangedEvent>().Subscribe(this.SerializationElement.Id, new Action <ElementPropertyChangedEventArgs>(OnSerializedRolePropertyChanged)); if (domainRole != null) { this.EventManager.GetEvent <ModelElementPropertyChangedEvent>().Subscribe(this.domainRole.Id, new Action <ElementPropertyChangedEventArgs>(OnSerializedRolePropertyChanged)); if (this.domainRole.RolePlayer != null) { this.EventManager.GetEvent <ModelElementPropertyChangedEvent>().Subscribe(this.domainRole.RolePlayer.Id, new Action <ElementPropertyChangedEventArgs>(OnSerializedRolePropertyChanged)); } } } }
public static void OnReferenceRelationshipAdded(ReferenceRelationship referenceRelationship) { #region Check Paramaters if (referenceRelationship.Source == null) { throw new ArgumentNullException("referenceRelationship.Source"); } if (referenceRelationship.Target == null) { throw new ArgumentNullException("referenceRelationship.Target"); } if (!(referenceRelationship.Source.RolePlayer is DomainClass)) { throw new ArgumentNullException("referenceRelationship.Source.RolePlayer needs to be DomainClass"); } if (!(referenceRelationship.Target.RolePlayer is DomainClass) && !(referenceRelationship.Target.RolePlayer is ReferenceRelationship)) { throw new ArgumentNullException("referenceRelationship.Target.RolePlayer needs to be DomainClass or ReferenceRelationship"); } #endregion // Add properties and id attribute and set serialization form. SerializedReferenceRelationship child = new SerializedReferenceRelationship(referenceRelationship.Store); child.ReferenceRelationship = referenceRelationship; if (referenceRelationship.NeedsFullSerialization()) { child.IsInFullSerialization = true; } else { child.IsInFullSerialization = false; } child.SerializationName = referenceRelationship.SerializationName; SerializationHelper.AddSerializationDomainProperties(referenceRelationship.Store, referenceRelationship); referenceRelationship.ModelContext.SerializationModel.Children.Add(child); SerializationClass domainClassSource = (referenceRelationship.Source.RolePlayer as DomainClass).SerializedDomainClass; domainClassSource.Children.Add(child); // Add roles players. SerializedDomainRole roleSource = new SerializedDomainRole(referenceRelationship.Store); roleSource.DomainRole = referenceRelationship.Source; roleSource.SerializationAttributeName = referenceRelationship.SerializationAttributeName; roleSource.SerializationName = referenceRelationship.SerializationSourceName; child.Children.Add(roleSource); SerializedDomainRole roleTarget = new SerializedDomainRole(referenceRelationship.Store); roleTarget.DomainRole = referenceRelationship.Target; roleTarget.SerializationAttributeName = referenceRelationship.SerializationAttributeName; roleTarget.SerializationName = referenceRelationship.SerializationTargetName; child.Children.Add(roleTarget); child.SerializedDomainRoles.Add(roleSource); child.SerializedDomainRoles.Add(roleTarget); // update derived roles SerializationHelper.UpdateDerivedElementsSerializationDomainRoles(referenceRelationship.Source.RolePlayer); }