Exemplo n.º 1
0
        private Shape CreateShapeFrom(IActiveRecordDescriptor descriptor)
        {
            Shape shape = null;

            if (descriptor is ActiveRecordBaseDescriptor)
            {
                ActiveRecordBaseClassShape arshape = (ActiveRecordBaseClassShape)
                                                     graphControl1.AddShape("castle.ar.base.shape", new PointF(80, 20));
                arshape.RelatedDescriptor = descriptor as ActiveRecordBaseDescriptor;

                arshape.FitSize(false);

                shape = arshape;
            }
            else
            {
                ActiveRecordShape arshape = (ActiveRecordShape)
                                            graphControl1.AddShape("castle.ar.shape", new PointF(30, 20));

                arshape.ActiveRecordDescriptor = (ActiveRecordDescriptor)descriptor;

                shape = arshape;
            }

            System.Diagnostics.Debug.Assert(shape != null);

            shape.X = descriptor.PositionInView.X;
            shape.Y = descriptor.PositionInView.Y;

            _desc2Shape[descriptor] = shape;

            return(shape);
        }
Exemplo n.º 2
0
        private Shape addNullShape(Netron.GraphLib.UI.GraphControl graphControl1, int onRight)
        {
            Shape nullNode = graphControl1.AddShape("smallCircleNode", "null",
                                                    new PointF(graphControl1.Width * onRight, graphControl1.Height / 2));

            nullNode.ShapeColor = Color.White;
            nullNode.ZOrder     = 10;
            return(nullNode);
        }
        public MainForm()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            AppDomain currentDomain = AppDomain.CurrentDomain;

            AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);

            AppDomain app = AppDomain.CreateDomain("minddump", new Evidence(currentDomain.Evidence), appPath, null, false);

//			app.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);

            object remoteInstance = null;

            try
            {
                remoteInstance = app.CreateInstanceAndUnwrap(
                    "Castle.Applications.MindDump", "Castle.Applications.MindDump.MindDumpContainer");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.StackTrace);
            }

            IKernel kernel = null;

            if (remoteInstance is IWindsorContainer)
            {
                kernel = (remoteInstance as IWindsorContainer).Kernel;
            }
            else
            {
                kernel = (remoteInstance as IKernel);
            }

            graphControl1.AddLibrary("BasicShapes.dll");
            graphControl1.AddLibrary("Castle.Goodies.Viewer.exe");

            stamper1.GraphControl = graphControl1;

            graphControl1.AllowAddShape = false;

            if (kernel == null)
            {
                return;
            }

            GraphNode[] nodes = kernel.GraphNodes;

            Hashtable node2Shape = new Hashtable();

            foreach (ComponentModel node in nodes)
            {
                ComponentNode shape = (ComponentNode)
                                      graphControl1.AddShape("castle.comp.node", new PointF(80, 20));

                shape.Key            = node.Name;
                shape.Text           = GetPossibleNullName(node.Service);
                shape.Implementation = GetPossibleNullName(node.Implementation);

                shape.Tag        = node;
                node2Shape[node] = shape;
                SetShape(shape);
            }

            foreach (ComponentModel node in nodes)
            {
                Shape parentShape = node2Shape[node] as Shape;

                foreach (ComponentModel dep in node.Adjacencies)
                {
                    Shape childShape = node2Shape[dep] as Shape;
                    Connect(parentShape, childShape);
                }
            }
        }
