/// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="metaModel"></param>
 /// <param name="modelContext"></param>
 public PropertiesOptimization(MetaModel metaModel, LibraryModelContext modelContext)
     : base(metaModel, modelContext)
 {
     InvolvedProperties      = new List <DomainProperty>();
     this.CreateIntermediate = false;
     this.IsInheritance      = false;
 }
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="metaModel"></param>
 /// <param name="modelContext"></param>
 public PropertiesOptimization(MetaModel metaModel, LibraryModelContext modelContext)
     : base(metaModel, modelContext)
 {
     InvolvedProperties = new List<DomainProperty>();
     this.CreateIntermediate = false;
     this.IsInheritance = false;
 }
Esempio n. 3
0
        /// <summary>
        /// Deletes a new ModelContext view model for the given ModelContext.
        /// </summary>
        /// <param name="element">ModelContext.</param>
        public void DeleteModelContext(LibraryModelContext element)
        {
            if (this.externMCReference != null)
            {
                if (this.externMCReference.ModelContext == element)
                {
                    this.externMCReference.Dispose();
                    this.externMCReference = null;
                }
            }

            OnPropertyChanged("ExternModelContextReference");
        }
Esempio n. 4
0
        /// <summary>
        /// Adds a new ModelContext view model for the given ModelContext.
        /// </summary>
        /// <param name="element">ModelContext.</param>
        public void AddModelContext(LibraryModelContext element)
        {
            if (this.externMCReference != null)
            {
                if (this.externMCReference.ModelContext == element)
                {
                    return;
                }
            }

            this.externMCReference = new ModelContextViewModel(this.ViewModelStore, element, true);
            OnPropertyChanged("ExternModelContextReference");
        }
        private static CategorizedSelectableViewModel CreateCategorizedSelectableVM(LibraryModelContext model, string categoryName, ViewModelStore store, SelectionHelperTarget target)
        {
            List<SelectableViewModel> vms = new List<SelectableViewModel>();
            if( (target & SelectionHelperTarget.DomainClass) > 0)
                foreach (DomainClass d in model.Classes)
                {
                    vms.Add(new SelectableViewModel(store, d));
                }


            if( (target & SelectionHelperTarget.EmbeddingRelationship) > 0 ||
                (target & SelectionHelperTarget.ReferenceRelationship) > 0)
                foreach (DomainRelationship r in model.Relationships)
                {
                    if( (target & SelectionHelperTarget.EmbeddingRelationship) > 0 && r is EmbeddingRelationship )
                        vms.Add(new SelectableViewModel(store, r));

                    if ((target & SelectionHelperTarget.ReferenceRelationship) > 0 && r is ReferenceRelationship)
                        vms.Add(new SelectableViewModel(store, r));
                }

            if ((target & SelectionHelperTarget.DiagramClass) > 0 ||
                (target & SelectionHelperTarget.DiagramClassWithoutDerived) > 0)
                foreach(DiagramClass d in model.DiagramClasses)
                {
                    if ((target & SelectionHelperTarget.DiagramClassWithoutDerived) > 0)
                    {
                        if (!(d is DesignerDiagramClass))
                            vms.Add(new SelectableViewModel(store, d));
                    }
                    else
                        vms.Add(new SelectableViewModel(store, d));
                }

            if ((target & SelectionHelperTarget.ShapeClass) > 0 ||
                (target & SelectionHelperTarget.RSShapeClass) > 0 ||
                (target & SelectionHelperTarget.MappingShapeClass) > 0)
                foreach (DiagramClass d in model.DiagramClasses)
                    foreach (PresentationElementClass p in d.PresentationElements)
                    {
                        if( p is ShapeClass && (target & SelectionHelperTarget.ShapeClass) > 0 )
                            vms.Add(new SelectableViewModel(store, p));
                        if (p is RelationshipShapeClass && (target & SelectionHelperTarget.RSShapeClass) > 0)
                            vms.Add(new SelectableViewModel(store, p));
                        if (p is MappingRelationshipShapeClass && (target & SelectionHelperTarget.MappingShapeClass) > 0)
                            vms.Add(new SelectableViewModel(store, p));
                    }

            vms.Sort(CompareByName);
            return new CategorizedSelectableViewModel(store, categoryName, vms);
        }
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="metaModel"></param>
        /// <param name="modelContext"></param>
        protected BaseOptimization(MetaModel metaModel, LibraryModelContext modelContext)
        {
            this.involvedClasses = new List<DomainClass>();
            this.involvedInheritancesRelationships = new List<DomainClassReferencesBaseClass>();
            this.involvedRelationships = new List<DomainRelationship>();

            this.involvedClassesMapping = new Dictionary<Guid, Guid>();
            this.involvedInheritancesRelationshipsMapping = new Dictionary<Guid, Guid>();
            this.involvedRelationshipsMapping = new Dictionary<Guid, Guid>();

            this.involvedClassesTargetMapping = new Dictionary<Guid, Guid>();
            this.involvedInheritancesRelationshipsTargetMapping = new Dictionary<Guid, Guid>();
            this.involvedRelationshipsTargetMapping = new Dictionary<Guid, Guid>();

            this.MetaModel = metaModel;
            this.ModelContext = modelContext;
        }
Esempio n. 7
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="metaModel"></param>
        /// <param name="modelContext"></param>
        protected BaseOptimization(MetaModel metaModel, LibraryModelContext modelContext)
        {
            this.involvedClasses = new List <DomainClass>();
            this.involvedInheritancesRelationships = new List <DomainClassReferencesBaseClass>();
            this.involvedRelationships             = new List <DomainRelationship>();

            this.involvedClassesMapping = new Dictionary <Guid, Guid>();
            this.involvedInheritancesRelationshipsMapping = new Dictionary <Guid, Guid>();
            this.involvedRelationshipsMapping             = new Dictionary <Guid, Guid>();

            this.involvedClassesTargetMapping = new Dictionary <Guid, Guid>();
            this.involvedInheritancesRelationshipsTargetMapping = new Dictionary <Guid, Guid>();
            this.involvedRelationshipsTargetMapping             = new Dictionary <Guid, Guid>();

            this.MetaModel    = metaModel;
            this.ModelContext = modelContext;
        }
