public Segment Add(DrawingElement el, Position p)
        {
            Remove(p);

            var seg = Segments.FirstOrDefault (s => s.Position == p);
            if (seg != null) {
                seg.AddPrimitives (el.Primitives);
            } else {
                seg = new Segment (p, el.Primitives, this) { IsPalette = IsPalette };
                Segments.Add (seg);
            }
            seg.Type = el.Type;
            CalculateSize ();

            //join latch

            if(el.Primitives.Any(pr => pr is LineElement && ((pr as LineElement).End.Y > 1)))
            {
                var pos2 = new Position (seg.Position.X, seg.Position.Y + 1);
                var seg2 = Segments.FirstOrDefault (s => s.Position == pos2);
                if (seg2 != null)
                {
                    seg2.Join.Add (seg);
                    seg.Join.Add (seg2);

                    var conR = el
                        .Primitives
                        .Where (p1 => p1 is Connector)
                        .Cast<Connector> ()
                        .Where (c => c.Center.Y > 1);

                    seg2.Connectors.AddRange (conR);

                    if (seg.Selected) {
                        seg2.Selected = true;
                    }
                }
            }

            return seg;
        }
 public override void Remove(DrawingElement c)
 {
     Console.WriteLine("Cannot remove from a PrimitiveElement");
 }
Example #3
0
 public abstract void Remove(DrawingElement d);
Example #4
0
 public abstract void Add(DrawingElement d);
 public override void Remove(DrawingElement d)
 {
     _elements.Remove(d);
 }
 public void Detach(DrawingElement employee)
 {
     _elements.Remove(employee);
 }
 public override void Add(DrawingElement c)
 {
     Console.WriteLine("Cannot add to a PrimitiveElement");
 }
 public abstract void Add(DrawingElement d);
Example #9
0
        public LayoutDrawing(
            IDebugDrawing drawing,
            DrawingElement page,
            DebugLayout debugLayout,
            int headingLevel,
            bool showButtons)
            : base(
                page,
                "Layout '" + debugLayout.Name + "'",
                headingLevel)
        {
            LeftMargin   = 15f;
            RightMargin  = 15f;
            TopMargin    = 15f;
            BottomMargin = 15f;

            ChildSpacing = 15f;

            CssClass = "layout";

            var details = new List <string>();

            AddDebugInfo(details, debugLayout);

            if (details.Count > 0)
            {
                if (showButtons)
                {
                    AddDetails(details, AddHeaderButton(page, "Detail"));
                }
                else
                {
                    AddDetails(details, this);
                }
            }

            if (showButtons && !ReferenceEquals(debugLayout.Element, null))
            {
                var elementDebugInfo = debugLayout.Element.GetDebugInfo <DebugLayout>();
                if (elementDebugInfo != null)
                {
                    AddHeaderButton(page, "Definition")
                    .AddChild(new LayoutDrawing(
                                  drawing,
                                  page,
                                  elementDebugInfo,
                                  headingLevel + 1,
                                  false));
                }
            }

            if (debugLayout.Children != null)
            {
                foreach (var debugRegion in debugLayout.Children)
                {
                    AddChild(new LayoutRegionDrawing(
                                 drawing,
                                 page,
                                 debugRegion as DebugLayoutRegion,
                                 headingLevel,
                                 showButtons));
                }
            }
        }
 /// <inheritdoc />
 public DrawingElement TryBlend(DrawingElement under, DrawingElement over)
 {
     return(_innerDrawingElementBlender.TryBlend(under, over) ?? _innerDrawingElementBlender.TryBlend(over, under));
 }
        public RegionDrawing(
            IDebugDrawing drawing,
            DrawingElement page,
            DebugRegion debugRegion,
            int headingLevel,
            bool showButtons)
            : base(
                page,
                "zone '" + debugRegion.Name + "'",
                headingLevel)
        {
            CssClass = "region";

            string repeat = null;

            if (!ReferenceEquals(debugRegion.RepeatType, null))
            {
                repeat = debugRegion.RepeatType.DisplayName(TypeExtensions.NamespaceOption.None);

                if (!string.IsNullOrEmpty(debugRegion.RepeatScope))
                {
                    repeat = "'" + debugRegion.RepeatScope + "' " + repeat;
                }

                if (!string.IsNullOrEmpty(debugRegion.ListScope))
                {
                    repeat += " from a list in '" + debugRegion.ListScope + "' scope";
                }

                repeat = "Repeat for each " + repeat;

                if (showButtons)
                {
                    AddChild(new TextDrawing {
                        Text = new[] { repeat }
                    });
                }
            }

            var details = new List <string>();

            if (!string.IsNullOrEmpty(repeat))
            {
                details.Add(repeat);
            }
            AddDebugInfo(details, debugRegion);

            if (details.Count > 0)
            {
                if (showButtons)
                {
                    AddDetails(details, AddHeaderButton(page, "Detail"));
                }
                else
                {
                    AddDetails(details, this);
                }
            }

            if (!ReferenceEquals(debugRegion.Scope, null) && debugRegion.Scope.HasData())
            {
                var dataScopeDrawing = new DataScopeRulesDrawing(
                    drawing,
                    page,
                    debugRegion.Scope,
                    headingLevel + 1,
                    false,
                    0);

                if (showButtons)
                {
                    AddHeaderButton(page, "Scope").AddChild(dataScopeDrawing);
                }
                else
                {
                    AddChild(dataScopeDrawing);
                }
            }

            if (!ReferenceEquals(debugRegion.DataContext, null) && debugRegion.DataContext.HasData())
            {
                var dataScopeDrawing = new DataScopeRulesDrawing(
                    drawing,
                    page,
                    debugRegion.DataContext,
                    headingLevel + 1,
                    false,
                    0);

                if (showButtons)
                {
                    AddHeaderButton(page, "Context").AddChild(dataScopeDrawing);
                }
                else
                {
                    AddChild(dataScopeDrawing);
                }
            }

            if (showButtons && !ReferenceEquals(debugRegion.Element, null))
            {
                var elementDebugInfo = debugRegion.Element.GetDebugInfo <DebugRegion>();
                if (elementDebugInfo != null && elementDebugInfo.HasData())
                {
                    AddHeaderButton(page, "Definition")
                    .AddChild(new RegionDrawing(
                                  drawing,
                                  page,
                                  elementDebugInfo,
                                  headingLevel + 1,
                                  false));
                }
            }

            if (debugRegion.Children != null &&
                debugRegion.Children.Count > 0 &&
                debugRegion.Children[0] != null &&
                debugRegion.Children[0].HasData())
            {
                var content = drawing.DrawDebugInfo(page, debugRegion.Children[0], headingLevel, showButtons);
                AddChild(content);
            }
        }
 /// <inheritdoc />
 public DrawingElement TryBlend(DrawingElement under, DrawingElement over)
 {
     return(_blenders.Select(b => b.TryBlend(under, over)).FirstOrDefault(e => !(e is null)));
 }
