Render() public method

public Render ( System.Windows.Controls.Canvas _parent, System.Windows.Controls.Canvas _childCanvas, double xx, double yy, double padsize, int tagid, string name ) : void
_parent System.Windows.Controls.Canvas
_childCanvas System.Windows.Controls.Canvas
xx double
yy double
padsize double
tagid int
name string
return void
        private void Draw_Universe(string netid)
        {
            string SQL;
            string NodeName;
            int NodeID, FromID, ToID, EdgeID;
            double xx2, yy2, size, xx, yy;
            double px, py;
            int comments;
            Random rnd = new Random();

            Graph oGraph = new Graph(GraphDirectedness.Directed);
            IVertexCollection oVertices = oGraph.Vertices;
            IEdgeCollection oEdges = oGraph.Edges;

            // Nuke the Display
            UniverseBackground.Children.Clear();
            // Add the Whiskers Programmatically
            Add_Whiskers();

            SQL = "select id, nodename,x,y from nodes where networkid = '" + netid + "'";
            OleDbCommand aCommand = new OleDbCommand(SQL, localengine.RepositoryConnection);
            try
            {
                //create the datareader object to connect to table
                OleDbDataReader aReader = aCommand.ExecuteReader();

                //Iterate throuth the database
                while (aReader.Read())
                {
                    NodeID = aReader.GetInt32(0);
                    NodeName = aReader.GetString(1);

                    ListBoxItem li = new ListBoxItem();
                    li.Content = NodeName;
                    li.Tag = NodeID.ToString();
                    NodeList.Items.Add(li);
                    px = (double)aReader.GetInt32(2);
                    py = (double)aReader.GetInt32(3);

                    UniversePadPoint p2 = new UniversePadPoint();

                    p2.PadName = NodeName;
                    xx2 = px;
                    yy2 = py;
                    xx2 = xx2 + 0;
                    yy2 = yy2 + 0;
                    // BUG   p2.WhiskX = XWhisker;
                    // BUG    p2.WhiskY = YWhisker;

                    size = (double)10;
                    p2.SetDrillFeature(DrillDetailLabel, DrillDetailList, localengine.RepositoryConnection);
                    p2.Render(UniverseBackground, FieldBackground, xx2, yy2, size, (int)NodeID, NodeName);

                    Ellipse re = new Ellipse();
                    re.Width = rnd.NextDouble() * 80;
                    re.Height = re.Width;
                    re.Opacity = 0.25;
                    re.Tag = "METRIC";
                    re.Fill = new SolidColorBrush(Colors.Blue);
                    UniverseBackground.Children.Add(re);
                    Canvas.SetLeft(re, xx2 - (re.Width / 2) + 5);
                    Canvas.SetTop(re, yy2 - (re.Width / 2) + 5);


                }
                aReader.Close();
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);

            }

            // Connect the edges
            SQL = "SELECT e.edgeid, e.fromid, n1.x, n1.y, e.toid, n2.x, n2.y ";
            SQL = SQL + "FROM Edges e, Nodes n1, Nodes n2 ";
            SQL = SQL + "where e.networkid = '" + netid + "' and n1.networkid = '" + netid + "' and n2.networkid = '" + netid + "' ";
            SQL = SQL + " and n1.id = e.fromid and n2.id = e.toid "; 
            
            aCommandEdge = new OleDbCommand(SQL, localengine.RepositoryConnection);

            try
            {
                //create the datareader object to connect to table
                aReaderEdge = aCommandEdge.ExecuteReader();

                //Iterate throuth the database
                while (aReaderEdge.Read())
                {
                    EdgeID = aReaderEdge.GetInt32(0);
                    FromID = aReaderEdge.GetInt32(1);
                    ToID = aReaderEdge.GetInt32(4);

                    xx = aReaderEdge.GetInt32(2);
                    yy = aReaderEdge.GetInt32(3);

                    xx2 = aReaderEdge.GetInt32(5);
                    yy2 = aReaderEdge.GetInt32(6);

                    Line l = new Line();
                    l.X1 = xx + 5;
                    l.Y1 = yy + 5;
                    l.X2 = xx2 + 5;
                    l.Y2 = yy2 + 5;
                    l.Tag = "EDGE(" + FromID.ToString() + ":" + ToID.ToString() + ")";
                    l.ToolTip = l.Tag;
                    l.Stroke = new SolidColorBrush(Colors.Gray);
                    UniverseBackground.Children.Add(l);
                                       

                }
                //aReaderEdge.Close();
            }
            catch (Exception eEdgedDraw)
            {
                MessageBox.Show(eEdgedDraw.Message);

            }

              
        }
        private void Build_Universe_Network(string layoutmethod, string netid)
        {
            string SQL;
            string NodeName;
            int NodeID, FromID, ToID, EdgeID;
            double xx2, yy2, size, xx,yy;
            double px, py;
            int comments;
            Random rnd = new Random();

            Graph oGraph = new Graph(GraphDirectedness.Directed);
            IVertexCollection oVertices = oGraph.Vertices;
            IEdgeCollection oEdges = oGraph.Edges;

            // Nuke the Display
            UniverseBackground.Children.Clear();
            // Add the Whiskers Programmatically
            Add_Whiskers();
                                    
            SQL = "select id, nodename,x,y from nodes where networkid = '" + netid + "'";
            OleDbCommand aCommand = new OleDbCommand(SQL, localengine.RepositoryConnection);
            try
            {
                //create the datareader object to connect to table
                OleDbDataReader aReader = aCommand.ExecuteReader();

                //Iterate throuth the database
                while (aReader.Read())
                {
                    NodeID = aReader.GetInt32(0);
                    NodeName = aReader.GetString(1);

                    ListBoxItem li = new ListBoxItem();
                    li.Content = NodeName;
                    li.Tag = NodeID.ToString();
                    NodeList.Items.Add(li); 
                    px = (double)aReader.GetInt32(2);
                    py = (double)aReader.GetInt32(3);
                    
                    

                    IVertex oVertexA = oVertices.Add();
                    oVertexA.Name = NodeName;
                    oVertexA.Tag = NodeID;

                }
                aReader.Close();
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
 
            }

            // Connect the edges
            SQL = "select edgeid, fromid, toid from edges where networkid='" + netid + "'";
            aCommandEdge = new OleDbCommand(SQL, localengine.RepositoryConnection);
            
            try
            {
                //create the datareader object to connect to table
                aReaderEdge = aCommandEdge.ExecuteReader();

                //Iterate throuth the database
                while (aReaderEdge.Read())
                {
                    EdgeID = aReaderEdge.GetInt32(0);
                    FromID = aReaderEdge.GetInt32(1);
                    ToID = aReaderEdge.GetInt32(2);

                    xx = Getx(FromID);
                    yy = Gety(FromID);

                    xx2 = Getx(ToID);
                    yy2 = Gety(ToID);

                    Line l = new Line();
                    l.X1 = xx+5;
                    l.Y1 = yy+5;
                    l.X2 = xx2+5;
                    l.Y2 = yy2+5;
                    l.Tag = "EDGE(" + FromID.ToString() + ":" + ToID.ToString() + ")";
                    l.ToolTip = l.Tag;
                    l.Stroke = new SolidColorBrush(Colors.Gray);
                    UniverseBackground.Children.Add(l);

                    IVertex oFrom=null;
                    IVertex oTo=null;

                    foreach (IVertex oVertex in oVertices)
                    {
                        if (oVertex.Tag.ToString() == FromID.ToString())
                        {
                            oFrom = oVertex;
                        }

                        if (oVertex.Tag.ToString() == ToID.ToString())
                        {
                            oTo = oVertex;

                        }

                         
                    }
                    IEdge oEdge1 = oEdges.Add(oFrom, oTo, true);

                }
                //aReaderEdge.Close();
            }
            catch (Exception eEdge)
            {
                MessageBox.Show(eEdge.Message);

            }

            // Apply Layout 
            // ==================================================================
            
            switch(layoutmethod)
            {
                case "Circular Layout":
                    ILayout oLayout_cir = new CircleLayout();
                    LayoutContext oLayoutContext_cir = new LayoutContext(new System.Drawing.Rectangle(0, 0, 5000, 5000));
                    oLayout_cir.LayOutGraph(oGraph, oLayoutContext_cir);
                break;
                case "Random Layout":
                    ILayout oLayout_rand = new RandomLayout();
                    LayoutContext oLayoutContext_rand = new LayoutContext(new System.Drawing.Rectangle(0, 0, 5000, 5000));
                    oLayout_rand.LayOutGraph(oGraph, oLayoutContext_rand);
                break;
                case "Sugiyama Layout":
                    ILayout oLayout_Sugi = new SugiyamaLayout();
                    LayoutContext oLayoutContext_Sugi = new LayoutContext(new System.Drawing.Rectangle(0, 0, 5000, 5000));
                    oLayout_Sugi.LayOutGraph(oGraph, oLayoutContext_Sugi);
                break;
                case "Grid Layout":
                    ILayout oLayout_grid = new GridLayout();
                    LayoutContext oLayoutContext_grid = new LayoutContext(new System.Drawing.Rectangle(0, 0, 5000, 5000));
                    oLayout_grid.LayOutGraph(oGraph, oLayoutContext_grid);
                break;
                case "Spiral Layout":
                    ILayout oLayout_spiral = new SpiralLayout();
                    LayoutContext oLayoutContext_spiral = new LayoutContext(new System.Drawing.Rectangle(0, 0, 5000, 5000));
                    oLayout_spiral.LayOutGraph(oGraph, oLayoutContext_spiral);
                break;
                case "Fruchterman/Reingold Layout":
                    ILayout oLayout_Fruch = new FruchtermanReingoldLayout();
                    LayoutContext oLayoutContext_Fruch = new LayoutContext(new System.Drawing.Rectangle(0, 0, 5000, 5000));
                    oLayout_Fruch.LayOutGraph(oGraph, oLayoutContext_Fruch);
                break;
                case "Sinusoid H Layout":
                    ILayout oLayout_SinH = new SinusoidHorizontalLayout();
                    LayoutContext oLayoutContext_SinH = new LayoutContext(new System.Drawing.Rectangle(0, 0, 5000, 5000));
                    oLayout_SinH.LayOutGraph(oGraph, oLayoutContext_SinH);
                break;
                case "Sinusoid V Layout":
                    ILayout oLayout_SinV = new SinusoidVerticalLayout();
                    LayoutContext oLayoutContext_SinV = new LayoutContext(new System.Drawing.Rectangle(0, 0, 500, 500));
                    oLayout_SinV.LayOutGraph(oGraph, oLayoutContext_SinV);
                break;

            }
           
            // List the results.
            int xoffset=0;
            int yoffset=0;
            Random rc = new Random();
            Random rx = new Random();
            Random ry = new Random();
            Random coin = new Random();
            foreach (IVertex oVertex in oVertices)
            {
                UniversePadPoint p2 = new UniversePadPoint();

                p2.PadName = oVertex.Name;
                xx2 = oVertex.Location.X;
                yy2 = oVertex.Location.Y;
                xx2 = xx2 + xoffset;
                yy2 = yy2 + yoffset;
            // BUG   p2.WhiskX = XWhisker;
            // BUG    p2.WhiskY = YWhisker;

                size = (double)10;
                p2.Render(UniverseBackground, FieldBackground, xx2, yy2, size, (int)oVertex.Tag, oVertex.Name);

                Ellipse re = new Ellipse();
                re.Width = rnd.NextDouble() * 80;
                re.Height = re.Width;
                re.Opacity = 0.25;
                re.Tag = "METRIC";
                re.Fill = new SolidColorBrush(Colors.Blue);
                UniverseBackground.Children.Add(re);
                Canvas.SetLeft(re, xx2-(re.Width/2)+5);
                Canvas.SetTop(re, yy2 - (re.Width / 2)+5);

                                

            }

            foreach (IEdge e2 in oEdges)
            {
                IVertex f1 = e2.BackVertex;
                IVertex t2 = e2.FrontVertex;
                xx = f1.Location.X;
                yy = f1.Location.Y;
                xx2 = t2.Location.X;
                yy2 = t2.Location.Y;

                xx = xx + xoffset;
                yy = yy + yoffset;
                xx2 = xx2 + xoffset;
                yy2 = yy2 + yoffset;

                Line l = new Line();
                l.X1 = xx + 5;
                l.Y1 = yy + 5;
                l.X2 = xx2 + 5;
                l.Y2 = yy2 + 5;
                l.Tag = "EDGE(" + f1.Tag.ToString() + ":" + t2.Tag.ToString() + ")";
                l.ToolTip = l.Tag;
                l.Stroke = new SolidColorBrush(Colors.Gray);
                UniverseBackground.Children.Add(l);
            }

            

        }