Esempio n. 8
0
 public static string GetModelContextFullName(LibraryModelContext m)
 {
     return(m.MetaModel.Namespace + "." + m.Name + "ModelContext");
 }
        /// <summary>
        /// Creates the temp model.
        /// </summary>
        /// <returns></returns>
        public MetaModel CreateTempModel(bool bIsTarget)
        {
            // disable undo/redo
            this.MetaModel.Store.UndoManager.UndoState = Microsoft.VisualStudio.Modeling.UndoState.DisabledNoFlush;

            MetaModel m = null;
            LibraryModelContext context = null;
            using (Transaction t = this.MetaModel.Store.TransactionManager.BeginTransaction())
            {
                m = new MetaModel(this.MetaModel.Store);
                context = new LibraryModelContext(this.MetaModel.Store);
                m.ModelContexts.Add(context);

                // post process
                SerializationPostProcessor.PostProcessModelLoad(m);

                t.Commit();
            }
            
            // create copies of domain classes
            using (Transaction t = this.MetaModel.Store.TransactionManager.BeginTransaction())
            {
                foreach (DomainClass d in this.InvolvedClasses)
                {
                    DomainClass domainClass = new DomainClass(this.MetaModel.Store);
                    domainClass.Name = d.Name;
                    context.Classes.Add(domainClass);

                    if( !bIsTarget )
                        this.InvolvedClassesMapping.Add(d.Id, domainClass.Id);
                    else
                        this.InvolvedClassesTargetMapping.Add(d.Id, domainClass.Id);
                }
                    
                t.Commit();
            }

            // create inheritance relationships
            using (Transaction t = this.MetaModel.Store.TransactionManager.BeginTransaction())
            {
                foreach (DomainClassReferencesBaseClass con in this.InvolvedInheritancesRelationships)
                {
                    DomainClass source;
                    DomainClass target;
                    if (!bIsTarget)
                    {
                        source = m.Store.ElementDirectory.GetElement(this.InvolvedClassesMapping[con.DerivedClass.Id]) as DomainClass;
                        target = m.Store.ElementDirectory.GetElement(this.InvolvedClassesMapping[con.BaseClass.Id]) as DomainClass;
                    }
                    else
                    {
                        source = m.Store.ElementDirectory.GetElement(this.InvolvedClassesTargetMapping[con.DerivedClass.Id]) as DomainClass;
                        target = m.Store.ElementDirectory.GetElement(this.InvolvedClassesTargetMapping[con.BaseClass.Id]) as DomainClass;
                    }

                    DomainClassReferencesBaseClass conCreated = new DomainClassReferencesBaseClass(source, target);
                    if( !bIsTarget )
                        this.InvolvedInheritancesRelationshipsMapping.Add(con.Id, conCreated.Id);
                    else
                        this.InvolvedInheritancesRelationshipsTargetMapping.Add(con.Id, conCreated.Id);
                }

                t.Commit();
            }

            // create relationships
            using (Transaction t = this.MetaModel.Store.TransactionManager.BeginTransaction())
            {
                foreach (DomainRelationship rel in this.InvolvedRelationships)
                {
                    DomainClass source;
                    DomainClass target;
                    if (!bIsTarget)
                    {
                        source = m.Store.ElementDirectory.GetElement(this.InvolvedClassesMapping[rel.Source.RolePlayer.Id]) as DomainClass;
                        target = m.Store.ElementDirectory.GetElement(this.InvolvedClassesMapping[rel.Target.RolePlayer.Id]) as DomainClass;
                    }
                    else
                    {
                        source = m.Store.ElementDirectory.GetElement(this.InvolvedClassesTargetMapping[rel.Source.RolePlayer.Id]) as DomainClass;
                        target = m.Store.ElementDirectory.GetElement(this.InvolvedClassesTargetMapping[rel.Target.RolePlayer.Id]) as DomainClass;
                    }

                    DomainRelationship relCreated;
                    if( rel is ReferenceRelationship)
                        relCreated = Tum.PDE.LanguageDSL.ModelTreeHelper.AddNewReferenceRelationship(source, target);
                    else
                        relCreated = Tum.PDE.LanguageDSL.ModelTreeHelper.AddNewEmbeddingRS(source, target, false);

                    if (!bIsTarget)
                        this.InvolvedRelationshipsMapping.Add(rel.Id, relCreated.Id);
                    else
                        this.InvolvedRelationshipsTargetMapping.Add(rel.Id, relCreated.Id);
                }

                t.Commit();
            }

            this.CreateTempModel(m, bIsTarget);


            // enable undo/redo
            this.MetaModel.Store.UndoManager.UndoState = Microsoft.VisualStudio.Modeling.UndoState.Enabled;

            return m;
        }
Esempio n. 10
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="metaModel"></param>
 /// <param name="modelContext"></param>
 public RelationshipsReferencesBetweenBaseClassesOptimization(MetaModel metaModel, LibraryModelContext modelContext)
     : base(metaModel, modelContext)
 {
 }
Esempio n. 11
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="metaModel"></param>
 /// <param name="modelContext"></param>
 public RelationshipsOptimization(MetaModel metaModel, LibraryModelContext modelContext)
     : base(metaModel, modelContext)
 {
     this.IsEmbedding = true;
 }
        /// <summary>
        /// Adds a new ModelContext view model for the given ModelContext.
        /// </summary>
        /// <param name="element">ModelContext.</param>
        public void AddModelContext(LibraryModelContext element)
        {
            if( this.externMCReference != null )
				if( this.externMCReference.ModelContext == element )
					return;
					
			this.externMCReference = new ModelContextViewModel(this.ViewModelStore, element, true);
			OnPropertyChanged("ExternModelContextReference");	
        }
        /// <summary>
        /// Deletes a new ModelContext view model for the given ModelContext.
        /// </summary>
        /// <param name="element">ModelContext.</param>
        public void DeleteModelContext(LibraryModelContext element)
        {
			if( this.externMCReference != null )
				if( this.externMCReference.ModelContext == element )
				{
					this.externMCReference.Dispose();
                    this.externMCReference = null;
				}

            OnPropertyChanged("ExternModelContextReference");	
        }
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="metaModel"></param>
 /// <param name="modelContext"></param>
 public RelationshipProcessor(MetaModel metaModel, LibraryModelContext modelContext)
     : base(metaModel, modelContext)
 {
 }
        private static void FixUpDiagramView(LibraryModelContext model)
        {
            foreach (DiagramClass diagramClass in model.DiagramClasses)
            {
                DiagramClassView vm = new DiagramClassView(model.Store);
                vm.IsExpanded = true;
                vm.DiagramClass = diagramClass;

                // add shapes views
                foreach (PresentationElementClass p in diagramClass.PresentationElements)
                {
                    if (p is ShapeClass)
                    {
                        ShapeClass shapeClass = p as ShapeClass;
                        if (shapeClass.Parent == null)
                        {
                            RootDiagramNode node = new RootDiagramNode(p.Store);
                            node.PresentationElementClass = p;

                            vm.RootDiagramNodes.Add(node);
                        }
                        else
                        {
                            EmbeddingDiagramNode newNode = new EmbeddingDiagramNode(model.Store);
                            newNode.PresentationElementClass = p;
                        }
                    }
                    else
                    {
                        RootDiagramNode node = new RootDiagramNode(p.Store);
                        node.PresentationElementClass = p;

                        vm.RootDiagramNodes.Add(node);
                    }
                }

                foreach (PresentationElementClass p in diagramClass.PresentationElements)
                {
                    if (p is ShapeClass)
                    {
                        ShapeClass shapeClass = p as ShapeClass;
                        if (shapeClass.Parent != null)
                        {
                            EmbeddingDiagramNode source = shapeClass.Parent.DiagramTreeNode as EmbeddingDiagramNode;
                            EmbeddingDiagramNode target = p.DiagramTreeNode as EmbeddingDiagramNode;

                            if (source != null && target != null)
                                new EmbeddingDiagramNodeHasEmbeddingDiagramNodes(source, target);
                        }
                    }
                }

                model.ViewContext.DiagramView.DiagramClassViews.Add(vm);
            }
        }
