/// <summary>
        /// Initializes the style panel of this demo.
        /// </summary>
        private void InitializeStylesList()
        {
            //Handle list item drawing
            styleListBox.DrawItem += styleListBox_DrawItem;

            // register for the mouse down event to initiate the drag operation
            styleListBox.MouseDown += styleListBox_MouseDown;

            int nodeSize = 30;

            // Create a new Graph in which the palette nodes live
            DefaultGraph nodeContainer = new DefaultGraph();

            // Create some nodes

            nodeContainer.CreateNode(new RectD(20, 20, nodeSize, nodeSize), new ShapeNodeStyle {
                Shape = ShapeNodeShape.Rectangle, Pen = Pens.Black, Brush = Brushes.DarkOrange
            });
            nodeContainer.CreateNode(new RectD(20, 20, nodeSize, nodeSize), new ShapeNodeStyle {
                Shape = ShapeNodeShape.RoundRectangle, Pen = Pens.Black, Brush = Brushes.DarkOrange
            });
            nodeContainer.CreateNode(new RectD(20, 20, nodeSize, nodeSize), new BevelNodeStyle {
                Color = Color.DarkOrange
            });
            nodeContainer.CreateNode(new RectD(20, 20, nodeSize, nodeSize), new ShinyPlateNodeStyle {
                Brush = Brushes.DarkOrange
            });

            INode node = nodeContainer.CreateNode(new RectD(0, 0, 70, 70), new PanelNodeStyle {
                Color = Color.LightBlue, Insets = new InsetsD(0, 15, 0, 0)
            });

            nodeContainer.AddLabel(node, "Group Node", InteriorStretchLabelModel.North);

            var nodeLabelContainer = nodeContainer.CreateNode(new RectD(0, 0, 70, 70), VoidNodeStyle.Instance, "Node Label Container");
            var nodeLabel          = nodeContainer.AddLabel(nodeLabelContainer, "Node Label", InteriorLabelModel.Center);

            var edgeLabelContainer = nodeContainer.CreateNode(new RectD(0, 0, 70, 70), VoidNodeStyle.Instance, "Edge Label Container");
            var edgeLabelTemplate  = nodeContainer.AddLabel(edgeLabelContainer, "Edge Label", FreeNodeLabelModel.Instance.CreateDefaultParameter());

            var portContainer = nodeContainer.CreateNode(new RectD(0, 0, 70, 70), VoidNodeStyle.Instance, "Port Container");

            nodeContainer.AddPort(portContainer, FreeNodePortLocationModel.NodeCenterAnchored, new NodeStylePortStyleAdapter(new ShapeNodeStyle {
                Brush = Brushes.Red, Pen = Pens.Black, Shape = ShapeNodeShape.Ellipse
            })
            {
                RenderSize = new SizeD(10, 10)
            });

            // Add nodes to listview
            foreach (INode n in nodeContainer.Nodes)
            {
                styleListBox.Items.Add(n);
            }
        }
        /// <summary>
        /// Initializes the style panel of this demo.
        /// </summary>
        private void InitializeStylesList()
        {
            int nodeSize = 30;

            // Create a new Graph in which the palette nodes live
            IGraph nodeContainer = new DefaultGraph();

            // Create some nodes

            nodeContainer.CreateNode(new RectD(0, 0, nodeSize, nodeSize), new ShapeNodeStyle {
                Shape = ShapeNodeShape.Rectangle, Pen = Pens.Black, Brush = Brushes.DarkOrange
            });
            nodeContainer.CreateNode(new RectD(0, 0, nodeSize, nodeSize), new ShapeNodeStyle {
                Shape = ShapeNodeShape.RoundRectangle, Pen = Pens.Black, Brush = Brushes.DarkOrange
            });
            nodeContainer.CreateNode(new RectD(0, 0, nodeSize, nodeSize), new BevelNodeStyle {
                Color = Colors.DarkOrange
            });
            nodeContainer.CreateNode(new RectD(0, 0, nodeSize, nodeSize), new ShinyPlateNodeStyle {
                Brush = Brushes.DarkOrange
            });

            INode node = nodeContainer.CreateNode(new RectD(0, 0, 70, 70), new PanelNodeStyle {
                Color = Colors.LightBlue, Insets = new InsetsD(0, 15, 0, 0)
            });

            nodeContainer.AddLabel(node, "Group Node", InteriorStretchLabelModel.North);

            var nodeLabelContainer = nodeContainer.CreateNode(new RectD(0, 0, 70, 70), VoidNodeStyle.Instance, "Node Label Container");
            var nodeLabel          = nodeContainer.AddLabel(nodeLabelContainer, "Node Label", InteriorLabelModel.Center);

            var edgeLabelContainer = nodeContainer.CreateNode(new RectD(0, 0, 70, 70), VoidNodeStyle.Instance, "Edge Label Container");
            var edgeLabelTemplate  = nodeContainer.AddLabel(edgeLabelContainer, "Edge Label", FreeNodeLabelModel.Instance.CreateDefaultParameter());

            // Add nodes to listview
            foreach (INode n in nodeContainer.Nodes)
            {
                styleListBox.Items.Add(n);
            }
        }