Example #13
0
 public NodeStats(DrawingElement drawing)
 {
     ChildSpacing = 30f;
 }
Example #14
0
 public CharacterDrawingElement(int column, int row, DrawingElement drawingElement)
 {
     Column         = column;
     Row            = row;
     DrawingElement = drawingElement;
 }
Example #15
0
        public NodeTile(
            DrawingElement drawing,
            string title,
            string cssClass,
            bool disabled,
            int headingLevel = 2,
            string label     = null)
            : base(drawing, cssClass, disabled)
        {
            AddChild(new SpacerDrawing(15, 20));

            Header = new HorizontalListDrawing
            {
                LeftMargin    = 0,
                RightMargin   = 0,
                TopMargin     = 0,
                BottomMargin  = 0,
                Left          = 0,
                Top           = 0,
                FixedPosition = true,
                CssClass      = CssClass
            };
            AddChild(Header);

            if (!string.IsNullOrWhiteSpace(label))
            {
                Label = new RectangleDrawing
                {
                    CssClass     = disabled ? "disabled label" : "label",
                    CornerRadius = CornerRadius,
                    LeftMargin   = 3,
                    TopMargin    = 3,
                    BottomMargin = 2,
                    RightMargin  = 2,
                    Width        = 18,
                    Height       = 22,
                    FixedSize    = true,
                };

                LabelText = new TextDrawing
                {
                    Text     = new[] { label },
                    CssClass = disabled ? "disabled label" : "label"
                };

                if (headingLevel == 3)
                {
                    Label.Width        = 14;
                    Label.Height       = 16;
                    Label.TopMargin    = 3;
                    Label.LeftMargin   = 2;
                    LabelText.TextSize = 9f / 12f;
                }

                Label.AddChild(LabelText);
                Header.AddChild(Label);
            }
            else
            {
                Header.AddChild(new SpacerDrawing(1, 1));
            }

            Title = new TextDrawing
            {
                Text = new[] { title }
            }
            .HeadingLevel(headingLevel);

            if (disabled)
            {
                Title.CssClass = "disabled " + Title.CssClass;
            }

            Header.AddChild(Title);
        }
 public override void Add(DrawingElement d)
 {
     elements.Add(d);
 }
 public override void Remove(DrawingElement d)
 {
     elements.Remove(d);
 }
Example #18
0
 public override void Add(DrawingElement c)
 {
     Console.WriteLine(
         "Cannot add to a PrimitiveElement");
 }
 public abstract void Remove(DrawingElement d);
Example #20
0
 public override void Remove(DrawingElement c)
 {
     Console.WriteLine(
         "Cannot remove from a PrimitiveElement");
 }
 public override void Add(DrawingElement d)
 {
     _elements.Add(d);
 }
 public void Attach(DrawingElement employee)
 {
     _elements.Add(employee);
 }