Esempio n. 16
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="metaModel"></param>
 /// <param name="modelContext"></param>
 public PropertiesProcessor(MetaModel metaModel, LibraryModelContext modelContext)
     : base(metaModel, modelContext)
 {
     this.separator    = Guid.NewGuid().ToString();
     this.separatorAdv = Guid.NewGuid().ToString();
 }
        private static void FixUpDomainModelTreeView(LibraryModelContext model)
        {
            // create root nodes and embedding rs
            foreach (DomainClass domainClass in model.Classes)
            {
                if (!domainClass.HasParent())
                {
                    RootNode node = new RootNode(model.Store);
                    node.DomainElement = domainClass;
                    node.IsElementHolder = true;
                    domainClass.ModelContext.ViewContext.DomainModelTreeView.RootNodes.Add(node);
                    domainClass.ModelContext.ViewContext.DomainModelTreeView.ModelTreeNodes.Add(node);

                    node.IsEmbeddingTreeExpanded = true;
                    node.IsReferenceTreeExpanded = true;
                    node.IsInheritanceTreeExpanded = true;
                    node.IsShapeMappingTreeExpanded = true;

                    FixUpDomainClassInTreeView(domainClass);
                }
            }

            // reference relationships + shapes
            foreach (DomainRelationship relationship in model.Relationships)
            {
                if (relationship is ReferenceRelationship)
                {
                    ReferenceRelationship rel = relationship as ReferenceRelationship;
                    ModelTreeHelper.AddNewReferenceRelationship(rel, rel.Source.RolePlayer as DomainClass, rel.Target.RolePlayer);

                    // shape
                    foreach (RelationshipShapeClass s in rel.RelationshipShapeClasses)
                    {
                        ReferenceRSNode node = rel.ReferenceRSNode;

                        // create new shape relationship node
                        ShapeRelationshipNode shapeNode = new ShapeRelationshipNode(rel.Store);
                        shapeNode.RelationshipShapeClass = s;

                        node.ShapeRelationshipNodes.Add(shapeNode);
                        rel.ModelContext.ViewContext.DomainModelTreeView.ModelTreeNodes.Add(shapeNode);
                    }
                }
            }

            // inheritance
            foreach (DomainClass domainClass in model.Classes)
            {
                if (domainClass.BaseClass != null)
                {
                    DomainClassReferencesBaseClass refBase = DomainClassReferencesBaseClass.GetLink(domainClass, domainClass.BaseClass);
                    if (refBase != null)
                    {
                        if (domainClass.DomainModelTreeNodes.Count > 0)
                            ModelTreeHelper.AddNewInheritanceRelationship(refBase, domainClass, domainClass.BaseClass, false);
                        else
                            ModelTreeHelper.AddNewInheritanceRelationship(refBase, domainClass, domainClass.BaseClass, true);
                    }
                }
            }

            // shapes
            foreach (DomainClass domainClass in model.Classes)
                foreach (PresentationDomainClassElement p in domainClass.ShapeClasses)
                {
                    foreach (TreeNode node in domainClass.DomainModelTreeNodes)
                    {
                        if (node.IsElementHolder)
                        {
                            ShapeClassNode shapeNode = new ShapeClassNode(domainClass.Store);
                            shapeNode.ShapeClass = p;

                            node.ShapeClassNodes.Add(shapeNode);
                            domainClass.ModelContext.ViewContext.DomainModelTreeView.ModelTreeNodes.Add(shapeNode);
                            break;
                        }
                    }
                }

        }