Exemplo n.º 4
0
        public void initializeGraphControl(Netron.GraphLib.UI.GraphControl graphControl1,
                                           Label globalLabelsText)
        {
            Random rnd = new Random();

            #region display the nodes
            for (int i = nodes.Count - 1; i >= 0; i--)
            {
                node n = nodes[i];
                if (n.screenX == 0.0 && n.screenY == 0.0)
                {
                    n.screenX = rnd.Next(50, graphControl1.Width - 100);
                    n.screenY = rnd.Next(20, graphControl1.Height - 20);
                }
                List <string> shapeData = StringCollectionConverter.convert(n.shapekey);
                if (shapeData.Count == 0)
                {
                    shapeData.Add("");
                }
                n.displayShape = graphControl1.AddShape(shapeData[0], new PointF(n.screenX, n.screenY));
                if (shapeData.Count > 1)
                {
                    n.displayShape.ShapeColor = Color.FromArgb(int.Parse(shapeData[1]));
                    n.displayShape.Width      = float.Parse(shapeData[2]);
                    n.displayShape.Height     = float.Parse(shapeData[3]);
                }
            }
            #endregion
            #region display the arcs
            foreach (arc a in arcs)
            {
                node fromNode = a.From;
                node toNode   = a.To;

                Connector fromConnect = null;
                Connector toConnect   = null;
                if ((fromNode == null) || (fromNode.displayShape == null))
                {
                    a.fromConnector = 0;
                    fromConnect     = addNullShape(graphControl1, 0).Connectors[0];
                }
                else if ((a.fromConnector == -1) ||
                         (a.fromConnector >= fromNode.displayShape.Connectors.Count))
                {
                    a.fromConnector = rnd.Next(fromNode.displayShape.Connectors.Count);
                    fromConnect     = fromNode.displayShape.Connectors[a.fromConnector];
                }
                else
                {
                    fromConnect = fromNode.displayShape.Connectors[a.fromConnector];
                }
                /* now repeat same process for To */
                if ((toNode == null) || (toNode.displayShape == null))
                {
                    a.toConnector = 0;
                    toConnect     = addNullShape(graphControl1, 1).Connectors[0];
                }
                else if ((a.toConnector == -1) ||
                         (a.toConnector >= toNode.displayShape.Connectors.Count))
                {
                    a.toConnector = rnd.Next(toNode.displayShape.Connectors.Count);
                    toConnect     = toNode.displayShape.Connectors[a.toConnector];
                }
                else
                {
                    toConnect = toNode.displayShape.Connectors[a.toConnector];
                }

                a.displayShape           = graphControl1.AddConnection(fromConnect, toConnect);
                a.displayShape.ShowLabel = true;

                List <string> styleData = StringCollectionConverter.convert(a.styleKey);
                if (styleData.Count > 0)
                {
                    a.displayShape.LinePath = styleData[0];
                }
                if (styleData.Count > 1)
                {
                    a.displayShape.LineColor  = Color.FromArgb(int.Parse(styleData[1]));
                    a.displayShape.LineWeight = (ConnectionWeight)int.Parse(styleData[2]);
                    a.displayShape.LineStyle  = (System.Drawing.Drawing2D.DashStyle) int.Parse(styleData[3]);
                }
            }
            #endregion
            this.updateGraphControl(graphControl1, globalLabelsText);
        }