Пример #3
0
        /// <summary>
        /// Fill the node list that acts as a source for nodes.
        /// </summary>
        private void PopulateNodesList()
        {
            // Create a new Graph in which the palette nodes live
            // Copy all relevant settings
            IGraph nodeContainer = new DefaultGraph();

            nodeContainer.NodeDefaults.Style = defaultStyle;

            // Create some nodes
            CreateNode(nodeContainer, PointD.Origin, FlowChartType.Start);
            CreateNode(nodeContainer, PointD.Origin, FlowChartType.Operation);
            CreateNode(nodeContainer, PointD.Origin, FlowChartType.Branch);
            CreateNode(nodeContainer, PointD.Origin, FlowChartType.End);

            // Add nodes to listview
            foreach (INode n in nodeContainer.Nodes)
            {
                var type = ((FlowChartNodeStyle)n.Style).FlowChartType;
                nodeContainer.AddLabel(n, type.ToString(), ExteriorLabelModel.South);
                styleListBox.Items.Add(n);
            }
        }
        /// <summary>
        /// Initializes the graph from the supplied GraphML file and creates the model from it.
        /// </summary>
        /// <remarks>
        /// While this reads the graph from a GraphML file and constructs the model from an already-finished graph, a
        /// real-world application would likely create the model from whichever data source is available and then create
        /// the graph from it.
        /// </remarks>
        private void InitGraphAndModel()
        {
            var graph = new DefaultGraph
            {
                NodeDefaults = { Style            = new NodeControlNodeStyle("NodeStyle")
                                 {
                                     OutlineShape = new Ellipse()
                                 } },
                EdgeDefaults = { Style = new EdgeSegmentControlEdgeStyle("EdgeStyle") }
            };
            var ioh = new GraphMLIOHandler();

            // Parse node kinds and other info
            IMapper <INode, NodeKind> nodeKinds = new DictionaryMapper <INode, NodeKind>();
            IMapper <INode, NodeInfo> nodeInfos = new DictionaryMapper <INode, NodeInfo>();

            ioh.AddInputMapper("NetworkMonitoring.NodeKind", nodeKinds);
            ioh.AddInputMapper("NetworkMonitoring.NodeInfo", nodeInfos);

            ioh.Read(graph, @"Resources\network.graphml");

            foreach (var node in graph.Nodes)
            {
                // Create and attach the model node to the graph node.
                var modelNode = new ModelNode
                {
                    Name    = nodeInfos[node].Name,
                    Ip      = nodeInfos[node].Ip,
                    Enabled = true,
                    Kind    = nodeKinds[node]
                };
                node.Tag = modelNode;

                // Add the label
                var label = graph.AddLabel(node, "", FreeLabelModel.Instance.CreateDefaultParameter(), nodeLabelStyle, tag: modelNode);
                // Attach event handler for changing label visibility, so that the graph redraws accordingly.
                // Since visibility can change via clicking on the node *and* from within the label, we have to use an event
                // handler on the model node here.
                modelNode.PropertyChanged += delegate(object sender, PropertyChangedEventArgs args) {
                    if (args.PropertyName == "LabelVisible")
                    {
                        GraphControl.Invalidate();
                    }
                };
            }

            foreach (var edge in graph.Edges)
            {
                // Create and attach the model edge to the graph edge
                var modelEdge = new ModelEdge
                {
                    Source = (ModelNode)edge.GetSourceNode().Tag,
                    Target = (ModelNode)edge.GetTargetNode().Tag
                };
                edge.Tag = modelEdge;

                // Add the edge label
                var label = graph.AddLabel(edge, "", NinePositionsEdgeLabelModel.CenterCentered, edgeLabelStyle, tag: modelEdge);
            }

            // Create the mappings from model items to graph elements.
            modelNodeToINode = graph.Nodes.ToDictionary(node => (ModelNode)node.Tag);
            modelEdgeToIEdge = graph.Edges.ToDictionary(edge => (ModelEdge)edge.Tag);

            model = new NetworkModel(modelNodeToINode.Keys, modelEdgeToIEdge.Keys);
            GraphControl.Graph = graph;
        }