Esempio n. 18
0
        public void GenerateShapes(LibraryModelContext modelContext)
        {
            foreach (DiagramClass diagram in modelContext.DiagramClasses)
            {
                Dictionary <ShapeClass, List <ShapeClass> >             childParentMapping          = new Dictionary <ShapeClass, List <ShapeClass> >();
                Dictionary <DomainClass, List <EmbeddingRelationship> > embeddingChildParentMapping = new Dictionary <DomainClass, List <EmbeddingRelationship> >();

                foreach (PresentationElementClass presentationElement in diagram.PresentationElements)
                {
                    if (presentationElement is ShapeClass)
                    {
                        ShapeClass  shapeClass  = presentationElement as ShapeClass;
                        DomainClass domainClass = shapeClass.DomainClass;

                        if (domainClass == null)
                        {
                            continue;
                        }

                        if (shapeClass.Parent != null)
                        {
                            if (shapeClass.Parent.DomainClass == null)
                            {
                                continue;
                            }

                            if (!childParentMapping.ContainsKey(shapeClass.Parent))
                            {
                                childParentMapping.Add(shapeClass.Parent, new List <ShapeClass>());
                            }

                            childParentMapping[shapeClass.Parent].Add(shapeClass);
                        }

                        if (!embeddingChildParentMapping.ContainsKey(domainClass))
                        {
                            embeddingChildParentMapping.Add(domainClass, new List <EmbeddingRelationship>());
                        }
                        foreach (DomainRole rolesPlayed in domainClass.RolesPlayed)
                        {
                            if (rolesPlayed.Relationship.Target == rolesPlayed &&
                                rolesPlayed.Relationship is EmbeddingRelationship &&
                                rolesPlayed.Relationship.InheritanceModifier != InheritanceModifier.Abstract)
                            {
                                if (!embeddingChildParentMapping[domainClass].Contains(rolesPlayed.Relationship as EmbeddingRelationship))
                                {
                                    embeddingChildParentMapping[domainClass].Add(rolesPlayed.Relationship as EmbeddingRelationship);
                                }
                            }
                        }
                        if (embeddingChildParentMapping[domainClass].Count > 0)
                        {
                            IEnumerable <AttributedDomainElement> sortedByInheritanceRS = CodeGenerationUtilities.SortDomainClassesByInheritance(embeddingChildParentMapping[domainClass]);
                            embeddingChildParentMapping[domainClass].Clear();
                            foreach (EmbeddingRelationship r in sortedByInheritanceRS)
                            {
                                embeddingChildParentMapping[domainClass].Add(r);
                            }
                        }
                    }
                }
                foreach (PresentationElementClass presentationElement in diagram.PresentationElements)
                {
                    string baseClass             = "DslEditorDiagrams::NodeShape";
                    string className             = presentationElement.Name;
                    bool   hasBaseClass          = false;
                    InheritanceModifier modifier = presentationElement.InheritanceModifier;

                    if (!(presentationElement is ShapeClass))
                    {
                        baseClass = "DslEditorDiagrams::LinkShape";
                    }
                    else if (presentationElement is ShapeClass)
                    {
                        if ((presentationElement as ShapeClass).BaseShape != null)
                        {
                            ShapeClass s = (presentationElement as ShapeClass).BaseShape;
                            baseClass    = s.Namespace + "." + s.Name;
                            hasBaseClass = true;
                        }
                    }

                    if (presentationElement.GeneratesDoubleDerived)
                    {
                        className += "Base";
                        modifier   = InheritanceModifier.Abstract;
                    }



        #line default
        #line hidden

        #line 96 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                    this.Write("namespace ");


        #line default
        #line hidden

        #line 97 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(presentationElement.Namespace));


        #line default
        #line hidden

        #line 97 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                    this.Write("\r\n{\r\n\t/// <summary>\r\n    /// ");


        #line default
        #line hidden

        #line 100 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(className));


        #line default
        #line hidden

        #line 100 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                    this.Write(" class representing a Shape.\r\n    /// </summary>\r\n\t[DslModeling::DomainObjectId(\"" +
                               "");


        #line default
        #line hidden

        #line 102 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(presentationElement.Id.ToString("D")));


        #line default
        #line hidden

        #line 102 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                    this.Write("\")]\r\n\t");


        #line default
        #line hidden

        #line 103 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetAccessModifier(presentationElement.AccessModifier)));


        #line default
        #line hidden

        #line 103 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetInheritanceModifier(modifier)));


        #line default
        #line hidden

        #line 103 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                    this.Write(" partial class ");


        #line default
        #line hidden

        #line 103 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(className));


        #line default
        #line hidden

        #line 103 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                    this.Write(" : ");


        #line default
        #line hidden

        #line 103 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(baseClass));


        #line default
        #line hidden

        #line 103 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                    this.Write("\r\n\t{\r\n\t\t#region Constructors, domain class Id\r\n\r\n\t\t/// <summary>\r\n\t\t/// ");


        #line default
        #line hidden

        #line 108 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(presentationElement.Name));


        #line default
        #line hidden

        #line 108 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                    this.Write(" domain class Id.\r\n\t\t/// </summary>\r\n\t\tpublic static readonly new global::System." +
                               "Guid DomainClassId = new System.Guid(\"");


        #line default
        #line hidden

        #line 110 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(presentationElement.Id.ToString("D")));


        #line default
        #line hidden

        #line 110 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                    this.Write("\");\r\n");


        #line default
        #line hidden

        #line 111 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"

                    PushIndent("\t\t");
                    GenerateDomainClassConstructors(presentationElement, true);
                    PopIndent();


        #line default
        #line hidden

        #line 115 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                    this.Write("\t\t#endregion\r\n");


        #line default
        #line hidden

        #line 117 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"

                    PushIndent("\t\t");
                    foreach (DomainProperty property in presentationElement.Properties)
                    {
                        this.Write(DomainPropertyGenerator.Instance.GenerateDomainProperty(property));
                    }
                    PopIndent();

                    if (presentationElement is ShapeClass)
                    {
                        ShapeClass shapeClass = presentationElement as ShapeClass;
                        bool       bTopMost   = false;
                        if (shapeClass.Parent == null)
                        {
                            bTopMost = true;
                        }


        #line default
        #line hidden

        #line 131 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        this.Write("\t\t#region Shape Properties/Methods\r\n\t\t        /// <summary>\r\n        /// Gets if " +
                                   "this shape is a top most item.\r\n        /// </summary>\r\n        public override " +
                                   "bool IsTopMostItem \r\n\t\t{ \r\n\t\t\tget\r\n\t\t\t{\r\n\t\t\t\treturn ");


        #line default
        #line hidden

        #line 140 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(bTopMost.ToString().ToLower()));


        #line default
        #line hidden

        #line 140 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        this.Write(@";
			}
		}
		
		        /// <summary>
        /// Gets the default size of the shape.
        /// </summary>
        public override DslEditorDiagrams::SizeD DefaultSize
        {
            get
            {
                return new DslEditorDiagrams::SizeD(");


        #line default
        #line hidden

        #line 151 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(shapeClass.DefaultWidth));


        #line default
        #line hidden

        #line 151 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        this.Write(", ");


        #line default
        #line hidden

        #line 151 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(shapeClass.DefaultHeight));


        #line default
        #line hidden

        #line 151 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        this.Write(@");
            }
        }
		
		 /// <summary>
        /// Gets the used defined resizing behaviour value.
        /// </summary>
        /// <returns>Resizing behaviour value.</returns>
        public override DslEditorDiagrams::ShapeResizingBehaviour GetResizingBehaviourValue()
		{
");


        #line default
        #line hidden

        #line 161 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"

                        if (shapeClass.IsFixedWidth && shapeClass.IsFixedHeight)
                        {
        #line default
        #line hidden

        #line 164 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                            this.Write("\t\t\treturn DslEditorDiagrams::ShapeResizingBehaviour.Fixed;\r\n");


        #line default
        #line hidden

        #line 166 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        }
                        else if (shapeClass.IsFixedWidth)
                        {
        #line default
        #line hidden

        #line 170 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                            this.Write("\t\t\treturn DslEditorDiagrams::ShapeResizingBehaviour.FixedWidth;\r\n");


        #line default
        #line hidden

        #line 172 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        }
                        else if (shapeClass.IsFixedHeight)
                        {
        #line default
        #line hidden

        #line 176 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                            this.Write("\t\t\treturn DslEditorDiagrams::ShapeResizingBehaviour.FixedHeight;\r\n");


        #line default
        #line hidden

        #line 178 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        }
                        else
                        {
        #line default
        #line hidden

        #line 182 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                            this.Write("\t\t\treturn DslEditorDiagrams::ShapeResizingBehaviour.Normal;\r\n");


        #line default
        #line hidden

        #line 184 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        }


        #line default
        #line hidden

        #line 186 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        this.Write(@"		}

        /// <summary>
        /// Gets the used defined movement behaviour value.
        /// </summary>
        /// <returns>Movement behaviour value.</returns>
        public override DslEditorDiagrams::ShapeMovementBehaviour GetMovementBehaviourValue()
		{
");


        #line default
        #line hidden

        #line 195 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"

                        if (shapeClass.IsRelativeChild)
                        {
                            if (shapeClass.RelativeChildBehaviour == RelativeChildBehaviour.PositionRelativeToParent)
                            {
        #line default
        #line hidden

        #line 200 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                                this.Write("\t\t\treturn DslEditorDiagrams::ShapeMovementBehaviour.PositionRelativeToParent;\r\n");


        #line default
        #line hidden

        #line 202 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                            }
                            else if (shapeClass.RelativeChildBehaviour == RelativeChildBehaviour.PositionOnEdgeOfParent)
                            {
        #line default
        #line hidden

        #line 206 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                                this.Write("\t\t\treturn DslEditorDiagrams::ShapeMovementBehaviour.PositionOnEdgeOfParent;\r\n");


        #line default
        #line hidden

        #line 208 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                            }
                        }
                        else
                        {
        #line default
        #line hidden

        #line 213 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                            this.Write("\t\t\treturn DslEditorDiagrams::ShapeMovementBehaviour.Normal;\r\n");


        #line default
        #line hidden

        #line 215 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        }


        #line default
        #line hidden

        #line 217 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        this.Write(@"		}

        /// <summary>
        /// Gets whether this shape is a relative child shape or not.
        /// </summary>
        /// <returns>True if this shape is a relative child shape. False otherwise</returns>
        public override bool GetIsRelativeChildShapeValue()
		{
			return "            );


        #line default
        #line hidden

        #line 226 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(shapeClass.IsRelativeChild.ToString().ToLower()));


        #line default
        #line hidden

        #line 226 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        this.Write(@";
		}
		
        /// <summary>
        /// Gets whether this shape takes part in any relationship or not.
        /// </summary>
        /// <returns>True if this shape takes part in any relationship. False otherwise</returns>
        public override bool GetTakesPartInRelationshipValue()
		{
");


        #line default
        #line hidden

        #line 235 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"

                        if (hasBaseClass)
                        {
        #line default
        #line hidden

        #line 238 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                            this.Write("\t\t\tif( base.GetTakesPartInRelationshipValue() )\r\n\t\t\t\treturn true;\r\n\t\t\t\t\r\n");


        #line default
        #line hidden

        #line 242 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        }

                        bool takesPart = false;
                        foreach (PresentationElementClass pLink in diagram.PresentationElements)
                        {
                            if (pLink is RelationshipShapeClass)
                            {
                                RelationshipShapeClass rsShape = pLink as RelationshipShapeClass;
                                DomainRelationship     con     = rsShape.ReferenceRelationship;
                                if (con != null)
                                {
                                    if (CodeGenerationUtilities.ShapeTakesPart(shapeClass, con))
                                    {
                                        takesPart = true;
                                    }
                                }
                            }
                            else if (!takesPart && pLink is MappingRelationshipShapeClass)
                            {
                                MappingRelationshipShapeClass rsShape = pLink as MappingRelationshipShapeClass;
                                ReferenceRelationship         con     = rsShape.Source;
                                if (con != null)
                                {
                                    if (CodeGenerationUtilities.ShapeTakesPart(shapeClass, con.Target.RolePlayer as DomainClass))
                                    {
                                        takesPart = true;
                                    }
                                }

                                con = rsShape.Target;
                                if (con != null && !takesPart)
                                {
                                    if (CodeGenerationUtilities.ShapeTakesPart(shapeClass, con.Target.RolePlayer as DomainClass))
                                    {
                                        takesPart = true;
                                    }
                                }
                            }
                        }


        #line default
        #line hidden

        #line 270 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        this.Write("\t\t\treturn ");


        #line default
        #line hidden

        #line 271 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(takesPart.ToString().ToLower()));


        #line default
        #line hidden

        #line 271 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        this.Write(";\r\n\t\t}\r\n\t\t#endregion\r\n");


        #line default
        #line hidden

        #line 274 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                    }


        #line default
        #line hidden

        #line 276 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                    this.Write("\t}\r\n");


        #line default
        #line hidden

        #line 278 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"

                    // If this class is double-derived, generate the skeleton derived class (with just the
                    // constructors)
                    if (presentationElement.GeneratesDoubleDerived)
                    {
        #line default
        #line hidden

        #line 283 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        this.Write("\t\t\t\r\n\t/// <summary>\r\n    /// ");


        #line default
        #line hidden

        #line 285 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(presentationElement.Name));


        #line default
        #line hidden

        #line 285 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        this.Write(" class representing a Shape.\r\n    /// </summary>\r\n\t");


        #line default
        #line hidden

        #line 287 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetAccessModifier(presentationElement.AccessModifier)));


        #line default
        #line hidden

        #line 287 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetInheritanceModifier(presentationElement.InheritanceModifier)));


        #line default
        #line hidden

        #line 287 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        this.Write(" partial class ");


        #line default
        #line hidden

        #line 287 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(presentationElement.Name));


        #line default
        #line hidden

        #line 287 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        this.Write(" : ");


        #line default
        #line hidden

        #line 287 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(presentationElement.Name));


        #line default
        #line hidden

        #line 287 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        this.Write("Base\r\n\t{\r\n\t\t#region Constructors\r\n");


        #line default
        #line hidden

        #line 290 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"

                        PushIndent("\t\t");
                        GenerateDomainClassConstructors(presentationElement, false);
                        PopIndent();


        #line default
        #line hidden

        #line 294 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                        this.Write("\t\t#endregion\r\n\t}\r\n");


        #line default
        #line hidden

        #line 297 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                    }


        #line default
        #line hidden

        #line 299 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                    this.Write("}\r\n");


        #line default
        #line hidden

        #line 301 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                }


        #line default
        #line hidden

        #line 304 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
            }


        #line default
        #line hidden

        #line 307 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
        }
  /// <summary>
  /// Constructor.
  /// </summary>
  /// <param name="metaModel"></param>
  /// <param name="modelContext"></param>
  public RelationshipsReferencesBetweenBaseClassesOptimization(MetaModel metaModel, LibraryModelContext modelContext)
     : base(metaModel, modelContext)
 {
 }
  /// <summary>
  /// Constructor.
  /// </summary>
  /// <param name="metaModel"></param>
  /// <param name="modelContext"></param>
 public RelationshipsOptimization(MetaModel metaModel, LibraryModelContext modelContext)
     : base(metaModel, modelContext)
 {
     this.IsEmbedding = true;
 }
Esempio n. 21
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="metaModel"></param>
 /// <param name="modelContext"></param>
 public RelationshipProcessor(MetaModel metaModel, LibraryModelContext modelContext)
     : base(metaModel, modelContext)
 {
 }
Esempio n. 22
0
        /// <summary>
        /// Creates the temp model.
        /// </summary>
        /// <returns></returns>
        public MetaModel CreateTempModel(bool bIsTarget)
        {
            // disable undo/redo
            this.MetaModel.Store.UndoManager.UndoState = Microsoft.VisualStudio.Modeling.UndoState.DisabledNoFlush;

            MetaModel           m       = null;
            LibraryModelContext context = null;

            using (Transaction t = this.MetaModel.Store.TransactionManager.BeginTransaction())
            {
                m       = new MetaModel(this.MetaModel.Store);
                context = new LibraryModelContext(this.MetaModel.Store);
                m.ModelContexts.Add(context);

                // post process
                SerializationPostProcessor.PostProcessModelLoad(m);

                t.Commit();
            }

            // create copies of domain classes
            using (Transaction t = this.MetaModel.Store.TransactionManager.BeginTransaction())
            {
                foreach (DomainClass d in this.InvolvedClasses)
                {
                    DomainClass domainClass = new DomainClass(this.MetaModel.Store);
                    domainClass.Name = d.Name;
                    context.Classes.Add(domainClass);

                    if (!bIsTarget)
                    {
                        this.InvolvedClassesMapping.Add(d.Id, domainClass.Id);
                    }
                    else
                    {
                        this.InvolvedClassesTargetMapping.Add(d.Id, domainClass.Id);
                    }
                }

                t.Commit();
            }

            // create inheritance relationships
            using (Transaction t = this.MetaModel.Store.TransactionManager.BeginTransaction())
            {
                foreach (DomainClassReferencesBaseClass con in this.InvolvedInheritancesRelationships)
                {
                    DomainClass source;
                    DomainClass target;
                    if (!bIsTarget)
                    {
                        source = m.Store.ElementDirectory.GetElement(this.InvolvedClassesMapping[con.DerivedClass.Id]) as DomainClass;
                        target = m.Store.ElementDirectory.GetElement(this.InvolvedClassesMapping[con.BaseClass.Id]) as DomainClass;
                    }
                    else
                    {
                        source = m.Store.ElementDirectory.GetElement(this.InvolvedClassesTargetMapping[con.DerivedClass.Id]) as DomainClass;
                        target = m.Store.ElementDirectory.GetElement(this.InvolvedClassesTargetMapping[con.BaseClass.Id]) as DomainClass;
                    }

                    DomainClassReferencesBaseClass conCreated = new DomainClassReferencesBaseClass(source, target);
                    if (!bIsTarget)
                    {
                        this.InvolvedInheritancesRelationshipsMapping.Add(con.Id, conCreated.Id);
                    }
                    else
                    {
                        this.InvolvedInheritancesRelationshipsTargetMapping.Add(con.Id, conCreated.Id);
                    }
                }

                t.Commit();
            }

            // create relationships
            using (Transaction t = this.MetaModel.Store.TransactionManager.BeginTransaction())
            {
                foreach (DomainRelationship rel in this.InvolvedRelationships)
                {
                    DomainClass source;
                    DomainClass target;
                    if (!bIsTarget)
                    {
                        source = m.Store.ElementDirectory.GetElement(this.InvolvedClassesMapping[rel.Source.RolePlayer.Id]) as DomainClass;
                        target = m.Store.ElementDirectory.GetElement(this.InvolvedClassesMapping[rel.Target.RolePlayer.Id]) as DomainClass;
                    }
                    else
                    {
                        source = m.Store.ElementDirectory.GetElement(this.InvolvedClassesTargetMapping[rel.Source.RolePlayer.Id]) as DomainClass;
                        target = m.Store.ElementDirectory.GetElement(this.InvolvedClassesTargetMapping[rel.Target.RolePlayer.Id]) as DomainClass;
                    }

                    DomainRelationship relCreated;
                    if (rel is ReferenceRelationship)
                    {
                        relCreated = Tum.PDE.LanguageDSL.ModelTreeHelper.AddNewReferenceRelationship(source, target);
                    }
                    else
                    {
                        relCreated = Tum.PDE.LanguageDSL.ModelTreeHelper.AddNewEmbeddingRS(source, target, false);
                    }

                    if (!bIsTarget)
                    {
                        this.InvolvedRelationshipsMapping.Add(rel.Id, relCreated.Id);
                    }
                    else
                    {
                        this.InvolvedRelationshipsTargetMapping.Add(rel.Id, relCreated.Id);
                    }
                }

                t.Commit();
            }

            this.CreateTempModel(m, bIsTarget);


            // enable undo/redo
            this.MetaModel.Store.UndoManager.UndoState = Microsoft.VisualStudio.Modeling.UndoState.Enabled;

            return(m);
        }
Esempio n. 23
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="metaModel"></param>
 /// <param name="modelContext"></param>
 protected BaseProcessor(MetaModel metaModel, LibraryModelContext modelContext)
 {
     this.MetaModel    = metaModel;
     this.ModelContext = modelContext;
 }
Esempio n. 24
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="metaModel"></param>
 /// <param name="modelContext"></param>
 public MetamodelProcessor(MetaModel metaModel, LibraryModelContext modelContext)
     : base(metaModel, modelContext)
 {
 }
Esempio n. 25
0
        private static CategorizedSelectableViewModel CreateCategorizedSelectableVM(LibraryModelContext model, string categoryName, ViewModelStore store, SelectionHelperTarget target)
        {
            List <SelectableViewModel> vms = new List <SelectableViewModel>();

            if ((target & SelectionHelperTarget.DomainClass) > 0)
            {
                foreach (DomainClass d in model.Classes)
                {
                    vms.Add(new SelectableViewModel(store, d));
                }
            }


            if ((target & SelectionHelperTarget.EmbeddingRelationship) > 0 ||
                (target & SelectionHelperTarget.ReferenceRelationship) > 0)
            {
                foreach (DomainRelationship r in model.Relationships)
                {
                    if ((target & SelectionHelperTarget.EmbeddingRelationship) > 0 && r is EmbeddingRelationship)
                    {
                        vms.Add(new SelectableViewModel(store, r));
                    }

                    if ((target & SelectionHelperTarget.ReferenceRelationship) > 0 && r is ReferenceRelationship)
                    {
                        vms.Add(new SelectableViewModel(store, r));
                    }
                }
            }

            if ((target & SelectionHelperTarget.DiagramClass) > 0 ||
                (target & SelectionHelperTarget.DiagramClassWithoutDerived) > 0)
            {
                foreach (DiagramClass d in model.DiagramClasses)
                {
                    if ((target & SelectionHelperTarget.DiagramClassWithoutDerived) > 0)
                    {
                        if (!(d is DesignerDiagramClass))
                        {
                            vms.Add(new SelectableViewModel(store, d));
                        }
                    }
                    else
                    {
                        vms.Add(new SelectableViewModel(store, d));
                    }
                }
            }

            if ((target & SelectionHelperTarget.ShapeClass) > 0 ||
                (target & SelectionHelperTarget.RSShapeClass) > 0 ||
                (target & SelectionHelperTarget.MappingShapeClass) > 0)
            {
                foreach (DiagramClass d in model.DiagramClasses)
                {
                    foreach (PresentationElementClass p in d.PresentationElements)
                    {
                        if (p is ShapeClass && (target & SelectionHelperTarget.ShapeClass) > 0)
                        {
                            vms.Add(new SelectableViewModel(store, p));
                        }
                        if (p is RelationshipShapeClass && (target & SelectionHelperTarget.RSShapeClass) > 0)
                        {
                            vms.Add(new SelectableViewModel(store, p));
                        }
                        if (p is MappingRelationshipShapeClass && (target & SelectionHelperTarget.MappingShapeClass) > 0)
                        {
                            vms.Add(new SelectableViewModel(store, p));
                        }
                    }
                }
            }

            vms.Sort(CompareByName);
            return(new CategorizedSelectableViewModel(store, categoryName, vms));
        }
Esempio n. 26
0
        /// <summary>
        /// Constuctor.
        /// </summary>
        /// <param name="viewModelStore">The store this view model belongs to.</param>
        public ModelContextViewModel(ViewModelStore viewModelStore, BaseModelContext baseModelContext, bool isLocked)
            : base(viewModelStore)
        {
            this.modelContext = baseModelContext;

            this.copyCommand              = new DelegateCommand(CopyCommand_Executed, CopyCommand_CanExecute);
            this.pasteCommand             = new DelegateCommand(PasteCommand_Executed, PasteCommand_CanExecute);
            this.copyAllTreeCommand       = new DelegateCommand(CopyAllTreeCommand_Executed, CopyAllTreeCommand_CanExecute);
            this.copyEmbeddingTreeCommand = new DelegateCommand(CopyEmbeddingTreeCommand_Executed, CopyAllTreeCommand_CanExecute);
            this.copyReferenceTreeCommand = new DelegateCommand(CopyReferenceTreeCommand_Executed, CopyAllTreeCommand_CanExecute);
            //this.cutCommand = new DelegateCommand(CutCommand_Executed, CutCommand_CanExecute);
            this.optimizeCommand = new DelegateCommand(OptimizeCommand_Executed);

            if (baseModelContext is ModelContext)
            {
                ModelContext modelContext = baseModelContext as ModelContext;

                this.modelTreeViewModel          = new ModelTreeViewModel(viewModelStore, this, modelContext.ViewContext.DomainModelTreeView);
                this.modelTreeViewModel.IsLocked = isLocked;
                this.diagramViewModel            = new DiagramViewModel(viewModelStore, this, modelContext.ViewContext.DiagramView);
                this.serializationViewModel      = new SerializationViewModel(viewModelStore, modelContext.SerializationModel);

                this.modelContextType = ModelContextViewType.ModelContext;
            }
            else if (baseModelContext is ExternModelContext)
            {
                ExternModelContext modelContext = baseModelContext as ExternModelContext;
                if (modelContext.ModelContext != null)
                {
                    this.AddModelContext(modelContext.ModelContext);
                }

                this.EventManager.GetEvent <ModelElementLinkAddedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRelationship(ExternModelContextReferencesModelContext.DomainClassId),
                                                                                    true, this.modelContext.Id, new System.Action <ElementAddedEventArgs>(OnModelContextAdded));
                this.EventManager.GetEvent <ModelElementLinkDeletedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRelationship(ExternModelContextReferencesModelContext.DomainClassId),
                                                                                      true, this.modelContext.Id, new System.Action <ElementDeletedEventArgs>(OnModelContextRemoved));
                this.EventManager.GetEvent <ModelRolePlayerChangedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRole(ExternModelContextReferencesModelContext.ExternModelContextDomainRoleId),
                                                                                     new System.Action <RolePlayerChangedEventArgs>(OnModelContextChanged));
                this.EventManager.GetEvent <ModelRolePlayerChangedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRole(ExternModelContextReferencesModelContext.ModelContextDomainRoleId),
                                                                                     new System.Action <RolePlayerChangedEventArgs>(OnModelContextChanged));

                this.modelContextType = ModelContextViewType.ExternModelContext;
            }
            else if (baseModelContext is LibraryModelContext)
            {
                LibraryModelContext modelContext = baseModelContext as LibraryModelContext;
                this.modelTreeViewModel          = new ModelTreeViewModel(viewModelStore, this, modelContext.ViewContext.DomainModelTreeView);
                this.modelTreeViewModel.IsLocked = isLocked;
                this.diagramViewModel            = new DiagramViewModel(viewModelStore, this, modelContext.ViewContext.DiagramView);
                this.modelContextType            = ModelContextViewType.LibraryContext;
                this.serializationViewModel      = new SerializationViewModel(viewModelStore, modelContext.SerializationModel);
            }

            this.selectedItem = this.ModelTreeViewModel;

            if (this.ModelContext != null)
            {
                this.EventManager.GetEvent <ModelElementPropertyChangedEvent>().Subscribe(
                    this.Store.DomainDataDirectory.GetDomainProperty(BaseModelContext.NameDomainPropertyId), this.ModelContext.Id, new System.Action <ElementPropertyChangedEventArgs>(NamePropertyChanged));
            }
        }
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="metaModel"></param>
 /// <param name="modelContext"></param>
 public PropertiesProcessor(MetaModel metaModel, LibraryModelContext modelContext)
     : base(metaModel, modelContext)
 {
     this.separator = Guid.NewGuid().ToString();
     this.separatorAdv = Guid.NewGuid().ToString();
 }
 public static string GetModelContextFullName(LibraryModelContext m)
 {
     return m.MetaModel.Namespace + "." + m.Name + "ModelContext";
 }
public void GenerateShapes(LibraryModelContext modelContext)
{
	foreach(DiagramClass diagram in modelContext.DiagramClasses)
	{
	Dictionary<ShapeClass, List<ShapeClass>> childParentMapping = new Dictionary<ShapeClass, List<ShapeClass>>();
	Dictionary<DomainClass, List<EmbeddingRelationship>> embeddingChildParentMapping = new Dictionary<DomainClass, List<EmbeddingRelationship>>();

	foreach(PresentationElementClass presentationElement in diagram.PresentationElements)
	{
		if( presentationElement is ShapeClass)
		{
			ShapeClass shapeClass = presentationElement as ShapeClass;
			DomainClass domainClass = shapeClass.DomainClass;

			if( domainClass == null )
				continue;
			
			if( shapeClass.Parent != null )
			{
				if( shapeClass.Parent.DomainClass == null )
					continue;
				
				if( !childParentMapping.ContainsKey(shapeClass.Parent) )
					childParentMapping.Add(shapeClass.Parent, new List<ShapeClass>());
				
				childParentMapping[shapeClass.Parent].Add(shapeClass);
			}
			
			if( !embeddingChildParentMapping.ContainsKey(domainClass) )
				embeddingChildParentMapping.Add(domainClass, new List<EmbeddingRelationship>());
			foreach(DomainRole rolesPlayed in domainClass.RolesPlayed)
			{
				if( rolesPlayed.Relationship.Target == rolesPlayed && 
					rolesPlayed.Relationship is EmbeddingRelationship && 
					rolesPlayed.Relationship.InheritanceModifier != InheritanceModifier.Abstract)
						if( !embeddingChildParentMapping[domainClass].Contains(rolesPlayed.Relationship as EmbeddingRelationship) )
							embeddingChildParentMapping[domainClass].Add(rolesPlayed.Relationship as EmbeddingRelationship);
			}
			if( embeddingChildParentMapping[domainClass].Count > 0 )
			{
				IEnumerable<AttributedDomainElement> sortedByInheritanceRS = CodeGenerationUtilities.SortDomainClassesByInheritance(embeddingChildParentMapping[domainClass]);					
				embeddingChildParentMapping[domainClass].Clear();
				foreach(EmbeddingRelationship r in sortedByInheritanceRS)
					embeddingChildParentMapping[domainClass].Add(r);
			}
		}
	}
	foreach(PresentationElementClass presentationElement in diagram.PresentationElements)
	{
		string baseClass = "DslEditorDiagrams::NodeShape";
		string className = presentationElement.Name;
		bool hasBaseClass = false;
		InheritanceModifier modifier = presentationElement.InheritanceModifier;
		
		if( !(presentationElement is ShapeClass) )
		{
			baseClass = "DslEditorDiagrams::LinkShape";
		}
		else if(presentationElement is ShapeClass)
		{
			if( (presentationElement as ShapeClass).BaseShape != null )
			{
				ShapeClass s = (presentationElement as ShapeClass).BaseShape;
				baseClass = s.Namespace + "." + s.Name;
				hasBaseClass = true;
			}
		}
		
		if( presentationElement.GeneratesDoubleDerived )
		{
			className += "Base";
			modifier = InheritanceModifier.Abstract;
		}
	

        
        #line default
        #line hidden
        
        #line 96 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write("namespace ");

        
        #line default
        #line hidden
        
        #line 97 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(presentationElement.Namespace));

        
        #line default
        #line hidden
        
        #line 97 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write("\r\n{\r\n\t/// <summary>\r\n    /// ");

        
        #line default
        #line hidden
        
        #line 100 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(className));

        
        #line default
        #line hidden
        
        #line 100 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(" class representing a Shape.\r\n    /// </summary>\r\n\t[DslModeling::DomainObjectId(\"" +
        "");

        
        #line default
        #line hidden
        
        #line 102 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(presentationElement.Id.ToString("D")));

        
        #line default
        #line hidden
        
        #line 102 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write("\")]\r\n\t");

        
        #line default
        #line hidden
        
        #line 103 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetAccessModifier(presentationElement.AccessModifier)));

        
        #line default
        #line hidden
        
        #line 103 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetInheritanceModifier(modifier)));

        
        #line default
        #line hidden
        
        #line 103 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(" partial class ");

        
        #line default
        #line hidden
        
        #line 103 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(className));

        
        #line default
        #line hidden
        
        #line 103 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(" : ");

        
        #line default
        #line hidden
        
        #line 103 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(baseClass));

        
        #line default
        #line hidden
        
        #line 103 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write("\r\n\t{\r\n\t\t#region Constructors, domain class Id\r\n\r\n\t\t/// <summary>\r\n\t\t/// ");

        
        #line default
        #line hidden
        
        #line 108 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(presentationElement.Name));

        
        #line default
        #line hidden
        
        #line 108 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(" domain class Id.\r\n\t\t/// </summary>\r\n\t\tpublic static readonly new global::System." +
        "Guid DomainClassId = new System.Guid(\"");

        
        #line default
        #line hidden
        
        #line 110 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(presentationElement.Id.ToString("D")));

        
        #line default
        #line hidden
        
        #line 110 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write("\");\r\n");

        
        #line default
        #line hidden
        
        #line 111 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"

		PushIndent("\t\t");
		GenerateDomainClassConstructors(presentationElement, true);
		PopIndent();

        
        #line default
        #line hidden
        
        #line 115 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write("\t\t#endregion\r\n");

        
        #line default
        #line hidden
        
        #line 117 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"

		PushIndent("\t\t");
		foreach(DomainProperty property in presentationElement.Properties)
		{
			this.Write(DomainPropertyGenerator.Instance.GenerateDomainProperty(property));
		}
		PopIndent();
		
		if( presentationElement is ShapeClass )
		{
			ShapeClass shapeClass = presentationElement as ShapeClass;
			bool bTopMost = false;
			if( shapeClass.Parent == null )
				bTopMost = true;

        
        #line default
        #line hidden
        
        #line 131 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write("\t\t#region Shape Properties/Methods\r\n\t\t        /// <summary>\r\n        /// Gets if " +
        "this shape is a top most item.\r\n        /// </summary>\r\n        public override " +
        "bool IsTopMostItem \r\n\t\t{ \r\n\t\t\tget\r\n\t\t\t{\r\n\t\t\t\treturn ");

        
        #line default
        #line hidden
        
        #line 140 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(bTopMost.ToString().ToLower()));

        
        #line default
        #line hidden
        
        #line 140 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(@";
			}
		}
		
		        /// <summary>
        /// Gets the default size of the shape.
        /// </summary>
        public override DslEditorDiagrams::SizeD DefaultSize
        {
            get
            {
                return new DslEditorDiagrams::SizeD(");

        
        #line default
        #line hidden
        
        #line 151 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(shapeClass.DefaultWidth));

        
        #line default
        #line hidden
        
        #line 151 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(", ");

        
        #line default
        #line hidden
        
        #line 151 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(shapeClass.DefaultHeight));

        
        #line default
        #line hidden
        
        #line 151 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(@");
            }
        }
		
		 /// <summary>
        /// Gets the used defined resizing behaviour value.
        /// </summary>
        /// <returns>Resizing behaviour value.</returns>
        public override DslEditorDiagrams::ShapeResizingBehaviour GetResizingBehaviourValue()
		{
");

        
        #line default
        #line hidden
        
        #line 161 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"

			if( shapeClass.IsFixedWidth && shapeClass.IsFixedHeight )
			{

        
        #line default
        #line hidden
        
        #line 164 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write("\t\t\treturn DslEditorDiagrams::ShapeResizingBehaviour.Fixed;\r\n");

        
        #line default
        #line hidden
        
        #line 166 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"

			}
			else if( shapeClass.IsFixedWidth )
			{

        
        #line default
        #line hidden
        
        #line 170 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write("\t\t\treturn DslEditorDiagrams::ShapeResizingBehaviour.FixedWidth;\r\n");

        
        #line default
        #line hidden
        
        #line 172 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"

			}
			else if( shapeClass.IsFixedHeight )
			{

        
        #line default
        #line hidden
        
        #line 176 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write("\t\t\treturn DslEditorDiagrams::ShapeResizingBehaviour.FixedHeight;\r\n");

        
        #line default
        #line hidden
        
        #line 178 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"

			}
			else
			{

        
        #line default
        #line hidden
        
        #line 182 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write("\t\t\treturn DslEditorDiagrams::ShapeResizingBehaviour.Normal;\r\n");

        
        #line default
        #line hidden
        
        #line 184 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"

			}

        
        #line default
        #line hidden
        
        #line 186 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(@"		}

        /// <summary>
        /// Gets the used defined movement behaviour value.
        /// </summary>
        /// <returns>Movement behaviour value.</returns>
        public override DslEditorDiagrams::ShapeMovementBehaviour GetMovementBehaviourValue()
		{
");

        
        #line default
        #line hidden
        
        #line 195 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"

			if( shapeClass.IsRelativeChild )
			{
				if( shapeClass.RelativeChildBehaviour == RelativeChildBehaviour.PositionRelativeToParent )
				{

        
        #line default
        #line hidden
        
        #line 200 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write("\t\t\treturn DslEditorDiagrams::ShapeMovementBehaviour.PositionRelativeToParent;\r\n");

        
        #line default
        #line hidden
        
        #line 202 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"

				}
				else if( shapeClass.RelativeChildBehaviour == RelativeChildBehaviour.PositionOnEdgeOfParent )
				{

        
        #line default
        #line hidden
        
        #line 206 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write("\t\t\treturn DslEditorDiagrams::ShapeMovementBehaviour.PositionOnEdgeOfParent;\r\n");

        
        #line default
        #line hidden
        
        #line 208 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"

				}
			}
			else
			{

        
        #line default
        #line hidden
        
        #line 213 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write("\t\t\treturn DslEditorDiagrams::ShapeMovementBehaviour.Normal;\r\n");

        
        #line default
        #line hidden
        
        #line 215 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"

			}

        
        #line default
        #line hidden
        
        #line 217 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(@"		}

        /// <summary>
        /// Gets whether this shape is a relative child shape or not.
        /// </summary>
        /// <returns>True if this shape is a relative child shape. False otherwise</returns>
        public override bool GetIsRelativeChildShapeValue()
		{
			return ");

        
        #line default
        #line hidden
        
        #line 226 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(shapeClass.IsRelativeChild.ToString().ToLower()));

        
        #line default
        #line hidden
        
        #line 226 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(@";
		}
		
        /// <summary>
        /// Gets whether this shape takes part in any relationship or not.
        /// </summary>
        /// <returns>True if this shape takes part in any relationship. False otherwise</returns>
        public override bool GetTakesPartInRelationshipValue()
		{
");

        
        #line default
        #line hidden
        
        #line 235 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"

			if( hasBaseClass )
			{

        
        #line default
        #line hidden
        
        #line 238 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write("\t\t\tif( base.GetTakesPartInRelationshipValue() )\r\n\t\t\t\treturn true;\r\n\t\t\t\t\r\n");

        
        #line default
        #line hidden
        
        #line 242 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"

			}
			
			bool takesPart = false;
			foreach(PresentationElementClass pLink in diagram.PresentationElements)
			{
				if( pLink is RelationshipShapeClass)
				{
					RelationshipShapeClass rsShape = pLink as RelationshipShapeClass;
					DomainRelationship con = rsShape.ReferenceRelationship;
					if( con != null )
						if( CodeGenerationUtilities.ShapeTakesPart(shapeClass, con) )
							takesPart = true;
				}
				else if( !takesPart && pLink is MappingRelationshipShapeClass )
				{
					MappingRelationshipShapeClass rsShape = pLink as MappingRelationshipShapeClass;
					ReferenceRelationship con = rsShape.Source;
					if( con != null )
						if( CodeGenerationUtilities.ShapeTakesPart(shapeClass, con.Target.RolePlayer as DomainClass) )
							takesPart = true;
						
					con = rsShape.Target;
					if( con != null && !takesPart )
						if( CodeGenerationUtilities.ShapeTakesPart(shapeClass, con.Target.RolePlayer as DomainClass) )
							takesPart = true;
				}
			}

        
        #line default
        #line hidden
        
        #line 270 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write("\t\t\treturn ");

        
        #line default
        #line hidden
        
        #line 271 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(takesPart.ToString().ToLower()));

        
        #line default
        #line hidden
        
        #line 271 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(";\r\n\t\t}\r\n\t\t#endregion\r\n");

        
        #line default
        #line hidden
        
        #line 274 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"

		}

        
        #line default
        #line hidden
        
        #line 276 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write("\t}\r\n");

        
        #line default
        #line hidden
        
        #line 278 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"

		// If this class is double-derived, generate the skeleton derived class (with just the
		// constructors)
		if ( presentationElement.GeneratesDoubleDerived )
		{

        
        #line default
        #line hidden
        
        #line 283 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write("\t\t\t\r\n\t/// <summary>\r\n    /// ");

        
        #line default
        #line hidden
        
        #line 285 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(presentationElement.Name));

        
        #line default
        #line hidden
        
        #line 285 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(" class representing a Shape.\r\n    /// </summary>\r\n\t");

        
        #line default
        #line hidden
        
        #line 287 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetAccessModifier(presentationElement.AccessModifier)));

        
        #line default
        #line hidden
        
        #line 287 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetInheritanceModifier(presentationElement.InheritanceModifier)));

        
        #line default
        #line hidden
        
        #line 287 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(" partial class ");

        
        #line default
        #line hidden
        
        #line 287 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(presentationElement.Name));

        
        #line default
        #line hidden
        
        #line 287 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(" : ");

        
        #line default
        #line hidden
        
        #line 287 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(presentationElement.Name));

        
        #line default
        #line hidden
        
        #line 287 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write("Base\r\n\t{\r\n\t\t#region Constructors\r\n");

        
        #line default
        #line hidden
        
        #line 290 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"

			PushIndent("\t\t");
			GenerateDomainClassConstructors(presentationElement, false);
			PopIndent();

        
        #line default
        #line hidden
        
        #line 294 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write("\t\t#endregion\r\n\t}\r\n");

        
        #line default
        #line hidden
        
        #line 297 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"

		}

        
        #line default
        #line hidden
        
        #line 299 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
this.Write("}\r\n");

        
        #line default
        #line hidden
        
        #line 301 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"

	}

        
        #line default
        #line hidden
        
        #line 304 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"

}

        
        #line default
        #line hidden
        
        #line 307 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"

}