private void LoadCrowsFootNodes()
        {
            diagram.Behavior = Behavior.PanAndModify;

            shapeList.Items.Clear();

            shapeLibrary.LoadFromXml(@"../../CustomNodes/CustomLibrary/CrowsFootDb.sl");
            NodesFromLib();
            shapeList.SelectedIndex = 0;

            ShapeNode entityNode = shapeList.Items.GetItemAt(0) as ShapeNode;

            entityNode.Name = "entityNode";
            entityNode.Text = "";

            ShapeNode primaryKeyNode = shapeList.Items.GetItemAt(1) as ShapeNode;

            primaryKeyNode.Name = "primaryKeyNode";
            primaryKeyNode.Text = "";

            ShapeNode attributeNode = shapeList.Items.GetItemAt(2) as ShapeNode;

            attributeNode.Name = "attributeNode";
            attributeNode.Text = "";

            /*
             * ShapeNode pkSeparatorNode = shapeList.Items.GetItemAt(3) as ShapeNode;
             * pkSeparatorNode.Name = "primaryKeySeparatorNode";
             * attributeNode.Text = "";
             */

            // Primary key separator
            var primaryKeySeparatorShape = new MindFusion.Diagramming.Wpf.Shape(
                null, // no borders
                new[] // decorations
            {
                new LineTemplate(10, 50, 90, 50, Color.FromRgb(0, 0, 0), DashStyles.Dot, 1),
            },
                null,
                FillRule.Nonzero, "primaryKeySeparatorNode");

            var pkSeparatorListNode = new ShapeNode {
                Shape = primaryKeySeparatorShape
            };

            shapeList.Items.Add(pkSeparatorListNode);
            pkSeparatorListNode.Name = "primaryKeySeparatorNode";

            // remove the text from the nodes, add a label instead (text shows on right)
            NodeListView.SetLabel(entityNode, "Entity");
            NodeListView.SetLabel(primaryKeyNode, "Primary Key");
            NodeListView.SetLabel(pkSeparatorListNode, "Primary Key Separator");
            NodeListView.SetLabel(attributeNode, "Attribute");

            // Relationship connector
            var relationshipShape = new MindFusion.Diagramming.Wpf.Shape(
                null, // no borders
                new[] // decorations
            {
                new LineTemplate(10, 10, 10, 50),
                new LineTemplate(10, 50, 90, 50),
                new LineTemplate(90, 50, 90, 90)
            },
                null,
                FillRule.Nonzero, "RelationshipLink");

            var relationshipListNode = new ShapeNode {
                Shape = relationshipShape
            };

            NodeListView.SetLabel(relationshipListNode, "Relationship");
            shapeList.Items.Add(relationshipListNode);
        }
        private void LoadUmlNodes()
        {
            diagram.Behavior = Behavior.PanAndModify;

            shapeList.Items.Clear();

            shapeLibrary.LoadFromXml(@"../../CustomNodes/CustomLibrary/UMLClasses.sl");
            NodesFromLib();
            shapeList.SelectedIndex = 0;

            ShapeNode classNode = shapeList.Items.GetItemAt(0) as ShapeNode;

            classNode.Name = "classNode";
            classNode.Text = "";

            ShapeNode interfaceNode = shapeList.Items.GetItemAt(1) as ShapeNode;

            interfaceNode.Name = "interfaceNode";
            interfaceNode.Text = "";

            ShapeNode packageNode = shapeList.Items.GetItemAt(2) as ShapeNode;

            packageNode.Name = "packageNode";
            packageNode.Text = "";

            ShapeNode separatorNode = shapeList.Items.GetItemAt(3) as ShapeNode;

            separatorNode.Name = "separatorNode";
            separatorNode.Text = "";

            ShapeNode memberNode = shapeList.Items.GetItemAt(4) as ShapeNode;

            memberNode.Name = "memberNode";
            memberNode.Text = "";

            // remove the text from the nodes, add a label instead (text shows on right)
            NodeListView.SetLabel(classNode, "Class");
            NodeListView.SetLabel(interfaceNode, "Interface");
            NodeListView.SetLabel(packageNode, "Package");
            NodeListView.SetLabel(separatorNode, "Separator");
            NodeListView.SetLabel(memberNode, "Member");
            // testing custom connectors
            // inheritance connector
            var inheritanceShape = new MindFusion.Diagramming.Wpf.Shape(
                null, // no borders
                new[] // decorations
            {
                new LineTemplate(10, 10, 10, 50),
                new LineTemplate(10, 50, 90, 50),
                new LineTemplate(90, 50, 90, 90)
            },
                null,
                FillRule.Nonzero, "InheritanceLink");

            var inheritanceListNode = new ShapeNode {
                Shape = inheritanceShape
            };

            NodeListView.SetLabel(inheritanceListNode, "Inheritance");
            shapeList.Items.Add(inheritanceListNode);

            // Interface realization
            var interfaceShape = new MindFusion.Diagramming.Wpf.Shape(
                null, // no borders
                new[] // decorations
            {
                new LineTemplate(10, 10, 10, 50, Color.FromRgb(0, 0, 0), DashStyles.Dot, 1),
                new LineTemplate(10, 50, 90, 50, Color.FromRgb(0, 0, 0), DashStyles.Dot, 1),
                new LineTemplate(90, 50, 90, 90, Color.FromRgb(0, 0, 0), DashStyles.Dot, 1)
            },
                null,
                FillRule.Nonzero, "InterfaceLink");

            var interfaceListNode = new ShapeNode {
                Shape = interfaceShape
            };

            NodeListView.SetLabel(interfaceListNode, "Interface Realization");
            shapeList.Items.Add(interfaceListNode);
        }