/// <summary>
        /// Creates the view model for the given node shape.
        /// </summary>
        /// <param name="nodeShapeType">Shape type for which the view model is to be created.</param>
		/// <param name="diagram">Diagram surface vm.</param>
		/// <param name="nodeShape">Node shape.</param>
        /// <returns>
        /// View model of type DiagramItemElementViewModel if a view model can be created for the given element. Null otherwise.
		/// </returns>
        public override DslEditorViewModel.DiagramSurface.DiagramItemElementViewModel CreateDiagramItemViewModel(System.Guid nodeShapeType, DslEditorViewDiagrams::DiagramSurfaceViewModel diagram, DslEditorDiagrams::NodeShape nodeShape)
        {
			if( nodeShapeType == global::Tum.VModellXT.RolleDependencyShape.DomainClassId )
				return new Tum.VModellXT.ViewModel.RolleDependencyShapeDiagramItemViewModel(this.Store, diagram, nodeShape);

			if( nodeShapeType == global::Tum.VModellXT.DisziplinDependencyShape.DomainClassId )
				return new Tum.VModellXT.ViewModel.DisziplinDependencyShapeDiagramItemViewModel(this.Store, diagram, nodeShape);

			if( nodeShapeType == global::Tum.VModellXT.ErzAbhDependencyShape.DomainClassId )
				return new Tum.VModellXT.ViewModel.ErzAbhDependencyShapeDiagramItemViewModel(this.Store, diagram, nodeShape);

			if( nodeShapeType == global::Tum.VModellXT.Dynamik.AblaufbausteinShape.DomainClassId )
				return new Tum.VModellXT.Dynamik.ViewModel.AblaufbausteinShapeDiagramItemViewModel(this.Store, diagram, nodeShape);

			if( nodeShapeType == global::Tum.VModellXT.Dynamik.StartpunktShape.DomainClassId )
				return new Tum.VModellXT.Dynamik.ViewModel.StartpunktShapeDiagramItemViewModel(this.Store, diagram, nodeShape);

			if( nodeShapeType == global::Tum.VModellXT.Dynamik.EndepunktShape.DomainClassId )
				return new Tum.VModellXT.Dynamik.ViewModel.EndepunktShapeDiagramItemViewModel(this.Store, diagram, nodeShape);

			if( nodeShapeType == global::Tum.VModellXT.Dynamik.AblaufentscheidungspunktShape.DomainClassId )
				return new Tum.VModellXT.Dynamik.ViewModel.AblaufentscheidungspunktShapeDiagramItemViewModel(this.Store, diagram, nodeShape);

			if( nodeShapeType == global::Tum.VModellXT.Dynamik.AblaufbausteinpunktShape.DomainClassId )
				return new Tum.VModellXT.Dynamik.ViewModel.AblaufbausteinpunktShapeDiagramItemViewModel(this.Store, diagram, nodeShape);

			if( nodeShapeType == global::Tum.VModellXT.Dynamik.SplitShape.DomainClassId )
				return new Tum.VModellXT.Dynamik.ViewModel.SplitShapeDiagramItemViewModel(this.Store, diagram, nodeShape);

			if( nodeShapeType == global::Tum.VModellXT.Dynamik.SplitEingangShape.DomainClassId )
				return new Tum.VModellXT.Dynamik.ViewModel.SplitEingangShapeDiagramItemViewModel(this.Store, diagram, nodeShape);

			if( nodeShapeType == global::Tum.VModellXT.Dynamik.SplitAusgangShape.DomainClassId )
				return new Tum.VModellXT.Dynamik.ViewModel.SplitAusgangShapeDiagramItemViewModel(this.Store, diagram, nodeShape);

			if( nodeShapeType == global::Tum.VModellXT.Dynamik.JoinShape.DomainClassId )
				return new Tum.VModellXT.Dynamik.ViewModel.JoinShapeDiagramItemViewModel(this.Store, diagram, nodeShape);

			if( nodeShapeType == global::Tum.VModellXT.Dynamik.JoinEingangShape.DomainClassId )
				return new Tum.VModellXT.Dynamik.ViewModel.JoinEingangShapeDiagramItemViewModel(this.Store, diagram, nodeShape);

			if( nodeShapeType == global::Tum.VModellXT.Dynamik.JoinAusgangShape.DomainClassId )
				return new Tum.VModellXT.Dynamik.ViewModel.JoinAusgangShapeDiagramItemViewModel(this.Store, diagram, nodeShape);

			if( nodeShapeType == global::Tum.VModellXT.Dynamik.AblaufbausteinspezifikationShape.DomainClassId )
				return new Tum.VModellXT.Dynamik.ViewModel.AblaufbausteinspezifikationShapeDiagramItemViewModel(this.Store, diagram, nodeShape);


            return null;
        }
		/// <summary>
        /// Constuctor.
        /// </summary>
        /// <param name="viewModelStore">View model store containing this view model.</param>
		/// <param name="diagram">Diagram.</param>
		/// <param name="modelContext">Model context.</param>
		/// <param name="parentModelContext">Parent model context.</param>
        protected PDEModelingDSLDesignerDiagramSurfaceViewModelBase(PDEModelingDSLViewModelStore viewModelStore, DslEditorDiagrams::Diagram diagram, DslEditorModeling::ModelContext modelContext, DslEditorModeling::ModelContext parentModelContext)
            : base(viewModelStore, diagram, modelContext)
        {
			this.parentModelContext = parentModelContext;
        }
	    /// <summary>
        /// Creates the view model for the given link shape.
        /// </summary>
        /// <param name="nodeShapeType">Shape type for which the view model is to be created.</param>
        /// <param name="diagram">Diagram surface vm.</param>
        /// <param name="nodeShape">Link shape.</param>
        /// <returns>
        /// View model of type BaseDiagramItemLinkViewModel if a view model can be created for the given element. Null otherwise.</returns>
        public override DslEditorViewModel.DiagramSurface.BaseDiagramItemLinkViewModel CreateDiagramLinkViewModel(System.Guid nodeShapeType, DslEditorViewDiagrams::DiagramSurfaceViewModel diagram, DslEditorDiagrams::LinkShape nodeShape)
        {
			if( nodeShapeType == global::Tum.VModellXT.Dynamik.AblaufbausteinpunktRAblaufbausteinspezShape.DomainClassId )
				return new Tum.VModellXT.Dynamik.ViewModel.AblaufbausteinpunktRAblaufbausteinspezShapeDiagramItemLinkViewModel(this.Store, diagram, nodeShape);

			if( nodeShapeType == global::Tum.VModellXT.Dynamik.AblaufbausteinRAblaufbausteinspezShape.DomainClassId )
				return new Tum.VModellXT.Dynamik.ViewModel.AblaufbausteinRAblaufbausteinspezShapeDiagramItemLinkViewModel(this.Store, diagram, nodeShape);

			if( nodeShapeType == global::Tum.VModellXT.Dynamik.UebergangShape.DomainClassId )
				return new Tum.VModellXT.Dynamik.ViewModel.UebergangShapeDiagramItemLinkViewModel(this.Store, diagram, nodeShape);


            return null;
        }
		/// <summary>
        /// Constuctor.
        /// </summary>
        /// <param name="viewModelStore">View model store containing this view model.</param>
		/// <param name="diagram">Diagram.</param>
		/// <param name="modelContext">Model context.</param>
        public VSPluginDSLDesignerDiagramSurfaceViewModel(VSPluginDSLViewModelStore viewModelStore, DslEditorDiagrams::Diagram diagram, DslEditorModeling::ModelContext modelContext)
            : base(viewModelStore, diagram, modelContext)
        {
        }
		/// <summary>
        /// Constuctor.
        /// </summary>
        /// <param name="viewModelStore">View model store containing this view model.</param>
		/// <param name="diagram">Diagram.</param>
		/// <param name="modelContext">Model context.</param>
		/// <param name="parentModelContext">Parent model context.</param>
        public PDEModelingDSLDesignerDiagramSurfaceViewModel(PDEModelingDSLViewModelStore viewModelStore, DslEditorDiagrams::Diagram diagram, DslEditorModeling::ModelContext modelContext, DslEditorModeling::ModelContext parentModelContext)
            : base(viewModelStore, diagram, modelContext, parentModelContext)
        {
        }
        /// <summary>
        /// Creates the view model for the given node shape.
        /// </summary>
        /// <param name="nodeShapeType">Shape type for which the view model is to be created.</param>
		/// <param name="diagram">Diagram surface vm.</param>
		/// <param name="nodeShape">Node shape.</param>
        /// <returns>
        /// View model of type DiagramItemElementViewModel if a view model can be created for the given element. Null otherwise.
		/// </returns>
        public override DslEditorViewModel.DiagramSurface.DiagramItemElementViewModel CreateDiagramItemViewModel(System.Guid nodeShapeType, DslEditorViewDiagrams::DiagramSurfaceViewModel diagram, DslEditorDiagrams::NodeShape nodeShape)
        {
			if( nodeShapeType == global::Tum.FamilyTreeDSL.PersonShape.DomainClassId )
				return new Tum.FamilyTreeDSL.ViewModel.PersonShapeDiagramItemViewModel(this.Store, diagram, nodeShape);


            return null;
        }
		/// <summary>
        /// Constuctor.
        /// </summary>
        /// <param name="viewModelStore">View model store containing this view model.</param>
		/// <param name="diagram">Diagram.</param>
		/// <param name="modelContext">Model context.</param>
		/// <param name="parentModelContext">Parent model context.</param>
        public TestLanguageDesignerDiagramSurfaceViewModel(TestLanguageViewModelStore viewModelStore, DslEditorDiagrams::Diagram diagram, DslEditorModeling::ModelContext modelContext, DslEditorModeling::ModelContext parentModelContext)
            : base(viewModelStore, diagram, modelContext, parentModelContext)
        {
        }
		/// <summary>
        /// Constuctor.
        /// </summary>
        /// <param name="viewModelStore">View model store containing this view model.</param>
		/// <param name="diagram">Diagram.</param>
		/// <param name="modelContext">Model context.</param>
        protected VModellXTErzAbhGrDependencyTemplateSurfaceViewModelBase(VModellXTViewModelStore viewModelStore, DslEditorDiagrams::Diagram diagram, DslEditorModeling::ModelContext modelContext)
            : base(viewModelStore, diagram, modelContext)
        {
			
        }
		/// <summary>
        /// Constuctor.
        /// </summary>
        /// <param name="viewModelStore">View model store containing this view model.</param>
		/// <param name="diagram">Diagram.</param>
		/// <param name="modelContext">Model context.</param>
		/// <param name="parentModelContext">Parent model context.</param>
        public VModellXTDesignerDiagramMustertexteSurfaceViewModel(VModellXTViewModelStore viewModelStore, DslEditorDiagrams::Diagram diagram, DslEditorModeling::ModelContext modelContext, DslEditorModeling::ModelContext parentModelContext)
            : base(viewModelStore, diagram, modelContext, parentModelContext)
        {
        }
		void InitIncludedDiagrams(DslEditorDiagrams::Diagram includingDiagram)
		{
			foreach(DslEditorDiagrams::Diagram diagram in includingDiagram.IncludedDiagrams)
			{
				if( diagram.UniqueName == "VModellXTDynamikDesignerDiagram")
				{
					DslEditorViewDiagrams::DiagramSurfaceViewModel dVm = new Tum.VModellXT.Dynamik.ViewModel.VModellXTDynamikDesignerDiagramSurfaceViewModel(
						this.ViewModelStore.GetExternViewModelStore(typeof(Tum.VModellXT.Dynamik.ViewModel.VModellXTDynamikViewModelStore)) as Tum.VModellXT.Dynamik.ViewModel.VModellXTDynamikViewModelStore, diagram, this.ModelContext);
					dVm.ParentDiagramSurfaceViewModel = this;
					dVm.IsIncludedModelInstance = true;
					this.AddIncludedSurfaceViewModels(dVm);
				}
			}
		
		}
		/// <summary>
        /// Constuctor.
        /// </summary>
        /// <param name="viewModelStore">View model store containing this view model.</param>
		/// <param name="diagram">Diagram.</param>
		/// <param name="modelContext">Model context.</param>
        public VModellXTDisziplinGrDependencyTemplateSurfaceViewModel(VModellXTViewModelStore viewModelStore, DslEditorDiagrams::Diagram diagram, DslEditorModeling::ModelContext modelContext)
            : base(viewModelStore, diagram, modelContext)
        {
        }
		/// <summary>
        /// Constuctor.
        /// </summary>
        /// <param name="viewModelStore">View model store containing this view model.</param>
		/// <param name="diagram">Diagram.</param>
		/// <param name="modelContext">Model context.</param>
		/// <param name="parentModelContext">Parent model context.</param>
        protected VModellXTDesignerDiagramVariantenkonfigSurfaceViewModelBase(VModellXTViewModelStore viewModelStore, DslEditorDiagrams::Diagram diagram, DslEditorModeling::ModelContext modelContext, DslEditorModeling::ModelContext parentModelContext)
            : base(viewModelStore, diagram, modelContext)
        {
			this.parentModelContext = parentModelContext;
        }
		/// <summary>
        /// Constuctor.
        /// </summary>
        /// <param name="viewModelStore">View model store containing this view model.</param>
		/// <param name="diagram">Diagram.</param>
		/// <param name="modelContext">Model context.</param>
        public VModellXTDesignerDiagramVariantenkonfigSurfaceViewModel(VModellXTViewModelStore viewModelStore, DslEditorDiagrams::Diagram diagram, DslEditorModeling::ModelContext modelContext)
            : base(viewModelStore, diagram, modelContext)
        {
        }
		/// <summary>
        /// Constuctor.
        /// </summary>
        /// <param name="viewModelStore">View model store containing this view model.</param>
		/// <param name="diagram">Diagram.</param>
		/// <param name="modelContext">Model context.</param>
        protected FamilyTreeDSLDesignerDiagramSurfaceViewModelBase(FamilyTreeDSLViewModelStore viewModelStore, DslEditorDiagrams::Diagram diagram, DslEditorModeling::ModelContext modelContext)
            : base(viewModelStore, diagram, modelContext)
        {
			
        }
	    /// <summary>
        /// Creates the view model for the given link shape.
        /// </summary>
        /// <param name="nodeShapeType">Shape type for which the view model is to be created.</param>
        /// <param name="diagram">Diagram surface vm.</param>
        /// <param name="nodeShape">Link shape.</param>
        /// <returns>
        /// View model of type BaseDiagramItemLinkViewModel if a view model can be created for the given element. Null otherwise.</returns>
        public override DslEditorViewModel.DiagramSurface.BaseDiagramItemLinkViewModel CreateDiagramLinkViewModel(System.Guid nodeShapeType, DslEditorViewDiagrams::DiagramSurfaceViewModel diagram, DslEditorDiagrams::LinkShape nodeShape)
        {
			if( nodeShapeType == global::Tum.PDE.ModelingDSL.ReferenceShape.DomainClassId )
				return new Tum.PDE.ModelingDSL.ViewModel.ReferenceShapeDiagramItemLinkViewModel(this.Store, diagram, nodeShape);

			if( nodeShapeType == global::Tum.PDE.ModelingDSL.EmbeddingShape.DomainClassId )
				return new Tum.PDE.ModelingDSL.ViewModel.EmbeddingShapeDiagramItemLinkViewModel(this.Store, diagram, nodeShape);


            return null;
        }
		/// <summary>
        /// Constuctor.
        /// </summary>
        /// <param name="viewModelStore">View model store containing this view model.</param>
		/// <param name="diagram">Diagram.</param>
		/// <param name="modelContext">Model context.</param>
        protected VModellXTDesignerDiagramMustertexteSurfaceViewModelBase(VModellXTViewModelStore viewModelStore, DslEditorDiagrams::Diagram diagram, DslEditorModeling::ModelContext modelContext)
            : base(viewModelStore, diagram, modelContext)
        {
			
        }
	    /// <summary>
        /// Creates the view model for the given link shape.
        /// </summary>
        /// <param name="nodeShapeType">Shape type for which the view model is to be created.</param>
        /// <param name="diagram">Diagram surface vm.</param>
        /// <param name="nodeShape">Link shape.</param>
        /// <returns>
        /// View model of type BaseDiagramItemLinkViewModel if a view model can be created for the given element. Null otherwise.</returns>
        public override DslEditorViewModel.DiagramSurface.BaseDiagramItemLinkViewModel CreateDiagramLinkViewModel(System.Guid nodeShapeType, DslEditorViewDiagrams::DiagramSurfaceViewModel diagram, DslEditorDiagrams::LinkShape nodeShape)
        {
			if( nodeShapeType == global::Tum.FamilyTreeDSL.ParentOfShape.DomainClassId )
				return new Tum.FamilyTreeDSL.ViewModel.ParentOfShapeDiagramItemLinkViewModel(this.Store, diagram, nodeShape);

			if( nodeShapeType == global::Tum.FamilyTreeDSL.MarriedToShape.DomainClassId )
				return new Tum.FamilyTreeDSL.ViewModel.MarriedToShapeDiagramItemLinkViewModel(this.Store, diagram, nodeShape);


            return null;
        }
	    /// <summary>
        /// Creates the view model for the given link shape.
        /// </summary>
        /// <param name="nodeShapeType">Shape type for which the view model is to be created.</param>
        /// <param name="diagram">Diagram surface vm.</param>
        /// <param name="nodeShape">Link shape.</param>
        /// <returns>
        /// View model of type BaseDiagramItemLinkViewModel if a view model can be created for the given element. Null otherwise.</returns>
        public override DslEditorViewModel.DiagramSurface.BaseDiagramItemLinkViewModel CreateDiagramLinkViewModel(System.Guid nodeShapeType, DslEditorViewDiagrams::DiagramSurfaceViewModel diagram, DslEditorDiagrams::LinkShape nodeShape)
        {

            return null;
        }
		void InitIncludedDiagrams(DslEditorDiagrams::Diagram includingDiagram)
		{
		
		}
		/// <summary>
        /// Constuctor.
        /// </summary>
        /// <param name="viewModelStore">View model store containing this view model.</param>
		/// <param name="diagram">Diagram.</param>
		/// <param name="modelContext">Model context.</param>
        protected PDEModelingDSLConversionDiagramSurfaceViewModelBase(PDEModelingDSLViewModelStore viewModelStore, DslEditorDiagrams::Diagram diagram, DslEditorModeling::ModelContext modelContext)
            : base(viewModelStore, diagram, modelContext)
        {
			
        }
		/// <summary>
        /// Constuctor.
        /// </summary>
        /// <param name="viewModelStore">View model store containing this view model.</param>
		/// <param name="diagram">Diagram.</param>
		/// <param name="modelContext">Model context.</param>
		/// <param name="parentModelContext">Parent model context.</param>
        protected TestLanguageDesignerDiagramSurfaceViewModelBase(TestLanguageViewModelStore viewModelStore, DslEditorDiagrams::Diagram diagram, DslEditorModeling::ModelContext modelContext, DslEditorModeling::ModelContext parentModelContext)
            : base(viewModelStore, diagram, modelContext)
        {
			this.parentModelContext = parentModelContext;
        }
		/// <summary>
        /// Constuctor.
        /// </summary>
        /// <param name="viewModelStore">View model store containing this view model.</param>
		/// <param name="diagram">Diagram.</param>
		/// <param name="modelContext">Model context.</param>
        protected StateMachineLanguageDesignerDiagramSurfaceViewModelBase(StateMachineLanguageViewModelStore viewModelStore, DslEditorDiagrams::Diagram diagram, DslEditorModeling::ModelContext modelContext)
            : base(viewModelStore, diagram, modelContext)
        {
			
        }