Exemplo n.º 5
0
        public void updateGraphControl(Netron.GraphLib.UI.GraphControl graphControl1,
                                       Label globalLabelsText)
        {
            try
            {
                string  defaultShapeKey = "8ED1469D-90B2-43ab-B000-4FF5C682F530";
                Boolean isFixed         = true;
                Random  rnd             = new Random();

                #region Global Labels
                if (this.globalLabels.Count > 0)
                {
                    globalLabelsText.Text = StringCollectionConverter.convert(this.globalLabels);
                }
                else
                {
                    globalLabelsText.Text = " ";
                }
                #endregion
                #region display the nodes
                for (int i = nodes.Count - 1; i >= 0; i--)
                {
                    node n = nodes[i];
                    #region if it has no displayShape
                    if (n.displayShape == null)
                    {
                        if (n.shapekey == null)
                        {
                            n.shapekey = defaultShapeKey;
                        }
                        if (n.screenX == 0.0 && n.screenY == 0.0)
                        {
                            n.screenX = rnd.Next(50, graphControl1.Width - 100);
                            n.screenY = rnd.Next(20, graphControl1.Height - 20);
                            isFixed   = false;
                        }
                        else
                        {
                            isFixed = true;
                        }
                        n.displayShape = graphControl1.AddShape(n.shapekey, new PointF(n.screenX, n.screenY));

                        /* if the prev. statement didn't take, it's likely the shapekey wasn't recognized.
                         * there we try again with the default ShapeKey. */
                        if (n.displayShape == null)
                        {
                            n.displayShape = graphControl1.AddShape(defaultShapeKey, new PointF(n.screenX, n.screenY));
                        }
                    }
                    #endregion

                    else if (!graphControl1.Shapes.Contains(n.displayShape))
                    {
                        /* a shape is defined for the node but is not displayed */
                        n.displayShape = graphControl1.AddShape(n.displayShape);
                    }
                    n.displayShape.Text    = textForNode(n);
                    n.displayShape.IsFixed = isFixed;

                    /* make sure node is of right type - if not call the replacement function */
                    if ((n.nodeType != null) && (n.GetType() != typeof(GraphSynth.Representation.ruleNode)) &&
                        (n.GetType() != n.nodeType))
                    {
                        replaceNodeWithInheritedType(n);
                    }
                }
                #endregion
                #region display the arcs
                for (int i = arcs.Count - 1; i >= 0; i--)
                {
                    arc  a        = arcs[i];
                    node fromNode = a.From;
                    node toNode   = a.To;

                    Connector fromConnect = null;
                    Connector toConnect   = null;
                    if ((fromNode == null) || (fromNode.displayShape == null))
                    {
                        a.fromConnector = 0;
                        if (a.displayShape == null || a.displayShape.From.BelongsTo == null)
                        {
                            fromConnect = addNullShape(graphControl1, 0).Connectors[0];
                        }
                        else
                        {
                            fromConnect = a.displayShape.From;
                        }
                    }
                    else if ((a.fromConnector == -1) ||
                             (a.fromConnector >= fromNode.displayShape.Connectors.Count))
                    {
                        a.fromConnector = rnd.Next(fromNode.displayShape.Connectors.Count);
                        fromConnect     = fromNode.displayShape.Connectors[a.fromConnector];
                    }
                    else
                    {
                        fromConnect = fromNode.displayShape.Connectors[a.fromConnector];
                    }
                    /* now repeat same process for To */
                    if ((toNode == null) || (toNode.displayShape == null))
                    {
                        a.toConnector = 0;
                        if (a.displayShape == null || a.displayShape.To.BelongsTo == null)
                        {
                            toConnect = addNullShape(graphControl1, 1).Connectors[0];
                        }
                        else
                        {
                            toConnect = a.displayShape.To;
                        }
                    }
                    else if ((a.toConnector == -1) ||
                             (a.toConnector >= toNode.displayShape.Connectors.Count))
                    {
                        a.toConnector = rnd.Next(toNode.displayShape.Connectors.Count);
                        toConnect     = toNode.displayShape.Connectors[a.toConnector];
                    }
                    else
                    {
                        toConnect = toNode.displayShape.Connectors[a.toConnector];
                    }

                    if (((a.displayShape != null) && (!graphControl1.Connections.Contains(a.displayShape)) &&
                         ((a.displayShape.From == null) || (a.displayShape.To == null))) ||
                        ((a.displayShape == null) && (fromConnect == null) && (toConnect == null)))
                    {
                        removeArc(a);
                    }
                    else
                    {
                        if (a.displayShape == null)
                        {
                            a.displayShape = graphControl1.AddConnection(fromConnect, toConnect);
                        }
                        else if (!graphControl1.Connections.Contains(a.displayShape))
                        {
                            a.displayShape = graphControl1.AddConnection(a.displayShape.From, a.displayShape.To);
                        }

                        /* a shape is defined for the node but is not displayed
                         * Rectangular, Default, Bezier */
                        if (a.curveStyle != null)
                        {
                            a.displayShape.LinePath = a.curveStyle;
                        }
                        if (a.doublyDirected)
                        {
                            a.displayShape.LineEnd = ConnectionEnd.BothFilledArrow;
                        }
                        else if (a.directed)
                        {
                            a.displayShape.LineEnd = ConnectionEnd.RightFilledArrow;
                        }
                        else
                        {
                            a.displayShape.LineEnd = ConnectionEnd.NoEnds;
                        }
                        a.displayShape.Text      = textForArc(a);
                        a.displayShape.ShowLabel = true;
                    }

                    /* make sure node is of right type - if not call the replacement function */
                    if ((a.arcType != null) && (a.GetType() != typeof(GraphSynth.Representation.ruleArc)) &&
                        (a.GetType() != a.arcType))
                    {
                        replaceArcWithInheritedType(a, fromNode, toNode);
                    }
                }
                #endregion
            }
            catch (Exception e)
            {
                MessageBox.Show("There was an error displaying the graph. Please save work and re-open. (Error: " + e.ToString() + ")", "Error Displaying Graph", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }