Example #1
0
        protected override void OnMouseUp(MouseEventArgs e)
        {
            base.OnMouseUp(e);
            foreach (var paintObject in EndPaintObjects.Union(BeginPaintObjects))
            {
                if (paintObject.TitleBar.Contains(e.Location))
                {
                    if (ObjectTitleClicked != null)
                    {
                        ObjectTitleClicked(this, new ItemClickedEventArgs(new ChildPosition
                        {
                            Parent = paintObject.Parent
                        }));
                    }
                }
            }

            if (BeginPoint != null && EndPoint != null && BeginPoint.Child != EndPoint.Child)
            {
                if (ConnectChange != null && BeginPoint != EndPoint)
                {
                    ConnectChange(this, new UpdateConnectEventArgs(EndPoint, BeginPoint));
                }
                BeginPoint = null;
                Refresh();
            }
            else
            {
                ChildPosition beginPoint = null;

                foreach (var point in BeginPoints.Union(EndPoints))
                {
                    if (point.IsNearPoint(e.X, e.Y))
                    {
                        if (ItemClicked != null)
                        {
                            beginPoint = point;
                        }
                    }
                }

                if (beginPoint != null)
                {
                    ItemClicked(this, new ItemClickedEventArgs(beginPoint));
                }
            }
        }
Example #2
0
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            if (!DesignMode && EndPaintObjects != null && BeginPaintObjects != null)
            {
                BeginPoints.Clear();
                EndPoints.Clear();
                e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;

                var top           = 40F;
                var beginHeight   = 40F;
                var maxBeginWidth = 0F;
                foreach (var beginObject in BeginPaintObjects)
                {
                    var beginSize = beginObject.Paint(e.Graphics, BeginPoints, EndPoints, 40, top);
                    if (maxBeginWidth < beginSize.Width)
                    {
                        maxBeginWidth = beginSize.Width;
                    }
                    top         += beginSize.Height + 10;
                    beginHeight += beginSize.Height + 10;
                }

                var endHeight    = 40F;
                var controlWidth = maxBeginWidth + 240;
                foreach (var endObject in EndPaintObjects)
                {
                    var endSize = endObject.Paint(e.Graphics, BeginPoints, EndPoints, maxBeginWidth + 240, endHeight);
                    if (controlWidth < maxBeginWidth + 240 + endSize.Width + 10)
                    {
                        controlWidth = maxBeginWidth + 240 + endSize.Width + 10;
                    }
                    endHeight += endSize.Height + 10;
                }
                var controlHeight = Math.Max(endHeight, beginHeight);

                foreach (var beginPoint in BeginPoints)
                {
                    foreach (var endPoint in EndPoints)
                    {
                        var ev = new UpdateConnectEventArgs(beginPoint, endPoint);
                        UpdateConnect(this, ev);
                        if (ev.IsConnect)
                        {
                            e.Graphics.DrawLine(new Pen(ev.ConnectorColor), endPoint.Position, beginPoint.Position);
                        }
                    }
                }

                if (BeginPoint != null)
                {
                    var beginPos = BeginPoint.Position;
                    e.Graphics.DrawEllipse(Pens.Blue, beginPos.X - 5, beginPos.Y - 5, 10, 10);
                    if (EndPoint != null)
                    {
                        var endPos = EndPoint.Position;
                        e.Graphics.DrawEllipse(Pens.Blue, endPos.X - 5, endPos.Y - 5, 10, 10);
                        e.Graphics.DrawLine(Pens.Blue, beginPos.X, beginPos.Y, endPos.X, endPos.Y);
                    }
                    else
                    {
                        e.Graphics.DrawLine(Pens.Blue, beginPos.X, beginPos.Y, EndMousePoint.X, EndMousePoint.Y);
                    }
                }

                Size = new Size(Convert.ToInt32(controlWidth), Convert.ToInt32(controlHeight));
            }
        }
Example #3
0
 private void OnDestroy()
 {
     List.Remove(this);
     BeginPoints.Remove(this);
     FinalPoints.Remove(this);
 }
Example #4
0
 protected virtual void Start()
 {
     List.Add(this);
     BeginPoints.Add(this, startPosition);
     FinalPoints.Add(this, endPosition);
 }