/// <summary> /// Called whenever a relationship of type MetaModelHasModelContexts is deleted and /// the element hosted by this model is the source. /// </summary> /// <param name="args"></param> private void OnModelContextRemoved(ElementDeletedEventArgs args) { MetaModelHasModelContexts con = args.ModelElement as MetaModelHasModelContexts; if (con != null) { DeleteModelContext(con.BaseModelContext); } }
/// <summary> /// Called whenever a relationship of type MetaModelHasModelContexts is added and /// the element hosted by this model is the source. /// </summary> /// <param name="args"></param> private void OnModelContextAdded(ElementAddedEventArgs args) { MetaModelHasModelContexts con = args.ModelElement as MetaModelHasModelContexts; if (con != null) { AddModelContext(con.BaseModelContext); } }
private void WriteChildElementsExtended(DslModeling::SerializationContext serializationContext, MetaModel element, global::System.Xml.XmlWriter writer) { // MetaModelHasDomainTypes global::System.Collections.ObjectModel.ReadOnlyCollection <MetaModelHasDomainTypes> allMetaModelHasDomainTypesInstances = MetaModelHasDomainTypes.GetLinksToDomainTypes(element); if (!serializationContext.Result.Failed && allMetaModelHasDomainTypesInstances.Count > 0) { writer.WriteStartElement("domainTypes"); global::System.Type typeofMetaModelHasDomainTypes = typeof(MetaModelHasDomainTypes); foreach (MetaModelHasDomainTypes eachMetaModelHasDomainTypesInstance in allMetaModelHasDomainTypesInstances) { if (serializationContext.Result.Failed) { break; } if (eachMetaModelHasDomainTypesInstance.GetType() != typeofMetaModelHasDomainTypes) { // Derived relationships will be serialized in full-form. DslModeling::DomainClassXmlSerializer derivedRelSerializer = serializationContext.Directory.GetSerializer(eachMetaModelHasDomainTypesInstance.GetDomainClass().Id); global::System.Diagnostics.Debug.Assert(derivedRelSerializer != null, "Cannot find serializer for " + eachMetaModelHasDomainTypesInstance.GetDomainClass().Name + "!"); derivedRelSerializer.Write(serializationContext, eachMetaModelHasDomainTypesInstance, writer); } else { // No need to serialize the relationship itself, just serialize the role-player directly. DslModeling::ModelElement targetElement = eachMetaModelHasDomainTypesInstance.DomainType; DslModeling::DomainClassXmlSerializer targetSerializer = serializationContext.Directory.GetSerializer(targetElement.GetDomainClass().Id); global::System.Diagnostics.Debug.Assert(targetSerializer != null, "Cannot find serializer for " + targetElement.GetDomainClass().Name + "!"); targetSerializer.Write(serializationContext, targetElement, writer); } } writer.WriteEndElement(); } // MetaModelHasValidation MetaModelHasValidation theMetaModelHasValidationInstance = MetaModelHasValidation.GetLinkToValidation(element); if (!serializationContext.Result.Failed && theMetaModelHasValidationInstance != null) { writer.WriteStartElement("validation"); DslModeling::DomainClassXmlSerializer relSerializer = serializationContext.Directory.GetSerializer(theMetaModelHasValidationInstance.GetDomainClass().Id); global::System.Diagnostics.Debug.Assert(relSerializer != null, "Cannot find serializer for " + theMetaModelHasValidationInstance.GetDomainClass().Name + "!"); relSerializer.Write(serializationContext, theMetaModelHasValidationInstance, writer); writer.WriteEndElement(); } // MetaModelHasAdditionalInformation MetaModelHasAdditionalInformation theMetaModelHasAdditionalInformationInstance = MetaModelHasAdditionalInformation.GetLinkToAdditionalInformation(element); if (!serializationContext.Result.Failed && theMetaModelHasAdditionalInformationInstance != null) { writer.WriteStartElement("additionalInformation"); DslModeling::DomainClassXmlSerializer relSerializer = serializationContext.Directory.GetSerializer(theMetaModelHasAdditionalInformationInstance.GetDomainClass().Id); global::System.Diagnostics.Debug.Assert(relSerializer != null, "Cannot find serializer for " + theMetaModelHasAdditionalInformationInstance.GetDomainClass().Name + "!"); relSerializer.Write(serializationContext, theMetaModelHasAdditionalInformationInstance, writer); writer.WriteEndElement(); } // MetaModelHasMetaModelLibraries global::System.Collections.ObjectModel.ReadOnlyCollection <MetaModelHasMetaModelLibraries> allMetaModelHasMetaModelLibrariesInstances = MetaModelHasMetaModelLibraries.GetLinksToMetaModelLibraries(element); if (!serializationContext.Result.Failed && allMetaModelHasMetaModelLibrariesInstances.Count > 0) { writer.WriteStartElement("metaModelLibraries"); foreach (MetaModelHasMetaModelLibraries eachMetaModelHasMetaModelLibrariesInstance in allMetaModelHasMetaModelLibrariesInstances) { if (serializationContext.Result.Failed) { break; } DslModeling::DomainClassXmlSerializer relSerializer = serializationContext.Directory.GetSerializer(eachMetaModelHasMetaModelLibrariesInstance.GetDomainClass().Id); global::System.Diagnostics.Debug.Assert(relSerializer != null, "Cannot find serializer for " + eachMetaModelHasMetaModelLibrariesInstance.GetDomainClass().Name + "!"); relSerializer.Write(serializationContext, eachMetaModelHasMetaModelLibrariesInstance, writer); } writer.WriteEndElement(); } /* * // MetaModelHasView * MetaModelHasView theMetaModelHasViewInstance = MetaModelHasView.GetLinkToView(element); * if (!serializationContext.Result.Failed && theMetaModelHasViewInstance != null) * { * DslModeling::DomainClassXmlSerializer relSerializer = serializationContext.Directory.GetSerializer(theMetaModelHasViewInstance.GetDomainClass().Id); * global::System.Diagnostics.Debug.Assert(relSerializer != null, "Cannot find serializer for " + theMetaModelHasViewInstance.GetDomainClass().Name + "!"); * relSerializer.Write(serializationContext, theMetaModelHasViewInstance, writer); * }*/ // MetaModelHasModelContexts global::System.Collections.ObjectModel.ReadOnlyCollection <MetaModelHasModelContexts> allMetaModelHasModelContextsInstances = MetaModelHasModelContexts.GetLinksToModelContexts(element); if (!serializationContext.Result.Failed && allMetaModelHasModelContextsInstances.Count > 0) { writer.WriteStartElement("modelContexts"); foreach (MetaModelHasModelContexts eachMetaModelHasModelContextsInstance in allMetaModelHasModelContextsInstances) { if (serializationContext.Result.Failed) { break; } DslModeling::DomainClassXmlSerializer relSerializer = serializationContext.Directory.GetSerializer(eachMetaModelHasModelContextsInstance.GetDomainClass().Id); global::System.Diagnostics.Debug.Assert(relSerializer != null, "Cannot find serializer for " + eachMetaModelHasModelContextsInstance.GetDomainClass().Name + "!"); relSerializer.Write(serializationContext, eachMetaModelHasModelContextsInstance, writer); } writer.WriteEndElement(); } // MetaModelHasPropertyGridEditors global::System.Collections.ObjectModel.ReadOnlyCollection <MetaModelHasPropertyGridEditors> allMetaModelHasPropertyGridEditorsInstances = MetaModelHasPropertyGridEditors.GetLinksToPropertyGridEditors(element); if (!serializationContext.Result.Failed && allMetaModelHasPropertyGridEditorsInstances.Count > 0) { writer.WriteStartElement("propertyGridEditors"); global::System.Type typeofMetaModelHasPropertyGridEditors = typeof(MetaModelHasPropertyGridEditors); foreach (MetaModelHasPropertyGridEditors eachMetaModelHasPropertyGridEditorsInstance in allMetaModelHasPropertyGridEditorsInstances) { if (serializationContext.Result.Failed) { break; } if (eachMetaModelHasPropertyGridEditorsInstance.GetType() != typeofMetaModelHasPropertyGridEditors) { // Derived relationships will be serialized in full-form. DslModeling::DomainClassXmlSerializer derivedRelSerializer = serializationContext.Directory.GetSerializer(eachMetaModelHasPropertyGridEditorsInstance.GetDomainClass().Id); global::System.Diagnostics.Debug.Assert(derivedRelSerializer != null, "Cannot find serializer for " + eachMetaModelHasPropertyGridEditorsInstance.GetDomainClass().Name + "!"); derivedRelSerializer.Write(serializationContext, eachMetaModelHasPropertyGridEditorsInstance, writer); } else { // No need to serialize the relationship itself, just serialize the role-player directly. DslModeling::ModelElement targetElement = eachMetaModelHasPropertyGridEditorsInstance.PropertyGridEditor; DslModeling::DomainClassXmlSerializer targetSerializer = serializationContext.Directory.GetSerializer(targetElement.GetDomainClass().Id); global::System.Diagnostics.Debug.Assert(targetSerializer != null, "Cannot find serializer for " + targetElement.GetDomainClass().Name + "!"); targetSerializer.Write(serializationContext, targetElement, writer); } } writer.WriteEndElement(); } }