public void DrawRelationship(IRenderer Renderer)
        {
            NodeRelationship rel = TreeView.Relationship;

            if (rel == null)
            {
                return;
            }
            Control sender = ExtractCoreControl(rel.Sender);

            List <Control> receivers = new List <Control>();

            foreach (Block receiver in rel.Receivers)
            {
                receivers.Add(ExtractCoreControl(receiver));
            }

            List <int> Ys = new List <int>();
            List <int> Xs = new List <int>();

            Ys.Add(sender.Bounds.CenterY);
            Xs.Add(sender.Bounds.Right);
            foreach (Control c in receivers)
            {
                Ys.Add(c.Bounds.CenterY);
                Xs.Add(c.Bounds.Right);
            }

            int yMin = 0;
            int yMax = 0;

            FindMinMaxY(Ys, out yMin, out yMax);
            int x = FindMaxWidth() + ArrowRightMargin;

            ILineStyleInfo style;

            if (rel.Direction)
            {
                style = DefaultLineStyle;
            }
            else
            {
                style = DefaultReverseLineStyle;
            }

            IDrawOperations op = Renderer.DrawOperations;

            op.DrawLine(x, yMin, x, yMax, style);
            op.DrawLine(Xs[0] + 2, Ys[0], x, Ys[0], style);

            for (int i = 1; i < Xs.Count; i++)
            {
                op.DrawLine(Xs[i] + 3, Ys[i], x, Ys[i], style);

                if (rel.Direction)
                {
                    DrawArrow(Renderer, Xs[i] + 2, Ys[i]);
                }
                else
                {
                    op.DrawLine(Xs[i] + 3, Ys[i] - 4, Xs[i] + 3, Ys[i] + 4, style);
                }
            }
            if (rel.Direction)
            {
                op.DrawLine(Xs[0] + 1, Ys[0] - 4, Xs[0] + 1, Ys[0] + 4, style);
            }
            else
            {
                DrawArrow(Renderer, Xs[0] + 2, Ys[0]);
            }
        }
Example #2
0
        private void FillOurTreeView()
        {
            #region Old way

            //TreeViewNode t1 = new TreeViewNode("test1");
            //treeViewControl1.Root.Children.Add(t1);

            //TreeViewNode t11 = new TreeViewNode("subtest11");
            //t1.VMembers.Children.Add(t11);

            //TreeViewNode t12 = new TreeViewNode("subtest12");
            //t1.VMembers.Children.Add(t12);

            //TreeViewNode t2 = new TreeViewNode("test2");
            //treeViewControl1.Root.Children.Add(t2);
            //t2.MyNodeControl.TreeLineStyle = RedLineStyle;

            //TreeViewNode t21 = new TreeViewNode("subtest21");
            //t2.VMembers.Children.Add(t21);

            //TreeViewNode t22 = new TreeViewNode("subtest22");
            //t2.VMembers.Children.Add(t22);
            ////t21.VMembers.Children.Add(new SampleRootBlock());

            //TreeViewNode t211 = new TreeViewNode("subtest211");
            //t21.VMembers.Children.Add(t211);
            //// t21.HMembers.Children.Add(new ButtonBlock("Hello"));

            #endregion

            #region New way

            TreeViewNode t1 = treeViewControl1.AddNode("test1");
            TreeViewNode t11 = t1.AddNode("subtest11");
            TreeViewNode t12 = t1.AddNode("subtest12");
            TreeViewNode t2 = treeViewControl1.AddNode("test2");
            TreeViewNode t21 = t2.AddNode("subtest21");
            TreeViewNode t211 = t21.AddNode("subtest211");
            TreeViewNode t22 = t2.AddNode("subtest22");

            #endregion

            NodeRelationship r = new NodeRelationship();
            r.Sender = t11;
            r.Receivers = new List<Block>();
            r.Receivers.Add(t22);
            r.Receivers.Add(t21);

            treeViewControl1.Root.Relationship = r;
        }