public static void UnparentShape(ShapeClass shapeClass)
        {
            EmbeddingDiagramNode node = shapeClass.DiagramTreeNode as EmbeddingDiagramNode;

            if (node == null)
            {
                return;
            }

            if (shapeClass != null)
            {
                shapeClass.Parent.Children.Remove(shapeClass);
                //shapeClass.DiagramTreeNode = null;
            }

            RootDiagramNode rootNode = new RootDiagramNode(shapeClass.Store);

            List <EmbeddingDiagramNode> nodesToMove = new List <EmbeddingDiagramNode>();

            foreach (EmbeddingDiagramNode n in node.EmbeddingDiagramNodes)
            {
                nodesToMove.Add(n);
            }
            foreach (EmbeddingDiagramNode n in nodesToMove)
            {
                n.SourceEmbeddingDiagramNode = rootNode;
            }

            shapeClass.DiagramTreeNode = rootNode;
            shapeClass.DiagramClass.DiagramClassView.RootDiagramNodes.Add(rootNode);
        }
        public static void UnparentShape(ShapeClass shapeClass)
        {
            EmbeddingDiagramNode node = shapeClass.DiagramTreeNode as EmbeddingDiagramNode;
            if (node == null)
                return;

            if (shapeClass != null)
            {
                shapeClass.Parent.Children.Remove(shapeClass);
                //shapeClass.DiagramTreeNode = null;
            }

            RootDiagramNode rootNode = new RootDiagramNode(shapeClass.Store);

            List<EmbeddingDiagramNode> nodesToMove = new List<EmbeddingDiagramNode>();
            foreach (EmbeddingDiagramNode n in node.EmbeddingDiagramNodes)
                nodesToMove.Add(n);
            foreach (EmbeddingDiagramNode n in nodesToMove)
            {
                n.SourceEmbeddingDiagramNode = rootNode;
            }

            shapeClass.DiagramTreeNode = rootNode;
            shapeClass.DiagramClass.DiagramClassView.RootDiagramNodes.Add(rootNode);
        }
Beispiel #3
0
        public static List <ClassifiedShape> ReadDB()
        {
            List <ClassifiedShape> classifiedShapes = new List <ClassifiedShape>();

            using (TextReader textReader = File.OpenText(dbFileName))
            {
                var csv = new CsvReader(textReader);
                csv.Configuration.HasHeaderRecord = true;
                csv.Read();
                csv.ReadHeader();
                while (csv.Read())
                {
                    Relations relations = new Relations();
                    //LenPch,Pch2Ach,AltAch,PchPer,AchAerAlt
                    ShapeClass shapeClass = csv.GetField <ShapeClass>("shapeClass");
                    relations.LenPch    = csv.GetField <double>("LenPch");
                    relations.Pch2Ach   = csv.GetField <double>("Pch2Ach");
                    relations.AltAch    = csv.GetField <double>("AltAch");
                    relations.PchPer    = csv.GetField <double>("PchPer");
                    relations.AchAerAlt = csv.GetField <double>("AchAerAlt");
                    classifiedShapes.Add(new ClassifiedShape(relations, shapeClass));
                }
            }
            return(classifiedShapes);
        }
Beispiel #4
0
 void DrawShape(ShapeClass sh)
 {
     for (int i = 1; i < sh.length; i++ )
     {
         Debug.DrawLine(sh.points[i-1], sh.points[i], Color.red);
     }
     Debug.DrawLine(sh.points[0], sh.points[sh.length - 1], Color.red);
 }
        /// <summary>
        /// Sets the class and all corresponding values
        /// </summary>
        /// <param name="type">The class</param>
        public void SetClass(ShapeClass type)
        {
            shapeClass = type;

            SetPower(shapeClass.startPower);

            CreateFixture();
        }
Beispiel #6
0
 public void CopyFrom(ShapeClass sh)
 {
     length = sh.length;
     points = new Vector3[length];
     for (int i = 0; i < length; i++ )
     {
         points[i] = new Vector3(sh.points[i].x, sh.points[i].y, sh.points[i].z);
     }
 }
Beispiel #7
0
 public ClassifiedShape(Relations relations, ShapeClass shapeClass)
 {
     // this.relations = relations;
     LenPch          = Math.Round(relations.LenPch, 5);
     Pch2Ach         = Math.Round(relations.Pch2Ach, 5);
     AltAch          = Math.Round(relations.AltAch, 5);
     PchPer          = Math.Round(relations.PchPer, 5);
     AchAerAlt       = Math.Round(relations.AchAerAlt, 5);
     AltAer          = Math.Round(relations.AltAer, 5);
     this.shapeClass = shapeClass;
 }
        public static ShapeClass CreateShapeClass(DiagramClass diagramClass)
        {
            ShapeClass shapeClass = diagramClass.Store.ElementFactory.CreateElement(ShapeClass.DomainClassId) as ShapeClass;

            Microsoft.VisualStudio.Modeling.ElementOperations elementOperations = new Microsoft.VisualStudio.Modeling.ElementOperations(diagramClass.Store as IServiceProvider, diagramClass.Store.DefaultPartition);
            Microsoft.VisualStudio.Modeling.ElementGroup      elementGroup      = new Microsoft.VisualStudio.Modeling.ElementGroup(diagramClass.Store.DefaultPartition);
            elementGroup.Add(shapeClass);
            elementGroup.MarkAsRoot(shapeClass);
            elementOperations.MergeElementGroup(diagramClass, elementGroup);
            shapeClass.Name = NameHelper.GetUniqueName(diagramClass.Store, ShapeClass.DomainClassId);
            return(shapeClass);
        }
Beispiel #9
0
    public static float GetAngleBetween(ShapeClass firstShape, ShapeClass secondShape)
    {
        Vector3 firstVec = firstShape.points[1] - firstShape.points[0];

        //should project to the plane of the second shape
        Vector3 secondNormal = secondShape.GetShapeNormal();
        Vector3 tempProj = secondNormal * (Vector3.Dot(firstVec, secondNormal) / secondNormal.magnitude);

        Vector3 firstProject = firstVec - tempProj;
        Vector3 secondVec = secondShape.points[1] - secondShape.points[0];

        return (Vector3.Angle(firstProject, secondVec)) * Mathf.Sign(Vector3.Dot(Vector3.Cross(firstProject, secondVec), secondNormal));
    }
Beispiel #10
0
        public static List <DataTemplateViewModel> GetShapeClassTemplate(BaseModelElementViewModel vm)
        {
            ShapeClass shapeClass = vm.GetHostedElement() as ShapeClass;
            MetaModel  metaModel  = shapeClass.GetMetaModel();

            List <DataTemplateViewModel> retVms = ParseFile(vm.ViewModelStore, "ShapeClassTemplate.xml",
                                                            new string[] {
                shapeClass.Name,                                // CustomString0
                metaModel.Namespace,                            // CustomString1
            });

            retVms.Add(CreateBindablePropertiesTemplate(vm));
            return(retVms);
        }
Beispiel #11
0
    // Use this for initialization
    void Start()
    {
        knotPositions = new Vector3[pointsNumber];
        shapes = new List<ShapeClass>();
        for (int i = 0; i < pointsNumber; i++ )
        {
            knotPositions[i] = GetPointPositionInSpline(new Vector3(), new Vector3(0, 1, 0), new Vector3(2, 3, 0), new Vector3(3, 3, 0), (float)i / (float)(pointsNumber - 1));
        }
        originalShape = new ShapeClass(new Vector3[]{new Vector3(-1, 0, -1), new Vector3(-1, 0, 1), new Vector3(1, 0, 1), new Vector3(1, 0, -1)});

        shapes.Add(originalShape);

        //startQ = new Quaternion(0, 0, 1, 0);
        startQ = Quaternion.Euler(0, 0, 0);
        startMatrix = Matrix4x4.TRS(new Vector3(), startQ, new Vector3(1, 1, 1));
        endQ = Quaternion.Euler(0, 0, -90);
        //endQ = new Quaternion(0, 1, 0, 0);
        endMatrix = Matrix4x4.TRS(new Vector3(3, 3, 0), endQ, new Vector3(1, 1, 1));
        //endQ = QuaternionFromMatrix(endMatrix);

        print("end Quaternion=" + endQ.ToString() + " start Quaternion=" + startQ.ToString());
        print("startMatrix=" + startMatrix.ToString());

        //calculate angle between quaternions
           // float angle = (180 * Mathf.Acos(Quaternion.Dot(startQ, endQ))) / Mathf.PI;
        float angle = Mathf.Acos(Quaternion.Dot(startQ, endQ) / (GetQuaternionLength(startQ) * GetQuaternionLength(endQ)));
        //print("Angle=" + angle.ToString());

        endShape = new ShapeClass();
        endShape.CopyFrom(originalShape);
        endShape.MapsTo(endMatrix);

        //calculate other shapes
        for (int i = 1; i < pointsNumber-1; i++ )
        {
            //Quaternion middleQ = Quaternion.Lerp(startQ, endQ, (float)i * 100 / (float)(pointsNumber - 1));
            Quaternion middleQ = GetInterpolatedQuaternion(startQ, endQ, angle, (float)i / (float)(pointsNumber - 1));
            print(middleQ.ToString() + " " + ((float)i / (float)(pointsNumber - 1)).ToString());
            Matrix4x4 middleMatrix = Matrix4x4.TRS(knotPositions[i], middleQ, new Vector3(1, 1, 1));

            ShapeClass middleShape = new ShapeClass();
            middleShape.CopyFrom(originalShape);
            middleShape.MapsTo(middleMatrix);

            shapes.Add(middleShape);

        }

        shapes.Add(endShape);
    }
Beispiel #12
0
        private void buttonClassify_Click(object sender, EventArgs e)
        {
            //List<ClassifiedShape> records = new List<ClassifiedShape>();
            //foreach (DataGridViewRow i in dataGridViewClassifiedShape.Rows)
            //{
            //    records.Add(i.DataBoundItem as ClassifiedShape);
            //}
            //var groupedList = GroupHistory(records);
            //foreach(var i in groupedList)
            //{
            //    Debug.WriteLine(i.shapeClass + " " + i.PchPer + " " + i.AchAerAlt);
            //}
            ImageHandler         imageHandler = new ImageHandler(new Bitmap(pictureBox1.Image));
            List <List <Point> > edges        = imageHandler.GetEdges();
            Bitmap    tempDraw = new Bitmap(pictureBox1.Image);
            Graphics  graphics = Graphics.FromImage(tempDraw);
            Relations relation = new Relations();

            foreach (List <Point> edge in edges)
            {
                List <Point>     desu             = edge.OrderBy(x => Math.Atan2(x.X, x.Y)).ToList();
                ShapeRecognition recognizer       = new ShapeRecognition(new Polygon2D(desu));
                Polygon2D        convexHull       = recognizer.ConvexHull;
                List <Point>     convexHullPoints = convexHull.Points;
                for (int i = 1; i < convexHullPoints.Count(); i++)
                {
                    graphics.DrawLine(new Pen(Color.Red), convexHullPoints[i - 1], convexHullPoints[i]);
                }
                labelShapePointCountVal.Text = pointList.Count.ToString();
                labelConvHullPntCntVal.Text  = convexHullPoints.Count().ToString();
                graphics.DrawRectangle(new Pen(Color.Blue), recognizer.BoundingRectangle);
                DrawTriangle(graphics, recognizer.NestedTriangle);
                relation = recognizer.GetRelations();
            }
            pictureBox1.Image = tempDraw;

            ClassifiedShape   classifiedShape = new ClassifiedShape(relation, ShapeClass.Rectangle);
            ShapeClass        shapeClass      = Classifier.Classify(classifiedShape, features);
            string            messageBoxText  = "Class: " + shapeClass.ToString();
            string            caption         = "Class";
            MessageBoxButtons button          = MessageBoxButtons.OK;

            MessageBox.Show(messageBoxText, caption, button);
        }
Beispiel #13
0
        private void buttonSave_Click(object sender, EventArgs e)
        {
            //switch (tabControl1.SelectedIndex)
            //{
            //    case 0:
            //        ClearCanvas();
            //        break;
            //    case 1:
            ImageHandler         imageHandler = new ImageHandler(new Bitmap(pictureBox1.Image));
            List <List <Point> > edges        = imageHandler.GetEdges();
            Bitmap   tempDraw = new Bitmap(pictureBox1.Image);
            Graphics graphics = Graphics.FromImage(tempDraw);

            foreach (List <Point> edge in edges)
            {
                List <Point>     desu             = edge.OrderBy(x => Math.Atan2(x.X, x.Y)).ToList();
                ShapeRecognition recognizer       = new ShapeRecognition(new Polygon2D(desu));
                Polygon2D        convexHull       = recognizer.ConvexHull;
                List <Point>     convexHullPoints = convexHull.Points;
                for (int i = 1; i < convexHullPoints.Count(); i++)
                {
                    graphics.DrawLine(new Pen(Color.Red), convexHullPoints[i - 1], convexHullPoints[i]);
                }
                labelShapePointCountVal.Text = pointList.Count.ToString();
                labelConvHullPntCntVal.Text  = convexHullPoints.Count().ToString();
                graphics.DrawRectangle(new Pen(Color.Blue), recognizer.BoundingRectangle);
                DrawTriangle(graphics, recognizer.NestedTriangle);
                currentRelation = recognizer.GetRelations();
            }
            pictureBox1.Image = tempDraw;
            //        break;
            //}
            ShapeClass      selectedClassItem = (ShapeClass)comboBoxShapeClass.SelectedItem;
            ClassifiedShape classifiedShape   = new ClassifiedShape(currentRelation, selectedClassItem);

            //ShapeClass shapeClass = Classifier.Classify(classifiedShape, features);

            //string messageBoxText = "Class: " + shapeClass.ToString();
            //string caption = "Class";
            //MessageBoxButtons button = MessageBoxButtons.OK;
            //MessageBox.Show(messageBoxText, caption, button);
            classifiedShapeBindingSource.Add(classifiedShape);
        }
Beispiel #14
0
    public void MatchTo(ShapeClass targetShape)
    {
        //find the index of the target with closest position to 0 point
        Vector3 startPoint = points[0];
        float minDistance = Vector3.Distance(startPoint, targetShape.points[0]);
        int closestIndex = 0;
        for (int i = 1; i < targetShape.length; i++ )
        {
            float md = Vector3.Distance(startPoint, targetShape.points[i]);
            if(md < minDistance)
            {
                closestIndex = i;
                minDistance = md;
            }
        }
        //Debug.Log("closestIndex=" + closestIndex.ToString());

        for (int i = 0; i < length; i++ )
        {
            points[i] = targetShape.points[getModulo(closestIndex - i, length)];
        }
    }
Beispiel #15
0
        public static bool HasProperty(ShapeClass shapeClass, string name)
        {
            if (shapeClass == null)
            {
                return(false);
            }

            ShapeClass d = shapeClass;

            while (d != null)
            {
                foreach (DomainProperty p in d.Properties)
                {
                    if (p.Name == name)
                    {
                        return(true);
                    }
                }

                d = d.BaseShape;
            }

            return(false);
        }
Beispiel #16
0
        public static ShapeClass Classify(ClassifiedShape shape, List <ClassifiedShape> features)
        {
            Debug.WriteLine(shape.ToString());
            ShapeClass      result        = ShapeClass.Cirle;
            ClassifiedShape circleFeature = features.Find(item => item.shapeClass == ShapeClass.Cirle);

            if (shape.Pch2Ach <= circleFeature.Pch2Ach)
            {
                result = ShapeClass.Cirle;
            }
            else
            {
                ClassifiedShape triangleFeature = features.Find(item => item.shapeClass == ShapeClass.Triangle);
                if (shape.AltAch >= triangleFeature.AltAch)
                {
                    result = ShapeClass.Triangle;
                }
                else
                {
                    ClassifiedShape rectangleFeature = features.Find(item => item.shapeClass == ShapeClass.Rectangle);
                    if (shape.PchPer >= rectangleFeature.PchPer)
                    {
                        result = ShapeClass.Rectangle;
                    }
                    else
                    {
                        ClassifiedShape ellipseFeature = features.Find(item => item.shapeClass == ShapeClass.Ellipse);
                        if (ellipseFeature.AchAerAlt <= ellipseFeature.AchAerAlt)
                        {
                            result = ShapeClass.Ellipse;
                        }
                    }
                }
            }
            return(result);
        }
    public ShapeClass GetTriodShape(int triodId)
    {
        ShapeClass tempreturn = new ShapeClass();
        Mesh mesh = triods[triodId - 1].GetComponent<MeshFilter>().mesh;
        Vector3[] vertices = mesh.vertices;

        int[] triodVertices = new int[triod01Vertices.Length];
        if(triodId == 1)
        {
            triodVertices = triod01Vertices;
        }
        else if(triodId == 2)
        {
            triodVertices = triod02Vertices;
        }
        else if (triodId == 3)
        {
            triodVertices = triod03Vertices;
        }
        else if (triodId == 4)
        {
            triodVertices = triod04Vertices;
        }
        tempreturn.length = triod01Vertices.Length;
        tempreturn.points = new Vector3[triod01Vertices.Length];
        for (int i = 0; i < triodVertices.Length; i++)
        {
            tempreturn.points[i] = vertices[triodVertices[i]];
        }

        return tempreturn;
    }
        public void GenerateDiagramItemViewModel(MetaModel dm, DiagramClass diagramClass)
        {
        #line default
        #line hidden

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


        #line default
        #line hidden

        #line 26 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\DiagramItemViewModelGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(dm.Namespace));


        #line default
        #line hidden

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


        #line default
        #line hidden

        #line 28 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\DiagramItemViewModelGenerator.tt"

            foreach (PresentationElementClass presentationElement in diagramClass.PresentationElements)
            {
                string baseClass    = "DslEditorViewDiagrams::DiagramItemElementViewModel";
                bool   hasBaseClass = false;
                if (!(presentationElement is ShapeClass))
                {
                    continue;
                }
                else if (presentationElement is ShapeClass)
                {
                    if ((presentationElement as ShapeClass).BaseShape != null)
                    {
                        baseClass    = (presentationElement as ShapeClass).BaseShape.GetMetaModel().Namespace + ".ViewModel." + (presentationElement as ShapeClass).BaseShape.Name + "DiagramItemViewModel";
                        hasBaseClass = true;
                    }
                }

                ShapeClass shapeClassElement = presentationElement as ShapeClass;

                bool canHaveNestedChildren   = false;
                bool canHaveRelativeChildren = false;
                foreach (PresentationElementClass element in diagramClass.PresentationElements)
                {
                    if (element is ShapeClass)
                    {
                        ShapeClass  shapeClass  = element as ShapeClass;
                        DomainClass domainClass = shapeClass.DomainClass;

                        if (domainClass == null)
                        {
                            continue;
                        }


                        if (shapeClass.Parent == presentationElement)
                        {
                            if (shapeClass.IsRelativeChild)
                            {
                                canHaveRelativeChildren = true;
                            }
                            else
                            {
                                canHaveNestedChildren = true;
                            }
                        }
                    }
                }



        #line default
        #line hidden

        #line 70 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\DiagramItemViewModelGenerator.tt"
                this.Write("\t/// <summary>\r\n    /// View model for ");


        #line default
        #line hidden

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


        #line default
        #line hidden

        #line 72 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\DiagramItemViewModelGenerator.tt"
                this.Write(".\r\n\t///\r\n\t/// Double-derived class to allow easier code customization.\r\n    /// <" +
                           "/summary>\r\n\tpublic partial class ");


        #line default
        #line hidden

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


        #line default
        #line hidden

        #line 76 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\DiagramItemViewModelGenerator.tt"
                this.Write("DiagramItemViewModel : ");


        #line default
        #line hidden

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


        #line default
        #line hidden

        #line 76 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\DiagramItemViewModelGenerator.tt"
                this.Write(@"DiagramItemViewModelBase
	{
		#region Constructor
		/// <summary>
        /// Constuctor.
        /// </summary>
        /// <param name=""viewModelStore"">The store this view model belongs to.</param>
        /// <param name=""diagram"">The Diagram this item belongs to.</param>
        /// <param name=""shapeElement"">Model element, that is hosted by this view model.</param>
        public ");


        #line default
        #line hidden

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


        #line default
        #line hidden

        #line 85 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\DiagramItemViewModelGenerator.tt"
                this.Write(@"DiagramItemViewModel(DslEditorViewModelData::ViewModelStore viewModelStore, DslEditorViewDiagrams::DiagramSurfaceViewModel diagram, DslEditorDiagrams::NodeShape shapeElement)
            : base(viewModelStore, diagram, shapeElement)
        {
        }
		#endregion
	}

	/// <summary>
    /// View model for ");


        #line default
        #line hidden

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


        #line default
        #line hidden

        #line 93 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\DiagramItemViewModelGenerator.tt"
                this.Write(".\r\n\t///\r\n\t/// This is the abstract base class.\r\n    /// </summary>\r\n\tpublic parti" +
                           "al class ");


        #line default
        #line hidden

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


        #line default
        #line hidden

        #line 97 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\DiagramItemViewModelGenerator.tt"
                this.Write("DiagramItemViewModelBase : ");


        #line default
        #line hidden

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


        #line default
        #line hidden

        #line 97 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\DiagramItemViewModelGenerator.tt"
                this.Write(@"
	{
		#region Constructor
		/// <summary>
        /// Constuctor.
        /// </summary>
        /// <param name=""viewModelStore"">The store this view model belongs to.</param>
        /// <param name=""diagram"">The Diagram this item belongs to.</param>
        /// <param name=""shapeElement"">Model element, that is hosted by this view model.</param>
        protected ");


        #line default
        #line hidden

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


        #line default
        #line hidden

        #line 106 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\DiagramItemViewModelGenerator.tt"
                this.Write(@"DiagramItemViewModelBase(DslEditorViewModelData::ViewModelStore viewModelStore, DslEditorViewDiagrams::DiagramSurfaceViewModel diagram, DslEditorDiagrams::NodeShape shapeElement)
            : base(viewModelStore, diagram, shapeElement)
        {
        }
		#endregion
		
		#region Methods
        /// <summary>
        /// Gets whether this view model can have nested children or not.
        /// </summary>
        public override bool CanHaveNestedChildren 
		{ 
			get
			{
");


        #line default
        #line hidden

        #line 120 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\DiagramItemViewModelGenerator.tt"

                if (hasBaseClass)
                {
        #line default
        #line hidden

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


        #line default
        #line hidden

        #line 127 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\DiagramItemViewModelGenerator.tt"
                }


        #line default
        #line hidden

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


        #line default
        #line hidden

        #line 130 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\DiagramItemViewModelGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(canHaveNestedChildren.ToString().ToLower()));


        #line default
        #line hidden

        #line 130 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\DiagramItemViewModelGenerator.tt"
                this.Write(";\r\n\t\t\t}\r\n\t\t}\r\n\r\n        /// <summary>\r\n        /// Gets whether this view model c" +
                           "an have relative children or not.\r\n        /// </summary>\r\n        public overri" +
                           "de bool CanHaveRelativeChildren\r\n\t\t{ \r\n\t\t\tget\r\n\t\t\t{\r\n");


        #line default
        #line hidden

        #line 141 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\DiagramItemViewModelGenerator.tt"

                if (hasBaseClass)
                {
        #line default
        #line hidden

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


        #line default
        #line hidden

        #line 148 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\DiagramItemViewModelGenerator.tt"
                }


        #line default
        #line hidden

        #line 150 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\DiagramItemViewModelGenerator.tt"
                this.Write("\t\t\t\r\n\t\t\t\treturn ");


        #line default
        #line hidden

        #line 151 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\DiagramItemViewModelGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(canHaveRelativeChildren.ToString().ToLower()));


        #line default
        #line hidden

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


        #line default
        #line hidden

        #line 157 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\DiagramItemViewModelGenerator.tt"

                if (shapeClassElement.Parent == null)
                {
        #line default
        #line hidden

        #line 160 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\DiagramItemViewModelGenerator.tt"
                    this.Write(@"		#region Properties
        /// <summary>
        /// False if this item view model is directly hosted on the diagram surface and its shape can be deleted
        /// whithout the hosted model element beeing required to be deleted as well. True otherwise.
        /// </summary>
        /// <remarks>
		/// Items need to delete their hosted element if they are themselves not directly hosted
		/// on the diagram's surface.
		/// </remarks>
        public override bool AutomaticallyDeletesHostedElement 
        {
            get
            {

				return false;
            }
        }		
		#endregion
		
");


        #line default
        #line hidden

        #line 180 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\DiagramItemViewModelGenerator.tt"
                }

                if (shapeClassElement.GeneratePropertiesVM)
                {
                    this.PushIndent("\t\t");
                    this.Write(DiagramGeneratorHelper.Instance.CreatePropertyHandlers(presentationElement, (presentationElement as PresentationDomainClassElement).DomainClass, hasBaseClass));
                    this.PopIndent();
                }


        #line default
        #line hidden

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


        #line default
        #line hidden

        #line 192 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\DiagramItemViewModelGenerator.tt"
            }


        #line default
        #line hidden

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


        #line default
        #line hidden

        #line 196 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\DiagramItemViewModelGenerator.tt"
        }
    void FormTheBridgeShape()
    {
        startVerticesCoordinates = ((GameObject)vertexStart).GetComponent<VertexController>().GetTriodVerticesArray(triodStart);//local coordinates of triods vertices
        endVerticesCoordinates = ((GameObject)vertexEnd).GetComponent<VertexController>().GetTriodVerticesArray(triodEnd);
        startShape = ((GameObject)vertexStart).GetComponent<VertexController>().GetTriodShape(triodStart);//in the local coordinates of the vertex
        endShape = ((GameObject)vertexEnd).GetComponent<VertexController>().GetTriodShape(triodEnd);
        ShapeClass originalEndShape = ((GameObject)vertexEnd).GetComponent<VertexController>().GetTriodShape(triodEnd);

        UpdateLineRendererPositions();

        //------------------------------
        //------------------------------
        //generate shapes fo the bridge
        ShapeClass profile = new ShapeClass();
        profile.CopyFrom(startShape);
        bridgeShapes = new List<ShapeClass>();
        startQ = localStartTriodTransfom.rotation;
        endQ = localEndTriodTransform.rotation;
        Quaternion originalEndQ = endQ;

        Matrix4x4 eM = Matrix4x4.TRS(new Vector3(), endQ * GetTwistQuaternion(), new Vector3(-1, -1, 1));
        endQ = QuaternionFromMatrix(eM);
        endQ = MultiplyByScalar(endQ, 1f / GetQuaternionLength(endQ));

        if(vertexStart == vertexEnd && !isNew)
        {
            middlePointDistance = middlePointDistanceSelfe;
        }
        isNew = true;

        startMatrix = Matrix4x4.TRS(localStartTriodTransfom.position, startQ, new Vector3(1, 1, 1));
        endMatrix = Matrix4x4.TRS(localEndTriodTransform.position, endQ, new Vector3(1, 1, 1));
        Matrix4x4 orignalEndMatrix = Matrix4x4.TRS(localEndTriodTransform.position, originalEndQ * GetTwistQuaternion(), new Vector3(1, 1, 1));
        originalEndShape.MapsTo(orignalEndMatrix);

        startShape.MapsTo(startMatrix);
        endShape.MapsTo(endMatrix);

        bridgeShapes.Add(startShape);

        Quaternion currentRotation = startQ;

        List<ShapeClass> firstPassShapes = new List<ShapeClass>();
        firstPassShapes.Add(startShape);
        for (int i = 1; i <= segmentsCount; i++)
        {
            Quaternion middleQ = currentRotation;
            Matrix4x4 middleMatrix = Matrix4x4.TRS(knotPositions[i], middleQ, new Vector3(1, 1, 1));
            Quaternion delta;
            if (i < segmentsCount)
            {
                delta = Quaternion.FromToRotation(middleMatrix.GetColumn(1), (knotPositions[i + 1] - knotPositions[i - 1]).normalized);
            }
            else
            {
                delta = Quaternion.FromToRotation(middleMatrix.GetColumn(1), (knotPositions[i] - knotPositions[i - 1]).normalized);
            }
            middleQ = delta * middleQ;
            middleMatrix = Matrix4x4.TRS(knotPositions[i], middleQ, new Vector3(1, 1, 1));
            Quaternion twistRotation = Quaternion.AngleAxis(GetTwistAngle() / (float)segmentsCount, middleMatrix.GetColumn(1));
            middleQ = twistRotation * middleQ;
            middleMatrix = Matrix4x4.TRS(knotPositions[i], middleQ, new Vector3(1, 1, 1));
            ShapeClass middleShape = new ShapeClass();
            middleShape.CopyFrom(profile);
            middleShape.MapsTo(middleMatrix);

            firstPassShapes.Add(middleShape);

            currentRotation = middleQ;
        }
        //find angle between end shape and target shape
        float errorAngle = ShapeClass.GetAngleBetween(firstPassShapes[firstPassShapes.Count - 1], originalEndShape);
        //print(errorAngle);
        //bridgeShapesTemp = firstPassShapes;

        currentRotation = startQ;

        //form the bridge shapes
        for (int i = 1; i <= segmentsCount; i++ )
        {
            Quaternion middleQ = currentRotation;
            Matrix4x4 middleMatrix = Matrix4x4.TRS(knotPositions[i], middleQ, new Vector3(1, 1, 1));
            Quaternion delta;
            if(i < segmentsCount)
            {
                delta = Quaternion.FromToRotation(middleMatrix.GetColumn(1), (knotPositions[i + 1] - knotPositions[i - 1]).normalized);
            }
            else
            {
                delta = Quaternion.FromToRotation(middleMatrix.GetColumn(1), (knotPositions[i] - knotPositions[i - 1]).normalized);
            }
            middleQ = delta * middleQ;
            middleMatrix = Matrix4x4.TRS(knotPositions[i], middleQ, new Vector3(1, 1, 1));
            //Quaternion twistRotation = Quaternion.AngleAxis((GetTwistAngle() / (float)segmentsCount) + (errorAngle / (float)segmentsCount), middleMatrix.GetColumn(1));
            Quaternion twistRotation = Quaternion.AngleAxis(AnglePiClamp(GetTwistAngle() + errorAngle) / (float)segmentsCount, middleMatrix.GetColumn(1));
            middleQ = twistRotation * middleQ;
            middleMatrix = Matrix4x4.TRS(knotPositions[i], middleQ, new Vector3(1, 1, 1));
            ShapeClass middleShape = new ShapeClass();
            middleShape.CopyFrom(profile);
            middleShape.MapsTo(middleMatrix);

            if(i < segmentsCount)
            {
                bridgeShapes.Add(middleShape);
            }
            else
            {
                ShapeClass tsh = new ShapeClass();
                tsh.CopyFrom(middleShape);
                tsh.MatchTo(originalEndShape);

                //and match to vertices of the Vertex
                tsh.WeldToMesh(endVerticesCoordinates, localEndTriodTransform);

                bridgeShapes.Add(tsh);
            }

            currentRotation = middleQ;
        }
    }
        public override string TransformText()
        {
            this.GenerationEnvironment = null;
            this.Write(" \r\n");
            this.Write("using DslModeling = global::Microsoft.VisualStudio.Modeling;\r\nusing DslEditorDiag" +
                       "rams = global::Tum.PDE.ToolFramework.Modeling.Diagrams;\r\n\r\n");

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

            List <DomainClass>        ruleOnElementsAdd    = new List <DomainClass>();
            List <DomainRelationship> ruleOnLinksChange    = new List <DomainRelationship>();
            List <DomainClass>        ruleOnElementsDelete = new List <DomainClass>();

            foreach (DiagramClass diagram in this.MetaModel.AllDiagramClasses)
            {
                foreach (PresentationElementClass element in diagram.PresentationElements)
                {
                    if (element is ShapeClass)
                    {
                        ShapeClass  shapeClass  = element as ShapeClass;
                        DomainClass domainClass = shapeClass.DomainClass;

                        if (domainClass == null)
                        {
                            continue;
                        }

                        if (!diagram.IsCustom)
                        {
                            if (!ruleOnElementsAdd.Contains(domainClass))
                            {
                                ruleOnElementsAdd.Add(domainClass);
                            }

                            /*
                             * if (diagram.VisualizationBehavior != DiagramVisualizationBehavior.Extended)
                             * {
                             *      if( !ruleOnElementsAdd.Contains(domainClass) )
                             *              ruleOnElementsAdd.Add(domainClass);
                             * }
                             * else if( shapeClass.Parent != null )
                             * {
                             *      if( !ruleOnElementsAdd.Contains(domainClass) )
                             *              ruleOnElementsAdd.Add(domainClass);
                             * }
                             */
                        }

                        if (!ruleOnElementsDelete.Contains(domainClass))
                        {
                            ruleOnElementsDelete.Add(domainClass);
                        }
                    }
                }
            }

            foreach (DomainClass d in ruleOnElementsAdd)
            {
                foreach (DomainRole rolesPlayed in d.RolesPlayed)
                {
                    if (rolesPlayed.Relationship.Target == rolesPlayed &&
                        rolesPlayed.Relationship is EmbeddingRelationship &&
                        rolesPlayed.Relationship.InheritanceModifier != InheritanceModifier.Abstract)
                    {
                        if (!ruleOnLinksChange.Contains(rolesPlayed.Relationship))
                        {
                            ruleOnLinksChange.Add(rolesPlayed.Relationship);
                        }
                    }
                }
            }
            MetaModel dm = this.MetaModel;


            #line default
            #line hidden
            this.Write("namespace ");

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

            #line default
            #line hidden
            this.Write("\r\n{\r\n");

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

            if (CodeGenerationUtilities.NeedsShapeAddRule(dm))
            {
            #line default
            #line hidden
                this.Write("\t/// <summary>\r\n    /// This AddRule is for monitoring element creation that we n" +
                           "eed to reflect\r\n\t/// onto the diagram surface by creating its specified shape cl" +
                           "ass.\r\n    /// </summary>\r\n");

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

                foreach (AttributedDomainElement domainElement in ruleOnElementsAdd)
                {
            #line default
            #line hidden
                    this.Write("\t[DslModeling::RuleOn(typeof(");

            #line 82 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DiagramsRulesGenerator.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(domainElement.GetFullName(true)));

            #line default
            #line hidden
                    this.Write("), FireTime = DslModeling::TimeToFire.LocalCommit)]\r\n");

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


            #line default
            #line hidden
                this.Write("    public partial class ");

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

            #line default
            #line hidden
                this.Write("ElementForShapesAdded : DslEditorDiagrams::ModelLinkAddRuleForShapes\r\n    {\r\n\t\t//" +
                           "/ <summary>\r\n        /// Constructor.\r\n        /// </summary>\r\n\t\tpublic ");

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

            #line default
            #line hidden
                this.Write("ElementForShapesAdded() \r\n\t\t\t: base(");

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

            #line default
            #line hidden
                this.Write("ElementForShapesFactoryHelper.Instance)\r\n\t\t{\r\n\t\t}\r\n\t\t\r\n\t\t/// <summary>\r\n        /" +
                           "// Helper class for model element creation.\r\n        /// </summary>\r\n        pub" +
                           "lic partial class ");

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

            #line default
            #line hidden
                this.Write("ElementForShapesFactoryHelper : DslEditorDiagrams::ModelLinkAddRuleForShapes.Shap" +
                           "esFactoryHelper\r\n        {\r\n\t\t\tprivate static ");

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

            #line default
            #line hidden
                this.Write("ElementForShapesFactoryHelper instanceHolder = null;\r\n\r\n    \t    /// <summary>\r\n " +
                           "   \t    /// Gets a singleton instance.\r\n    \t    /// </summary>\r\n    \t    public" +
                           " static ");

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

            #line default
            #line hidden
                this.Write("ElementForShapesFactoryHelper Instance\r\n    \t    {\r\n    \t        get\r\n    \t      " +
                           "  {\r\n    \t            if (instanceHolder == null)\r\n    \t                instance" +
                           "Holder = new ");

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

            #line default
            #line hidden
                this.Write(@"ElementForShapesFactoryHelper();

                    return instanceHolder;
                }
            }
		}
	}

    /// <summary>
    /// This RolePlayerChangeRule is for monitoring embedding relationship changes that we need to reflect
	/// onto the diagram surface by removing and recreating its specified shape class if necessary.
    /// </summary>	
");

            #line 123 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DiagramsRulesGenerator.tt"
            }
            if (CodeGenerationUtilities.NeedsShapeChangeRule(dm))
            {
                foreach (AttributedDomainElement domainElement in ruleOnLinksChange)
                {
            #line default
            #line hidden
                    this.Write("\t[DslModeling::RuleOn(typeof(");

            #line 131 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DiagramsRulesGenerator.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(domainElement.GetFullName(true)));

            #line default
            #line hidden
                    this.Write("), FireTime = DslModeling::TimeToFire.LocalCommit)]\r\n");

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


            #line default
            #line hidden
                this.Write("    public partial class ");

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

            #line default
            #line hidden
                this.Write("ElementForShapesChanged : DslEditorDiagrams::ModelLinkRolePlayerChangeRuleForShap" +
                           "es\r\n    {\r\n\t\t/// <summary>\r\n        /// Constructor.\r\n        /// </summary>\r\n\t\t" +
                           "public ");

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

            #line default
            #line hidden
                this.Write("ElementForShapesChanged() \r\n\t\t\t: base(");

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

            #line default
            #line hidden
                this.Write("RolePlayerChangeHelper.Instance)\r\n\t\t{\r\n\t\t}\t\r\n\t\t\r\n\t\t/// <summary>\r\n        /// Hel" +
                           "per class for model element creation.\r\n        /// </summary>\r\n        public pa" +
                           "rtial class ");

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

            #line default
            #line hidden
                this.Write("RolePlayerChangeHelper : DslEditorDiagrams::ModelLinkRolePlayerChangeRuleForShape" +
                           "s.RolePlayerChangeHelper\r\n        {\r\n\t\t\tprivate static ");

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

            #line default
            #line hidden
                this.Write("RolePlayerChangeHelper instanceHolder = null;\r\n\r\n    \t    /// <summary>\r\n    \t   " +
                           " /// Gets a singleton instance.\r\n    \t    /// </summary>\r\n    \t    public static" +
                           " ");

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

            #line default
            #line hidden
                this.Write("RolePlayerChangeHelper Instance\r\n    \t    {\r\n    \t        get\r\n    \t        {\r\n  " +
                           "  \t            if (instanceHolder == null)\r\n    \t                instanceHolder " +
                           "= new ");

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

            #line default
            #line hidden
                this.Write("RolePlayerChangeHelper();\r\n\r\n    \t            return instanceHolder;\r\n    \t      " +
                           "  }\r\n    \t    }\r\n\t\t\r\n\t\t\t/// <summary>\r\n        \t/// Constructor.\r\n        \t/// <" +
                           "/summary>\r\n\t\t\tpublic ");

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

            #line default
            #line hidden
                this.Write("RolePlayerChangeHelper() \r\n\t\t\t\t: base(");

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

            #line default
            #line hidden
                this.Write("ElementForShapesAdded.");

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

            #line default
            #line hidden
                this.Write("ElementForShapesFactoryHelper.Instance,\r\n\t\t\t\t\t   ");

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

            #line default
            #line hidden
                this.Write("ElementForShapesDeleted.");

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

            #line default
            #line hidden
                this.Write("ShapeDeletionHelper.Instance)\t\t\r\n\t\t\t{\r\n\t\t\t}\r\n\t\t}\t\t\r\n\t}\t\r\n");

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

            if (CodeGenerationUtilities.NeedsShapeDeleteRule(dm))
            {
            #line default
            #line hidden
                this.Write("\r\n\t/// <summary>\r\n    /// This DeleteRule is for monitoring element deletin that " +
                           "we need to reflect\r\n\t/// onto the diagram surface by creating its specified shap" +
                           "e class.\r\n    /// </summary>\r\n");

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

                foreach (AttributedDomainElement domainElement in ruleOnElementsDelete)
                {
            #line default
            #line hidden
                    this.Write("\t[DslModeling::RuleOn(typeof(");

            #line 191 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DiagramsRulesGenerator.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(domainElement.GetFullName(true)));

            #line default
            #line hidden
                    this.Write("), FireTime = DslModeling::TimeToFire.LocalCommit)]\r\n");

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


            #line default
            #line hidden
                this.Write("    public partial class ");

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

            #line default
            #line hidden
                this.Write("ElementForShapesDeleted : DslEditorDiagrams::ModelElementDeletingRuleForShapes\r\n " +
                           "   {\r\n\t\t/// <summary>\r\n        /// Constructor.\r\n        /// </summary>\r\n\t\tpubli" +
                           "c ");

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

            #line default
            #line hidden
                this.Write("ElementForShapesDeleted() \r\n\t\t\t: base(");

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

            #line default
            #line hidden
                this.Write("ShapeDeletionHelper.Instance)\r\n\t\t{\r\n\t\t}\r\n\t\t\r\n\t\t/// <summary>\r\n        /// Helper " +
                           "class for model element creation.\r\n        /// </summary>\r\n        public partia" +
                           "l class ");

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

            #line default
            #line hidden
                this.Write("ShapeDeletionHelper : DslEditorDiagrams::ModelElementDeletingRuleForShapes.ShapeD" +
                           "eletionHelper\r\n        {\r\n\t\t\tprivate static ");

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

            #line default
            #line hidden
                this.Write("ShapeDeletionHelper instanceHolder = null;\r\n\r\n    \t    /// <summary>\r\n    \t    //" +
                           "/ Gets a singleton instance.\r\n    \t    /// </summary>\r\n    \t    public static ");

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

            #line default
            #line hidden
                this.Write("ShapeDeletionHelper Instance\r\n    \t    {\r\n    \t        get\r\n    \t        {\r\n    \t" +
                           "            if (instanceHolder == null)\r\n    \t                instanceHolder = n" +
                           "ew ");

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

            #line default
            #line hidden
                this.Write("ShapeDeletionHelper();\r\n\r\n    \t            return instanceHolder;\r\n    \t        }" +
                           "\r\n    \t    }\r\n\t\t}\r\n\t}\r\n");

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



            #line default
            #line hidden
            this.Write("}");
            return(this.GenerationEnvironment.ToString());
        }
Beispiel #21
0
        private void SetupInitialValues(PresentationElementClass presentationClass)
        {
            if (presentationClass is ShapeClass)
            {
                ShapeClass shapeClass = presentationClass as ShapeClass;


        #line default
        #line hidden

        #line 397 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                this.Write(@"	bool bHandledSize = false;
	bool bHandledLocation = false;
	bool bHandledAbsoluteLocation = false;
	
	if( propertyAssignments != null )
		foreach(DslModeling::PropertyAssignment propertyAssignment in propertyAssignments )
		{
			if( propertyAssignment.PropertyId == DslEditorDiagrams::NodeShape.SizeDomainPropertyId)
				bHandledSize = true;
			else if( propertyAssignment.PropertyId == DslEditorDiagrams::NodeShape.LocationDomainPropertyId)
				bHandledLocation = true;
			else if( propertyAssignment.PropertyId == DslEditorDiagrams::NodeShape.AbsoluteLocationDomainPropertyId)
				bHandledAbsoluteLocation = true;
		}
	
	if( !bHandledSize )
		this.Size = new DslEditorDiagrams::SizeD("        );


        #line default
        #line hidden

        #line 414 "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 414 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                this.Write(", ");


        #line default
        #line hidden

        #line 414 "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 414 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
                this.Write(");\r\n\tif( !bHandledLocation )\r\n\t\tthis.Location = DslEditorDiagrams::PointD.Empty;\r" +
                           "\n\tif( !bHandledAbsoluteLocation )\r\n\t\tthis.AbsoluteLocation = DslEditorDiagrams::" +
                           "PointD.Empty;\r\n");


        #line default
        #line hidden

        #line 419 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ShapesGenerator.tt"
            }
        }
 /// <summary>
 /// Compares two shape classes by comparing their names.
 /// </summary>
 /// <param name="x">ShapeClass to be compared.</param>
 /// <param name="y">ShapeClass to be compared.</param>
 /// <returns>Int from Compare.To</returns>
 private static int CompareShapeClassesByName(ShapeClass x, ShapeClass y)
 {
     return x.Name.CompareTo(y.Name);
 }
Beispiel #23
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. This view model constructed with 'bHookUpEvents=true' does react on model changes.
 /// </summary>
 /// <param name="viewModelStore">The store this view model belongs to.</param>
 /// <param name="element">Element represented by this view model.</param>
 public ShapeClassSelectableViewModel(ViewModelStore viewModelStore, ShapeClass element)
     : base(viewModelStore, element)
 {
     this.shapeClass = element;
 }
 /// <summary>
 /// Constructor. This view model constructed with 'bHookUpEvents=true' does react on model changes.
 /// </summary>
 /// <param name="viewModelStore">The store this view model belongs to.</param>
 /// <param name="element">Element represented by this view model.</param>
 public ShapeClassSelectableViewModel(ViewModelStore viewModelStore, ShapeClass element)
     : base(viewModelStore, element)
 {
     this.shapeClass = element;
 }
Beispiel #26
0
        public void ImportFromBinaryReader(ShapeType shapeType, BinaryReader br)
        {
            try
            {
                long streamLength = br.BaseStream.Length;
                RecordNumber  = NumericsHelper.ReverseInt(br.ReadInt32());                // Big, Reverse for actual value
                ContentLength = NumericsHelper.ReverseInt(br.ReadInt32());                // Big, Reverse for actual value
                ShapeType     = (ShapeType)br.ReadInt32();

                if (ShapeType == ShapeType.Null ||
                    shapeType == ShapeType.Null)
                {
                    return;
                }

                if (ShapeType != shapeType)
                {
                    // Shape Type doesn't match type specified in file header. According to specs, this is invalid. Throw exception
                    throw new Exception(
                              $"Unable to process shape! File shape of {shapeType} does not match record shape of {ShapeType} which violates ESRI specifications for shape files!");
                }

                ShapeClass shapeClass        = ShapeClass.Coordinate;
                bool       hasMultiplePoints = true;
                bool       hasParts          = true;
                bool       hasPartTypes      = false;

                switch (shapeType)
                {
                case ShapeType.MultiPatch:
                    shapeClass   = ShapeClass.Depth;
                    hasPartTypes = true;
                    break;

                case ShapeType.MultiPoint:
                    hasParts = false;
                    break;

                case ShapeType.MultiPointM:
                    shapeClass = ShapeClass.Measurement;
                    hasParts   = false;
                    break;

                case ShapeType.MultiPointZ:
                    shapeClass = ShapeClass.Depth;
                    hasParts   = false;
                    break;

                case ShapeType.Null:
                    throw new Exception(
                              "The application should have never gotten to this point.\r\nSomething is wrong with the code!\r\nLYNCH THE DEVELOPER!");

                case ShapeType.Point:
                    hasMultiplePoints = false;
                    hasParts          = false;
                    break;

                case ShapeType.PointM:
                    shapeClass        = ShapeClass.Measurement;
                    hasMultiplePoints = false;
                    hasParts          = false;
                    break;

                case ShapeType.PointZ:
                    shapeClass        = ShapeClass.Depth;
                    hasMultiplePoints = false;
                    hasParts          = false;
                    break;

                case ShapeType.Polygon:
                case ShapeType.Polyline:
                    break;

                case ShapeType.PolygonM:
                    shapeClass = ShapeClass.Measurement;
                    break;

                case ShapeType.PolygonZ:
                    shapeClass = ShapeClass.Depth;
                    break;

                case ShapeType.PolylineM:
                    shapeClass = ShapeClass.Measurement;
                    break;

                case ShapeType.PolylineZ:
                    shapeClass = ShapeClass.Depth;
                    break;

                default:
                    throw new Exception($"Unable to process shape! Record Shape of {ShapeType} is unknown!");
                }

                if (hasMultiplePoints)
                {
                    XMin = br.ReadDouble();
                    YMin = br.ReadDouble();
                    XMax = br.ReadDouble();
                    YMax = br.ReadDouble();
                }

                NumberOfParts  = hasParts ? br.ReadInt32() : 1;
                NumberOfPoints = hasMultiplePoints ? br.ReadInt32() : 1;

                //Console.Write(StringHelper.GetProgressString(br.BaseStream.Position, streamLength, "Shape"));

                List <Part> parts = new List <Part>();

                for (int i = 0; i < NumberOfParts; i++)                 // Grab the parts
                {
                    Part part = new Part
                    {
                        ShapeId    = Id,
                        SortIndex  = i,
                        PartTypeId = -1,                           // TODO: Find out what the appropriate part types are (if necessary)
                        StartIndex = hasParts ? br.ReadInt32() : 0 // Get the start index
                    };

                    parts.Add(part);

                    if (i > 0)                     // If this isn't the first element
                    {
                        parts[i - 1].EndIndex = parts[i].StartIndex - 1;
                    }
                    // Set the last element's end index to this element's start index minus one

                    if (i + 1 == NumberOfParts)                     // If this is the last element
                    {
                        parts[i].EndIndex = NumberOfPoints - 1;
                    }
                    // Set the ending index to the number of points minus one (to account for 0 based index)

                    //Console.Write(StringHelper.GetProgressString(br.BaseStream.Position, streamLength, $"Part {i}"));
                }

                for (int i = 0; i < NumberOfParts; i++)
                // Set the number of points. This is done after initial grab to account for first/last elements
                {
                    if (hasParts && hasPartTypes)
                    {
                        parts[i].PartTypeId = br.ReadInt32();
                    }

                    parts[i].NumberOfPoints = parts[i].EndIndex - parts[i].StartIndex + 1;

                    //Console.Write(StringHelper.GetProgressString(br.BaseStream.Position, streamLength, $"Part {i}"));
                }

                for (int i = 0; i < NumberOfParts; i++)                 // For each part
                {
                    for (int j = 0; j < parts[i].NumberOfPoints; j++)   // For each point in each part
                    {
                        parts[i].Points.Add(new Point
                        {
                            SortIndex = j,
                            X         = br.ReadDouble(),
                            Y         = br.ReadDouble()
                        });                         // Grab the point
                        //Console.Write(StringHelper.GetProgressString(br.BaseStream.Position, streamLength, $"Part {i} | Point {j}"));
                    }
                }

                if (shapeClass == ShapeClass.Depth)
                {
                    if (hasMultiplePoints)
                    {
                        ZMin = br.ReadDouble();
                        ZMax = br.ReadDouble();
                    }

                    for (int i = 0; i < NumberOfParts; i++)
                    {
                        for (int j = 0; j < parts[i].NumberOfPoints; j++)
                        {
                            //Console.Write(StringHelper.GetProgressString(br.BaseStream.Position,
                            //	streamLength,
                            //	$"Part {i} | Point {j} | Setting Z Value"));
                            parts[i].Points.ToArray()[j].Z = br.ReadDouble();
                        }
                    }
                }

                if (shapeClass == ShapeClass.Depth
                    ||
                    shapeClass == ShapeClass.Measurement)
                {
                    if (hasMultiplePoints)
                    {
                        MMin = br.ReadDouble();
                        MMax = br.ReadDouble();
                    }

                    for (int i = 0; i < NumberOfParts; i++)
                    {
                        for (int j = 0; j < parts[i].NumberOfPoints; j++)
                        {
                            //Console.Write(StringHelper.GetProgressString(br.BaseStream.Position,
                            //	streamLength,
                            //	$"Part {i} | Point {j} | Setting M Value"));
                            parts[i].Points.ToArray()[j].M = br.ReadDouble();
                        }
                    }
                }

                try
                {
                    string wktTemplate   = "{0}({1})";
                    string shapeTypeName = ShapeType.ToString().ToUpperInvariant().Replace("POLYLINE", "MULTILINESTRING");
                    IReadOnlyCollection <string> coordinateStrings = parts.Select(s => s.CoordinateString).ToArray();

                    if (ShapeType == ShapeType.Point ||
                        ShapeType == ShapeType.PointZ ||
                        ShapeType == ShapeType.PointM)
                    {
                        coordinateStrings = coordinateStrings.Select(s => s.Trim('(').Trim(')').Trim()).ToArray();
                    }

                    string coordinateString = string.Join(",", coordinateStrings);
                    string wktString        = string.Format(wktTemplate, shapeTypeName, coordinateString);
                    //Debug.WriteLine(wktString);
                    Geometry = DbGeometry.FromText(wktString, SRID);
                }
                catch (Exception e)
                {
                    Console.WriteLine($"\r\n{e.Message}\r\n{e}");
                    throw;
                }
            }
            catch (Exception e)
            {
                Console.WriteLine($"\r\n{e.Message}\r\n{e}");
                throw;
            }
        }
Beispiel #27
0
        public void GenerateResourceDictionary(MetaModel dm)
        {
        #line default
        #line hidden

        #line 10 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
            this.Write("<ResourceDictionary xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentat" +
                       "ion\"\r\n                    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"" +
                       "\r\n                    xmlns:c=\"clr-namespace:");


        #line default
        #line hidden

        #line 13 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(dm.Namespace));


        #line default
        #line hidden

        #line 13 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
            this.Write(@".ViewModel""
					xmlns:view=""clr-namespace:Tum.PDE.ToolFramework.Modeling.Visualization.Controls;assembly=Tum.PDE.ToolFramework.Modeling.Visualization""
					xmlns:diagrams=""clr-namespace:Tum.PDE.ToolFramework.Modeling.Visualization.Controls.DiagramSurface;assembly=Tum.PDE.ToolFramework.Modeling.Visualization""
					xmlns:dependencies=""clr-namespace:Tum.PDE.ToolFramework.Modeling.Visualization.Controls.Dependencies;assembly=Tum.PDE.ToolFramework.Modeling.Visualization""
					xmlns:inter=""clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity""
                    xmlns:beh=""clr-namespace:Tum.PDE.ToolFramework.Modeling.Visualization.Behaviors;assembly=Tum.PDE.ToolFramework.Modeling.Visualization"">
<!--    
	This code was generated by a tool.
	
	Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.	
-->
	<ResourceDictionary.MergedDictionaries>
		<ResourceDictionary Source=""/Tum.PDE.ToolFramework.Modeling.Visualization;component/Themes/Generic.xaml""/>
");


        #line default
        #line hidden

        #line 26 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"



        #line default
        #line hidden

        #line 27 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
            this.Write("\t\r\n\t</ResourceDictionary.MergedDictionaries>\r\n");


        #line default
        #line hidden

        #line 29 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"

            if (this.MetaModel.View.CreateModelTree)
            {
        #line default
        #line hidden

        #line 32 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                this.Write("\r\n\t<!-- Model tree template -->\r\n    <DataTemplate DataType=\"{x:Type c:");


        #line default
        #line hidden

        #line 35 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));


        #line default
        #line hidden

        #line 35 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                this.Write("ModelTreeViewModel}\">\r\n        <view:ModelTreeControl x:Name=\"ModelTreeviewContro" +
                           "l\"/>\r\n    </DataTemplate>\r\n\r\n");


        #line default
        #line hidden

        #line 39 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
            }
            if (this.MetaModel.View.CreatePropertyGrid)
            {
        #line default
        #line hidden

        #line 43 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                this.Write("\r\n    <!-- Property grid template -->\r\n    <DataTemplate DataType=\"{x:Type c:");


        #line default
        #line hidden

        #line 46 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));


        #line default
        #line hidden

        #line 46 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                this.Write("PropertyGridViewModel}\">\r\n        <view:PropertyWindowControl x:Name=\"PropertyWin" +
                           "dow\"/>\r\n    </DataTemplate>\r\n");


        #line default
        #line hidden

        #line 49 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
            }
            if (this.MetaModel.View.CreateErrorList)
            {
        #line default
        #line hidden

        #line 53 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                this.Write("\r\n    <!-- Error list template -->\r\n    <DataTemplate DataType=\"{x:Type c:");


        #line default
        #line hidden

        #line 56 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));


        #line default
        #line hidden

        #line 56 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                this.Write("ErrorListViewModel}\">\r\n        <view:ErrorListControl x:Name=\"ErrorList\"/>\r\n    <" +
                           "/DataTemplate>\r\n");


        #line default
        #line hidden

        #line 59 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
            }
            if (this.MetaModel.View.CreateDependenciesView)
            {
        #line default
        #line hidden

        #line 63 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                this.Write("\r\n\t<!-- Depenendencies list template -->\r\n    <DataTemplate DataType=\"{x:Type c:");


        #line default
        #line hidden

        #line 66 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));


        #line default
        #line hidden

        #line 66 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                this.Write("DependenciesViewModel}\">\r\n        <view:DependenciesControl x:Name=\"DependenciesL" +
                           "ist\"/>\r\n    </DataTemplate>\t\r\n");


        #line default
        #line hidden

        #line 69 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
            }


        #line default
        #line hidden

        #line 71 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
            this.Write("\r\n\t<!-- Search template -->\r\n    <DataTemplate DataType=\"{x:Type c:");


        #line default
        #line hidden

        #line 74 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));


        #line default
        #line hidden

        #line 74 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
            this.Write("SearchViewModel}\">\r\n        <view:SearchWindowControl x:Name=\"SearchViewWnd\"/>\r\n " +
                       "   </DataTemplate>\t\r\n\t\r\n\t<!-- Search result template -->\r\n    <DataTemplate Data" +
                       "Type=\"{x:Type c:");


        #line default
        #line hidden

        #line 79 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));


        #line default
        #line hidden

        #line 79 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
            this.Write("SearchResultViewModel}\">\r\n        <view:SearchResultControl x:Name=\"SearchResultC" +
                       "trl\"/>\r\n    </DataTemplate>\t\r\n\t\r\n\t<!-- Diagram view models data templates -->\r\n");


        #line default
        #line hidden

        #line 84 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"

            foreach (DiagramClass diagramClass in dm.AllDiagramClasses)
            {
                if (diagramClass is SpecificDependencyDiagram)
                {
                    if ((diagramClass as SpecificDependencyDiagram).DomainClass != null)
                    {
        #line default
        #line hidden

        #line 92 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("\t<DataTemplate DataType=\"{x:Type c:");


        #line default
        #line hidden

        #line 93 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));


        #line default
        #line hidden

        #line 93 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(diagramClass.Name));


        #line default
        #line hidden

        #line 93 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("SurfaceViewModel}\">\r\n\t\t<dependencies:SpecificDependenciesViewControl/>\r\n    </Dat" +
                                   "aTemplate>\t\r\n");


        #line default
        #line hidden

        #line 96 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                    }
                }
                else if (diagramClass is DependencyDiagram)
                {
        #line default
        #line hidden

        #line 101 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                    this.Write("\t<DataTemplate DataType=\"{x:Type c:");


        #line default
        #line hidden

        #line 102 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));


        #line default
        #line hidden

        #line 102 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(diagramClass.Name));


        #line default
        #line hidden

        #line 102 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                    this.Write("SurfaceViewModel}\">\r\n\t\t<dependencies:GraphDependenciesViewControl/>\r\n    </DataTe" +
                               "mplate>\t\r\n");


        #line default
        #line hidden

        #line 105 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                }
                else
                {
                    if (diagramClass.IsCustom)
                    {
                        continue;
                    }


        #line default
        #line hidden

        #line 111 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                    this.Write("\t<DataTemplate DataType=\"{x:Type c:");


        #line default
        #line hidden

        #line 112 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));


        #line default
        #line hidden

        #line 112 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(diagramClass.Name));


        #line default
        #line hidden

        #line 112 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                    this.Write(@"SurfaceViewModel}"">
	    <ScrollViewer x:Name=""_tv_scrollviewer_"" Background=""White"" Focusable=""false"" HorizontalScrollBarVisibility=""Visible"" VerticalScrollBarVisibility=""Visible"">
            <diagrams:DiagramDesigner HorizontalAlignment=""Stretch"" VerticalAlignment=""Stretch"" Background=""White"" 
                                      ContextMenuOptions=""{Binding Path=MenuOptions, Mode=OneWay}"">
");


        #line default
        #line hidden

        #line 116 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"

                    if (this.EditorType == Tum.PDE.ToolFramework.Templates.GenerationEditorType.VSPlugin)
                    {
        #line default
        #line hidden

        #line 119 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("                <diagrams:DiagramDesigner.InputBindings>\r\n                    <Ke" +
                                   "yBinding Command=\"{Binding Path=DeleteCommand}\" Key=\"Delete\"/>\r\n                " +
                                   "</diagrams:DiagramDesigner.InputBindings>\r\n\r\n");


        #line default
        #line hidden

        #line 124 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                    }



        #line default
        #line hidden

        #line 127 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                    this.Write(@"				<diagrams:DiagramDesigner.ContextMenu>
					<ContextMenu ItemContainerStyleSelector=""{StaticResource ContextMenuItemStyleSelector}""/>
				</diagrams:DiagramDesigner.ContextMenu>
				<inter:Interaction.Behaviors>
                    <beh:FrameworkElementContextMenuBehavior/>
                </inter:Interaction.Behaviors>
			</diagrams:DiagramDesigner>
        </ScrollViewer>
    </DataTemplate>	
");


        #line default
        #line hidden

        #line 137 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                }
                foreach (PresentationElementClass p in diagramClass.PresentationElements)
                {
                    if (p is ShapeClass)
                    {
                        ShapeClass r = p as ShapeClass;
                        if (!r.IsAutoGenerated)
                        {
                            continue;
                        }

                        string bindingTextBlockName = "DomainElementName";
                        if ((p as ShapeClass).DomainClass != null)
                        {
                            if (CodeGenerationUtilities.GetNameProperty((p as ShapeClass).DomainClass) == null)
                            {
                                bindingTextBlockName = "DomainElementFullName";
                            }
                        }



        #line default
        #line hidden

        #line 154 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("\r\n    <!-- ");


        #line default
        #line hidden

        #line 156 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(r.Name));


        #line default
        #line hidden

        #line 156 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(" template -->\r\n    <DataTemplate DataType=\"{x:Type c:");


        #line default
        #line hidden

        #line 157 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(r.Name));


        #line default
        #line hidden

        #line 157 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("DiagramItemViewModel}\">\r\n        <Grid>\r\n            <Border Name=\"Bd\" Margin=\"0\"" +
                                   " BorderThickness=\"");


        #line default
        #line hidden

        #line 159 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(r.BorderThickness.ToString()));


        #line default
        #line hidden

        #line 159 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("\" Padding=\"0\" SnapsToDevicePixels=\"True\"  CornerRadius=\"");


        #line default
        #line hidden

        #line 159 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(r.BorderCornerRadius.ToString()));


        #line default
        #line hidden

        #line 159 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("\"\r\n\t\t\t\t\tBackground=\"");


        #line default
        #line hidden

        #line 160 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(System.Drawing.ColorTranslator.ToHtml(r.BackgroundBrush)));


        #line default
        #line hidden

        #line 160 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("\" BorderBrush=\"");


        #line default
        #line hidden

        #line 160 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(System.Drawing.ColorTranslator.ToHtml(r.BorderBrush)));


        #line default
        #line hidden

        #line 160 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("\"\r\n\t\t\t\t\tIsHitTestVisible=\"");


        #line default
        #line hidden

        #line 161 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(r.BorderIsHitTestVisible.ToString()));


        #line default
        #line hidden

        #line 161 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("\" Focusable=\"");


        #line default
        #line hidden

        #line 161 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(r.BorderFocusable.ToString()));


        #line default
        #line hidden

        #line 161 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("\">\r\n                <Border.Effect>\r\n                    <DropShadowEffect BlurRa" +
                                   "dius=\"");


        #line default
        #line hidden

        #line 163 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(r.BorderOuterSize.ToString()));


        #line default
        #line hidden

        #line 163 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("\" ShadowDepth=\"2\" Color=\"");


        #line default
        #line hidden

        #line 163 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(System.Drawing.ColorTranslator.ToHtml(r.BorderOuterBrush)));


        #line default
        #line hidden

        #line 163 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("\"/>\r\n                </Border.Effect>\r\n                <TextBlock Margin=\"3\" Grid" +
                                   ".Row=\"0\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Text=\"{Binding " +
                                   "Path=");


        #line default
        #line hidden

        #line 165 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(bindingTextBlockName));


        #line default
        #line hidden

        #line 165 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("}\" ToolTip=\"{Binding Path=");


        #line default
        #line hidden

        #line 165 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(bindingTextBlockName));


        #line default
        #line hidden

        #line 165 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("}\" TextTrimming=\"CharacterEllipsis\"/>\r\n            </Border>\r\n        </Grid>\r\n  " +
                                   "  </DataTemplate>\r\n");


        #line default
        #line hidden

        #line 169 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                    }
                    else if (p is RelationshipShapeClass)
                    {
                        RelationshipShapeClass r = p as RelationshipShapeClass;
                        if (!r.IsAutoGenerated)
                        {
                            continue;
                        }



        #line default
        #line hidden

        #line 177 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("\r\n    <!-- ");


        #line default
        #line hidden

        #line 179 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(r.Name));


        #line default
        #line hidden

        #line 179 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(" template -->\r\n    <Style x:Key=\"");


        #line default
        #line hidden

        #line 180 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(r.Name));


        #line default
        #line hidden

        #line 180 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("PathStyle\" TargetType=\"Path\">\r\n        <Setter Property=\"StrokeThickness\" Value=\"" +
                                   "");


        #line default
        #line hidden

        #line 181 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(r.StrokeThickness.ToString()));


        #line default
        #line hidden

        #line 181 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("\"/>\r\n        <Setter Property=\"Stroke\" Value=\"");


        #line default
        #line hidden

        #line 182 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(System.Drawing.ColorTranslator.ToHtml(r.Stroke)));


        #line default
        #line hidden

        #line 182 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("\"/>\r\n    </Style>\r\n    <DataTemplate DataType=\"{x:Type c:");


        #line default
        #line hidden

        #line 184 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(r.Name));


        #line default
        #line hidden

        #line 184 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("DiagramItemLinkViewModel}\">\r\n        <diagrams:DiagramDesignerItemLink StartAncho" +
                                   "rStyle=\"");


        #line default
        #line hidden

        #line 185 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(r.StartAnchorStyle.ToString()));


        #line default
        #line hidden

        #line 185 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("\" EndAnchorStyle=\"");


        #line default
        #line hidden

        #line 185 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(r.EndAnchorStyle.ToString()));


        #line default
        #line hidden

        #line 185 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("\" PathStyle=\"{StaticResource ");


        #line default
        #line hidden

        #line 185 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(r.Name));


        #line default
        #line hidden

        #line 185 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("PathStyle}\"/>\r\n    </DataTemplate>\r\n");


        #line default
        #line hidden

        #line 187 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                    }
                    else if (p is MappingRelationshipShapeClass)
                    {
                        MappingRelationshipShapeClass r = p as MappingRelationshipShapeClass;
                        if (!r.IsAutoGenerated)
                        {
                            continue;
                        }



        #line default
        #line hidden

        #line 195 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("\r\n    <!-- ");


        #line default
        #line hidden

        #line 197 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(r.Name));


        #line default
        #line hidden

        #line 197 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(" template -->\r\n    <Style x:Key=\"");


        #line default
        #line hidden

        #line 198 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(r.Name));


        #line default
        #line hidden

        #line 198 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("PathStyle\" TargetType=\"Path\">\r\n        <Setter Property=\"StrokeThickness\" Value=\"" +
                                   "");


        #line default
        #line hidden

        #line 199 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(r.StrokeThickness.ToString()));


        #line default
        #line hidden

        #line 199 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("\"/>\r\n        <Setter Property=\"Stroke\" Value=\"");


        #line default
        #line hidden

        #line 200 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(System.Drawing.ColorTranslator.ToHtml(r.Stroke)));


        #line default
        #line hidden

        #line 200 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("\"/>\r\n    </Style>\r\n    <DataTemplate DataType=\"{x:Type c:");


        #line default
        #line hidden

        #line 202 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(r.Name));


        #line default
        #line hidden

        #line 202 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("DiagramItemLinkViewModel}\">\r\n        <diagrams:DiagramDesignerItemLink StartAncho" +
                                   "rStyle=\"");


        #line default
        #line hidden

        #line 203 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(r.StartAnchorStyle.ToString()));


        #line default
        #line hidden

        #line 203 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("\" EndAnchorStyle=\"");


        #line default
        #line hidden

        #line 203 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(r.EndAnchorStyle.ToString()));


        #line default
        #line hidden

        #line 203 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("\" PathStyle=\"{StaticResource ");


        #line default
        #line hidden

        #line 203 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(r.Name));


        #line default
        #line hidden

        #line 203 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                        this.Write("PathStyle}\"/>\r\n    </DataTemplate>\r\n");


        #line default
        #line hidden

        #line 205 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
                    }
                }
            }


        #line default
        #line hidden

        #line 209 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
            this.Write("</ResourceDictionary>\r\n");


        #line default
        #line hidden

        #line 211 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\ViewModel\WPFApplication\ResourceDictionaryGenerator.tt"
        }